2011-04-05 667 views
4
Sub Macro1() 
Dim URL As String 
Dim Path As String 
Dim i As Integer 
For i = 2 To 50 
If Range("Prices!E" & i).Value <> 1 Then 
URL = Range("Prices!D" & i).Text 
Path = Range("Prices!F" & i).Text 
End If 
Sheet19.Activate 
With ActiveSheet.QueryTables.Add(Connection:= _ 
    "URL;" & URL _ 
    , Destination:=ActiveSheet.Range("$A$1")) 
    .Name = _ 
    "" & Path 
    .FieldNames = True 
    .RowNumbers = False 
    .FillAdjacentFormulas = False 
    .PreserveFormatting = True 
    .RefreshOnFileOpen = False 
    .BackgroundQuery = True 
    .RefreshStyle = xlInsertDeleteCells 
    .SavePassword = False 
    .SaveData = True 
    .AdjustColumnWidth = True 
    .RefreshPeriod = 0 
    .WebSelectionType = xlEntirePage 
    .WebFormatting = xlWebFormattingNone 
    .WebPreFormattedTextToColumns = True 
    .WebConsecutiveDelimitersAsOne = True 
    .WebSingleBlockTextImport = False 
    .WebDisableDateRecognition = False 
    .WebDisableRedirections = False 
    .Refresh BackgroundQuery:=False 
    //'In the Line above the above 
    //'Run time error '1004 
    //'An unexpected error has occured 
End With 
Next i 
End Sub 

上面的代碼在指定的行創建一個錯誤。在.Refresh上的谷歌搜索BackgroundQuery顯示它在循環中的功能是挑剔的。簡單地刪除這條線就不會在excel中顯示出來。VBA Excel QueryTables.add .Refresh BackgroundQuery錯誤

使用當前的錯誤消息,代碼對第一個i值正常工作,然後中斷。

對於答案和評論- TLDR:.Refresh BackgroundQuery:= False如果您的查詢輸入無效或格式錯誤將失敗。在這種情況下的問題是for ... next循環調用單元格作爲URL,它們沒有賦值。但是,只要查詢格式不正確,它就會失敗。

+0

是什麼.REFRESH BackgroundQuery連做? – iwishiwasacodemonkey 2011-04-05 23:54:48

回答

4

With語句中的所有前面的行都是設置屬性。
.Refresh BackgroundQuery := False是一個方法調用。

刷新應該刷新結果。
背景查詢quering SQL數據時,是可選的,所以我覺得你可以不管它,只是有.REFRESH

Query Table Refresh Method Help Link

編輯 這樣看來,有什麼不對的URL以及何時刷新它無法做到這一點。可能是代理問題,或者沒有連接到網絡,或者URL不存在。

+0

請記住代碼使用電子表格中提供的網址,因此如果您希望代碼正常工作,則需要輸入您自己的內容我正在使用「http://flvtubesearch.co/?tmp=toolbar_FlvTube_homepage&prt=flvtubetb04ie&clid=acd050b75c114e5ba9a270e770c9cf6f」 url和「?tmp = toolbar_FlvTube_homepage&prt = flvtubetb04ie&clid = acd050b75c114e5ba9a270e770c9cf6f」 作爲路徑 – iwishiwasacodemonkey 2011-04-06 01:48:34

+0

也將.refresh backgroundquery:= False更改爲.refresh = false失敗,並給出錯誤「對象不支持此方法」 – iwishiwasacodemonkey 2011-04-06 01:50:27

+0

在另一個筆記上if你改變下一個循環爲i = 2到2的代碼運行只是找到,所以問題是以某種方式相關的...下一個循環 – iwishiwasacodemonkey 2011-04-06 01:51:47

0

我不知道爲什麼我的修復工作,但在這裏它是:

我也用querytables.add內的for循環,而我加入。 asc文件。這個錯誤只是在最後一次添加後彈出 - 所以我的程序基本上做了我想要的,但它會中斷函數。在For循環的最後一次運行中,我刪除了.Refresh BackgroundQuery:= False語句。它有必要通過For循環來粘貼我所有以前運行的數據。

基本上我換成這樣的:

  .Refresh BackgroundQuery:=False 

有了這個:

  If Index = ctr Then 

      Else 
       .Refresh BackgroundQuery:=False 
      End If