For i = 1 To maTable.Rows.Length 'как можно по другому вставить эти данные на лист?'
For j = 1 To maTable.Rows(i - 1).Cells.Length
If Application.Calculation = xlCalculationAutomatic Then
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
End If
Worksheets("table").Cells(i, j) = maTable.Rows(i - 1).Cells(j - 1).innerText
Next j
Next i
Sub zzz()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For i = 1 To 10000
For j = 1 To 20
If Application.Calculation = xlCalculationAutomatic Then
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
End If
Worksheets("Лист1").Cells(i, j) = 4
Next j
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Всем здрасти. Есть код c циклом по вставке данных по ячейкам.
Код
Sub zzz()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For i = 1 To 10000
For j = 1 To 20
Worksheets("Лист1").Cells(i, j) = 4
Next j
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Проблема в том что во время работы данного цикла в книге могут происходить еще некоторые действия в которых присутствует: Application.Calculation = xlCalculationAutomatic, и тогда капец. Можно ли перед циклом запретить любые действия или в самом цикле проверять режим вычисления?
Код
Sub zzz()
For i = 1 To 10000
For j = 1 To 20
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Worksheets("Лист1").Cells(i, j) = 4
Next j
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
vokilook,Здравствуйте. Копирую строку выше, нажимаю кнопку Вставить. Пишет нет данных. "Задача вставить из буфера обмена в одну строку только цифры и без форматирования" По ссылке сходил, почитал, спасибо.
Привет всем. Задача вставить из буфера обмена в одну строку только цифры и без форматирования. пока что вот так:
Код
Sub Вставить()
On Error GoTo 3
Range("$C$3").Select
ActiveSheet.PasteSpecial Link:=False, DisplayAsIcon:= _
False, NoHTMLFormatting:=True
Range("$C$3").Select
Exit Sub
3
MsgBox "Нет данных"
End Sub
Не получается: 1- проверить данные на "только цифры" 2- вставлять только в одну строку C3:S3
Подскажите, возможно ли сделать вот такой веб запрос с помощью Power Query. Этот вопрос уже разбирал в далёком 2012 году, спасибо большое egonomist, всё работает по сей день. Но хотелось бы попробовать в Power Query.
Есть страница html "1 параметры для хим" с которой делается запрос данных, на которой необходимо выбрать: Выбор:поробы, Интервал проб: Все (то есть от 1 до 100) , Временной интервал: лучше форму с выбором даты (либо просто Сегодня), Фильтр по марке: Все. Прикрепил архив ,там два html файла, первый ,это страница для ввода "1 параметры для хим", а вторая это куда нужно попасть "2 xim[1]/cgi-bin/xim.cgi".Это локалка туда не попасть ,только с работы.
Андрей VG, Нужно чтоб книгу не сохраняли, но мог я ее сохранить. Интерфейс скрыт все запаролено. Создал кнопку с вводом пароля на сохранение, перед сохранением скрываются все листы кроме одного, потом Application.CommandBars.FindControl(ID:=1605).Execute и сохранить. При запуске книги при включенных макросах нужные листы становятся видимыми.
Опять не работает Пробовал вот так с задержкой Application.Wait Now + TimeSerial(0, 0, 1) в замен DoEvents Может у кого есть какие мысли? Или смирится с ошибкой и во время выполнения макроса не чего не нажимать.
Код
Sub макрос1()
On Error GoTo 1' Если убрать On Error GoTo, то макрос просто останавливается не выдавая не каких ошибок
Application.EnableCancelKey = xlDisabled
dt1 = Now
dt2 = Now + 1
obnov = 10
s = ("http://100.20.29.225")' Страница ввода данных
UserForm2.WebBrowser1.Navigate (s)
Do While UserForm2.WebBrowser1.busy Or (UserForm2.WebBrowser1.ReadyState <> 4): DoEvents: Loop
'Вводим данные и расставляем чек боксы
v_pr1 = v_prob1
v_pr2 = v_prob2
v_D1 = Format(CDate(dt1), "dd/mm/yyyy")
v_D2 = Format(CDate(dt2), "dd/mm/yyyy")
v_N1 = Plavka1
v_N2 = Plavka2
UserForm2.WebBrowser1.Document.forms(0).elements(0).Checked = True
UserForm2.WebBrowser1.Document.forms(0).elements(13).Checked = True
UserForm2.WebBrowser1.Document.forms(0).elements(2).Value = v_pr1
UserForm2.WebBrowser1.Document.forms(0).elements(3).Value = v_pr2
UserForm2.WebBrowser1.Document.forms(0).elements(14).Value = v_D1
UserForm2.WebBrowser1.Document.forms(0).elements(15).Value = v_D2
UserForm2.WebBrowser1.Document.forms(0).elements(16).Value = v_N1
UserForm2.WebBrowser1.Document.forms(0).elements(17).Value = v_N2
UserForm2.WebBrowser1.Document.forms(0).elements(19).Checked = True
'''DoEvents
Application.Wait Now + TimeSerial(0, 0, 5)
UserForm2.WebBrowser1.Document.forms(0).submit' Нажимаем кнопку "Выбор" на странице и переходим в таблицу Хим анализа
Application.Wait Now + TimeSerial(0, 0, 5)
'''DoEvents' Если убрать, то на лист excel приходят данные со страницы выбора параметров
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Do While UserForm2.WebBrowser1.busy Or (UserForm2.WebBrowser1.ReadyState <> 4): DoEvents: Loop
Set maPageHtml = UserForm2.WebBrowser1.Document
Set Htable = maPageHtml.getElementsByTagName("table")
Set maTable = Htable(1) ' the first table
Workbooks("книга1.xlsb").Worksheets("table").Cells.ClearContents 'удаляем все предыдущие записи на листе table
'запускаем цикл по всем ячейкам - последовательно заносим их на лист
For i = 1 To maTable.Rows.Length
For J = 1 To maTable.Rows(i - 1).Cells.Length
Workbooks("книга1.xlsb").Worksheets("table").Cells(i, J) = maTable.Rows(i - 1).Cells(J - 1).innerText
Next J
Next i
Set maPageHtml = Nothing
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
If Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$y$30") = "2" Then ' если появилась новая
Workbooks("книга1.xlsb").Activate
Call Звук
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Workbooks("книга1.xlsb").Worksheets("Лист2").Range("$g$17") = "3"
Workbooks("книга1.xlsb").Worksheets("Лист2").Range("$g$16") = "1"
Workbooks("книга1.xlsb").Sheets("Лист2").Range("$l$3") = dt1
Workbooks("книга1.xlsb").Sheets("Лист2").Range("$m$3") = dt2
Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$b$7") = Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$g$7")
Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$c$7") = Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$h$7")
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
poiskPR = Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$t$28")
MsgBox "Плавка №: " & Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$j$4") & " Проба №: " & Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$K$4"), vbSystemModal
Else
If Workbooks("книга1.xlsb").Worksheets("Лист2").Range("$g$16") = "5" Then
obnov = 10
Application.OnTime Now + TimeValue("00:00:" & obnov & ""), "Module1.Макрос1"
End If
End If
Exit Sub
1
Workbooks("книга1.xlsb").Activate
Call Звук2
If MsgBox("Неполадки с сетью. Продолжить обработку?", vbYesNo) = vbYes Then
Call макрос1
Else
Workbooks("книга1.xlsb").Worksheets("Лист2").Range("$g$17") = "3"
Workbooks("книга1.xlsb").Worksheets("Лист2").Range("$g$16") = "1"
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End If
End Sub
Проверил на работе, не работает без DoEvents. Приходят данные в excel со страницы выбора параметров ( страница "s" ) Может кто подскажет чем заменить DoEvents, может паузу поставить?
Код
Sub макрос1()
On Error GoTo 1' Если убрать On Error GoTo, то макрос просто останавливается не выдавая не каких ошибок
Application.EnableCancelKey = xlDisabled
dt1 = Now
dt2 = Now + 1
obnov = 10
s = ("http://100.20.29.225")' Страница ввода данных
UserForm2.WebBrowser1.Navigate (s)
Do While UserForm2.WebBrowser1.busy Or (UserForm2.WebBrowser1.ReadyState <> 4): DoEvents: Loop
'Вводим данные и расставляем чек боксы
v_pr1 = v_prob1
v_pr2 = v_prob2
v_D1 = Format(CDate(dt1), "dd/mm/yyyy")
v_D2 = Format(CDate(dt2), "dd/mm/yyyy")
v_N1 = Plavka1
v_N2 = Plavka2
UserForm2.WebBrowser1.Document.forms(0).elements(0).Checked = True
UserForm2.WebBrowser1.Document.forms(0).elements(13).Checked = True
UserForm2.WebBrowser1.Document.forms(0).elements(2).Value = v_pr1
UserForm2.WebBrowser1.Document.forms(0).elements(3).Value = v_pr2
UserForm2.WebBrowser1.Document.forms(0).elements(14).Value = v_D1
UserForm2.WebBrowser1.Document.forms(0).elements(15).Value = v_D2
UserForm2.WebBrowser1.Document.forms(0).elements(16).Value = v_N1
UserForm2.WebBrowser1.Document.forms(0).elements(17).Value = v_N2
UserForm2.WebBrowser1.Document.forms(0).elements(19).Checked = True
DoEvents
UserForm2.WebBrowser1.Document.forms(0).submit' Нажимаем кнопку "Выбор" на странице и переходим в таблицу Хим анализа
DoEvents' Если убрать, то на лист excel приходят данные со страницы выбора параметров
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Do While UserForm2.WebBrowser1.busy Or (UserForm2.WebBrowser1.ReadyState <> 4): DoEvents: Loop
Set maPageHtml = UserForm2.WebBrowser1.Document
Set Htable = maPageHtml.getElementsByTagName("table")
Set maTable = Htable(1) ' the first table
Workbooks("книга1.xlsb").Worksheets("table").Cells.ClearContents 'удаляем все предыдущие записи на листе table
'запускаем цикл по всем ячейкам - последовательно заносим их на лист
For i = 1 To maTable.Rows.Length
For J = 1 To maTable.Rows(i - 1).Cells.Length
Workbooks("книга1.xlsb").Worksheets("table").Cells(i, J) = maTable.Rows(i - 1).Cells(J - 1).innerText
Next J
Next i
Set maPageHtml = Nothing
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
If Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$y$30") = "2" Then ' если появилась новая
Workbooks("книга1.xlsb").Activate
Call Звук
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Workbooks("книга1.xlsb").Worksheets("Лист2").Range("$g$17") = "3"
Workbooks("книга1.xlsb").Worksheets("Лист2").Range("$g$16") = "1"
Workbooks("книга1.xlsb").Sheets("Лист2").Range("$l$3") = dt1
Workbooks("книга1.xlsb").Sheets("Лист2").Range("$m$3") = dt2
Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$b$7") = Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$g$7")
Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$c$7") = Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$h$7")
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
poiskPR = Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$t$28")
MsgBox "Плавка №: " & Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$j$4") & " Проба №: " & Workbooks("книга1.xlsb").Worksheets("Лист6").Range("$K$4"), vbSystemModal
Else
If Workbooks("книга1.xlsb").Worksheets("Лист2").Range("$g$16") = "5" Then
obnov = 10
Application.OnTime Now + TimeValue("00:00:" & obnov & ""), "Module1.Макрос1"
End If
End If
Exit Sub
1
Workbooks("книга1.xlsb").Activate
Call Звук2
If MsgBox("Неполадки с сетью. Продолжить обработку?", vbYesNo) = vbYes Then
Call макрос1
Else
Workbooks("книга1.xlsb").Worksheets("Лист2").Range("$g$17") = "3"
Workbooks("книга1.xlsb").Worksheets("Лист2").Range("$g$16") = "1"
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End If
End Sub
Sub общий_фас()
obnov = 10
'DoEvents
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Workbooks("Книга1.xlsb").Worksheets("table").Cells.ClearContents
For i = 1 To 100
'DoEvents
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For J = 1 To 10
'DoEvents
Workbooks("Книга1.xlsb").Worksheets("table").Cells(i, J) = 33
Next J
Next i
'DoEvents
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
If Workbooks("Книга1.xlsb").Worksheets("Лист2").Range("$g$16") = "5" Then
Application.OnTime Now + TimeValue("00:00:" & obnov & ""), "общий_фас"
End If
End Sub