2015-12-18 5 views
1

После некоторого обновления мне удалось найти приблизительный рабочий код. Одна из проблем, с которыми я сталкиваюсь, заключается в том, что макрос не очищает данные с последней страницы. Для вчерашних данных было 6 страниц данных, но макрос только соскабливает страницу 5. Но странно, если бы я должен был очистить данные с тем же кодом с 2 дней назад, я могу получить данные на всех 7 или 8 страниц. Я не знаю, почему это происходит. Есть идеи? Вот обновленный код.Время выполнения 1004 Ошибка при. Обновить BackgroundQuery

'Macro to query Delinquency Status Search for DFB Counties 
'Run Monday to pull data from Friday 

Sub queryActivityDailyMforFWorking() 

Dim nextrow As Integer, i As Long 
Dim dates 
dates = Date - 1 

i = 1 

Application.ScreenUpdating = False 
Application.DisplayStatusBar = True 

Do 

'i = i + 1 
Application.StatusBar = "Processing Page " & i 
nextrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1 
'lastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlToLeft).Column + 1 

    'With ActiveSheet.QueryTables.Add(Connection:= _ 
    '"URL;https://www.myfloridalicense.com/delinquency_results.asp?SID=&page=" & i + county + x & "&status=NS&send_date=" & dates & "&search_1.x=1", _ 
    'Destination:=Range("A" & nextrow)) 

    With ActiveSheet.QueryTables.Add(Connection:= _ 
    "URL;https://www.myfloridalicense.com/delinquency_results.asp?SID=&page=" & i & "&county_1=11,%2012,%2013,%2014,%2015,%2016,%2017,%2018,%2019,%2020,%2021,%2022,%2023,%2024,%2025,%2026,%2027,%2028,%2080,%2029,%2030,%2031,%2032,%2033,%2034,%2035,%2036,%2037,%2038,%2039,%2040,%2041,%2042,%2043,%2044,%2045,%2046,%2047,%2048,%2049,%2050,%2051,%2052,%2053,%2054,%2055,%2056,%2057,%2058,%2059,%2079,%2060,%2061,%2062,%2063,%2064,%2067,%2068,%2069,%2065,%2066,%2070,%2071,%2072,%2073,%2078,%2074,%2075,%2076,%2077&status=NS&send_date=" & dates & "&search_1.x=1", _ 
    Destination:=Range("A" & nextrow)) 





    '.Name = _ 
    "2015&search_1.x=40&search_1.y=11&date=on&county_1=AL&lic_num_del=&lic_num_rep=&status=NS&biz_name=&owner_name=" 
    .FieldNames = False 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .WebSelectionType = xlSpecifiedTables 
    .WebFormatting = xlWebFormattingNone 
    .WebTables = "10" 
    .WebPreFormattedTextToColumns = True 
    .WebConsecutiveDelimitersAsOne = True 
    .WebSingleBlockTextImport = False 
    .WebDisableDateRecognition = False 
    .WebDisableRedirections = False 
    .Refresh BackgroundQuery:=False 




'autofit columns 
Columns("A:G").Select 
Selection.EntireColumn.AutoFit 

'check for filter, if not then turn on filter 
ActiveSheet.AutoFilterMode = False 
If Not ActiveSheet.AutoFilterMode Then 
ActiveSheet.Range("A:G").AutoFilter 
End If 
i = i + 1 
End With 

ActiveCell.value = ActiveCell.Value * 2 
ActiveCell.Offset(1,0).Select 

Loop Until IsEmpty(ActiveCell.Value) 

Application.StatusBar = False 

'Align text left 
Cells.Select 
With Selection 
.HorizontalAlignment = xlLeft 
.VerticalAlignment = xlBottom 
.WrapText = False 
.Orientation = 0 
.AddIndent = False 
.IndentLevel = 0 
.ShrinkToFit = False 
.ReadingOrder = xlContext 
.MergeCells = False 
End With 

End Sub 
+0

Даже если бы это было правдой, оно продолжало бы итерацию. У меня есть тот же самый код, написанный для другого поиска, и даже если он имел менее 25 страниц, он все равно продолжал бы проходить до тех пор, пока не достигнет 25. – novicevba

+0

Я понимаю, что вы имеете в виду, но это не имеет смысла в том, что я делаю. в том смысле, что другой Sub i запущен, тот же самый код напоминает вас, только другой код поиска, работает без проблем, и я знаю, что 13 не существует, но он все еще проходит и итерации. – novicevba

+0

Я пробовал другую дату, и код способен перебирать и не выходить с ошибкой – novicevba

ответ

1

Мое решение (возможно, добавить форматирование, чтобы вернуть его в колонке А):

Sub QueryDelinquencyTest() 
Dim nextrow As Integer, i As Integer 
Dim dates 
dates = Date - 1 

Application.ScreenUpdating = False 
Do While i < 25 'this is the page range to be captured. 
Application.StatusBar = "Processing Page " & i 
nextrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1 
With ActiveSheet.QueryTables.Add(Connection:= _ 
    "URL;https://www.myfloridalicense.com/delinquency_results.asp?SID=&page=" & i & "&county_1=AL&status=NS&send_date=" & dates & "&search_1.x=1", _ 
    Destination:=Range("A" & nextrow)) 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = False 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .WebSelectionType = xlSpecifiedTables 
    .WebFormatting = xlWebFormattingNone 
    .WebTables = "10" 
    .WebPreFormattedTextToColumns = False 
    .WebConsecutiveDelimitersAsOne = True 
    .WebSingleBlockTextImport = False 
    .WebDisableDateRecognition = False 
    .WebDisableRedirections = False 
    .Refresh BackgroundQuery:=True 
End With 

i = i + 1 
Loop 
Cells.Select 
With Selection 
    .HorizontalAlignment = xlLeft 
    .VerticalAlignment = xlBottom 
    .WrapText = False 
    .Orientation = 0 
    .AddIndent = False 
    .IndentLevel = 0 
    .ShrinkToFit = False 
    .ReadingOrder = xlContext 
    .MergeCells = False 
End With 

End Sub 
+0

Я думал, что форматирование уже было для его начала в столбце A? Может быть, мне не хватает этой части и не вижу, где она. я вижу изменения, которые вы внесли, и не может понять, что вы извлекли, чтобы заставить столбцы начинаться в столбце A. Также, когда я пытаюсь добавить автофильтр, я получаю сообщение об ошибке, указывающее, что метод автофильтра диапазона класс не прошел. Есть идеи по этому поводу? – novicevba

+0

Как бы вы отслеживали, когда попадаете в конец результатов поиска? Я хочу сказать, что код останавливает поиск, когда у него больше нет данных. Как вы думаете, мне придется изменить этот код, чтобы включить теги html? – novicevba

+0

Было форматирование для столбцов от A до G, но единственное, что в этих столбцах было каким-то образом не обнаружено в нижней части; все остальное было отодвинуто направо. Вам нужно запустить его, посмотреть, что он делает, а затем решить, что делать для форматирования. Что касается остановки, когда вы дойдете до конца, просто сделайте что-нибудь вроде, если кнопка правой стрелки не будет найдена, а затем формат и выход. – justkrys

0

Это код, который я до сих пор при объявлении переменной для каждого округа.

'Macro to query Delinquency Status Search for DFB Counties 
'Run Monday to pull data from Friday 

Sub queryActivityDailyMforF() 

Dim nextrow As Integer, i As Long 
Dim dates 
dates = Date - 1 
Dim x, county1, county2, county3, county4, county5, county6, county7, county8, county9, county10, county11, county12 
county1 = "county_1=16" 
county2 = "county_1=21" 
county3 = "county_1=23" 
county4 = "county_1=32" 
county5 = "county_1=36" 
county6 = "county_1=41" 
county7 = "county_1=46" 
county8 = "county_1=53" 
county9 = "county_1=54" 
county10 = "county_1=57" 
county11 = "county_1=60" 
county12 = "county_1=66" 

'Dim myString 
'myString = "No Activity Information Found" 
'Dim lastRow As Long 
'Dim county 
'Dim site As String 

'Dim rng As Range 
'Dim firstCell As String 

'lastRow = Sheets("sheet1").Range("A" & Rows.Count).End(xlUp).Row 

Application.ScreenUpdating = False 
Application.DisplayStatusBar = True 

'If Not rng Is Nothing Then firstCell = rng.Address 

'Do Until myString <> lastRow And InStr("&county_1=66", "St. Lucie") 
Do 

'Do While i < 4 
'For i = 1 To lastRow 
'Set rng = Sheets("sheet2").Range("A:A").find(What:=Cells(i, 1), LookIn:=xlValues, lookAt:=xlPart, SearchOrder:=xlByRows) 
'Do While lastRow <> myString 
    Application.StatusBar = "Processing Page " & i 
    nextrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row + 1 
    'With ActiveSheet.QueryTables.Add(Connection:= _ 
    ' "URL;https://www.myfloridalicense.com/delinquency_results.asp?SID=&page=" & i & "&county_1=16&county_1=21&county_1=23&county_1=32&county_1=36&county_1=41&county_1=46&county_1=53&county_1=54&county_1=57&county_1=60&county_1=66&status=NS&send_date=" & dates & "&search_1.x=1", _ 
     ' Destination:=Range("A" & nextrow)) 

     With ActiveSheet.QueryTables.Add(Connection:= _ 
     "URL;https://www.myfloridalicense.com/delinquency_results.asp?SID=&page=" & i & county & x & "&status=NS&send_date=" & dates & "&search_1.x=1", _ 
     Destination:=Range("A" & nextrow)) 



     '.Name = _ 
     "2015&search_1.x=40&search_1.y=11&date=on&county_1=AL&lic_num_del=&lic_num_rep=&status=NS&biz_name=&owner_name=" 
     .FieldNames = False 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .BackgroundQuery = True 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .WebSelectionType = xlSpecifiedTables 
     .WebFormatting = xlWebFormattingNone 
     .WebTables = "10" 
     .WebPreFormattedTextToColumns = True 
     .WebConsecutiveDelimitersAsOne = True 
     .WebSingleBlockTextImport = False 
     .WebDisableDateRecognition = False 
     .WebDisableRedirections = False 
     .Refresh BackgroundQuery:=False 

    'autofit columns 
    Columns("A:G").Select 
    Selection.EntireColumn.AutoFit 

    'check for filter, if not then turn on filter 
    ActiveSheet.AutoFilterMode = False 
    If Not ActiveSheet.AutoFilterMode Then 
    ActiveSheet.Range("A:G").AutoFilter 
    End If 

    'If Not rng Is Nothing Then 
    ' If rng.Address = firstCell Then Exit Do 
     ' End If 


'site = "https://www.myfloridalicense.com/delinquency_results.asp?SID=&page=" & i & "&county_1=16&county_1=21&county_1=23&county_1=32&county_1=36&county_1=41&county_1=46&county_1=53&county_1=54&county_1=57&county_1=60&county_1=66&status=NS&send_date=" & dates & "&search_1.x=1" 
'county = "&coutny_1=66" 



End With 
'Next 
i = i + 1 
Loop Until x = 12 

x = x + 1 
'Loop Until InStr(site, county) And ActiveCell.Value = myString 
'Wend 
Application.StatusBar = False 

'Align text left 
Cells.Select 
With Selection 
    .HorizontalAlignment = xlLeft 
    .VerticalAlignment = xlBottom 
    .WrapText = False 
    .Orientation = 0 
    .AddIndent = False 
    .IndentLevel = 0 
    .ShrinkToFit = False 
    .ReadingOrder = xlContext 
    .MergeCells = False 
End With 

'Next 
'Loop 

End Sub 
+0

вам нужно установить x = 1 перед циклом. Также я не настроен на что-либо, поэтому «Обработка страницы» & i не будет действительна. – justkrys

+0

Позвольте мне дать вам несколько советов, которые я изучил с трудом, работайте только по одной части и заставляете ее работать, прежде чем переходить к следующему. Например, вы изменили структуру циклов и создали все эти переменные, поэтому, если это не удается, вы не будете знать, какая часть не работает. – justkrys

+0

Да, я знаю. Я повсюду. Я просто хочу это сделать. Ха-ха. Я буду продолжать работать над этим и посмотреть, что я могу придумать. спасибо – novicevba