返回列表 上一主題 發帖

EXCEL 2007用巨集來複製WEB匯入的資料,發現所有資料都和第一筆相同?

EXCEL 2007用巨集來複製WEB匯入的資料,發現所有資料都和第一筆相同?

各位前輩大大您們好:
小弟第一次進站發言,有不遵守規定的發言還請各位大大指教,謝謝.

小弟剛在學EXCEL VBA,在過程發生一個問題,想請各位大大幫忙小弟解決.(我是用EXCEL 2007)
我有一個EXCEL檔案是從WEB外部匯入資料,但因資料筆數很多,所以我就用巨集FOR.......NEXT迴圈,
想說將匯入的每一筆資料再複製到另一工作表來作成資料庫之類的記錄,但卻發現巨集的程序跑完了,
但匯入的資料速度跟不上(即其實匯入的程序跟本還沒跑完,都還在匯入.),巨集就已經將所有的複製程序都跑完了,
所以除第一筆有資料外,第二筆之後的資料都和第一筆的完全一樣,
請問各位大大:EXCEL巨集要如何才能在外部資料匯入完畢後再執行複製的程序?
可以請各位前輩大大不吝指教嗎?
謝謝!!

回復 1# h12960
可參看這篇:
請問這個網頁如何用WEB查詢輸入excel 的 8#
其中的解決方案試試:
Application.Wait (Time + TimeValue("0:00:03"))  '依網頁下載速度調整等待秒數

TOP

回復 1# h12960
但匯入的資料速度跟不上(即其實匯入的程序跟本還沒跑完,都還在匯入.),巨集就已經將所有的複製程序都跑完了,
  1. Dim q As QueryTable
  2.     q.Refresh False
  3.     '幕後更新,則僅當所有資料都讀取至工作表後,才傳回對程序的控制
複製代碼
  1. Refresh 方法
  2. 請參閱套用至範例特定套用至 ListObject 物件時用 Refresh 方法。
  3. 從執行 Microsoft Windows SharePoint Services 的伺服器上擷取清單目前的資料和結構描述。此方法僅可與已連結到 SharePoint 網站的清單一起使用。如果該 SharePoint 網站無法使用,則呼叫此方法將會傳回錯誤。
  4. expression.Refresh()
  5. expression    必選。該運算式會傳回 ListObject 物件。
  6. 備註
  7. 呼叫 Refresh 方法不會確認 Excel 活頁簿清單中的變更。且在呼叫 Refresh 方法時,會放棄 Excel 清單中未確認的變更。若要避免遺失任何未確認的變更,可在呼叫 Refresh 方法前,先呼叫 ListObject 物件的 UpdateChanges 方法。
  8. 套用至 QueryTable 物件時用 Refresh 方法。
  9. 更新外部資料範圍 (QueryTable)。Boolean。
  10. expression.Refresh(BackgroundQuery)
  11. expression    必選。該運算式會傳回 QueryTable 物件。

  12. BackgroundQuery    選擇性的 Variant。僅與基於 SQL 查詢結果的 QueryTable 一起使用。若為 True,則在完成資料庫連線並送出查詢後,立刻傳回對程序的控制。QueryTable 是在幕後更新。若為 False,則僅當所有資料都讀取至工作表後,才傳回對程序的控制。如果不指定此引數,則由 BackgroundQuery 屬性的設定來決定查詢模式。
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

感謝luhpro大大及GBKEE大大的回覆:
1.luhpro大大所提供的方法我有試試看,但好像還是沒有改善,我之前也是想說用這樣的方法來用,但卻不知道指令的用法,很高興luhpro提供,讓我也學到了一項指令的用法,謝謝luhpro大大.

2.GBKEE大大提供的方法,因為我才剛接觸VBA不久,功力不夠,老實說我真的還看不懂,可以請問一下GBKEE大大您說有範例,範例去那可以看得到,可以告訴我嗎?

在這�媟P謝二位大大肯幫忙我回答我的問題,讓我可以學到新的東西,真的很感謝

TOP

回復 2# luhpro

.luhpro大大所提供的方法我有試試看,但好像還是沒有改善,我之前也是想說用這樣的方法來用,但卻不知道指令的用法,很高興luhpro提供,讓我也學到了一項指令的用法,謝謝luhpro大大.

TOP

回復 3# GBKEE


    GBKEE大大提供的方法,因為我才剛接觸VBA不久,功力不夠,老實說我真的還看不懂,可以請問一下GBKEE大大您說有範例,範例去那可以看得到,可以告訴我嗎?


抱歉因為我第一次使用討論區,不知道要怎麼回覆,因剛才在首頁有看到說要按回覆,回覆的人才會收到通知,所以我再個別按了回覆,不知道這樣對不對,請各位大大指教,謝謝!!

TOP

請問大大,像我所提問的檔案,其實是網路上某大大所提供的,是寫好的VBA,我只是要其中某些資用而用加了簡單的FOR .........NEXT迴圈指令將其複製到另一工作表上要來整理.而遇到了這個問題,本想說將該檔案上傳附件,這樣也許各位大大們會比較清楚我所要表答的內容但怕原著作不高興我擅自公佈其檔案,這樣我可以上傳該檔案嗎?還是可以個別mail給大大以方便討論呢?

TOP

回復 7# h12960

TOP

回復 3# GBKEE

感謝GB大大:
到現在才稍為弄懂GB大大所post的8~13點中所述的內容,即True及False的差別,真的是我所需要的,真是後知後覺,謝謝您GB大大。
但再請教GB大大另外二個問題,
1.若設定成False時,在批次下載時"有時"會出現錯誤視窗,若按除錯鍵,則都是指在 .RefreshBackgroudQuery:=False這一段
,按完終止再重新設定後,重新執行一次,卻又沒有問題,這是什麼原因呢?
若是不想讓錯該的訊息一直出現,想讓vba繼續往下跑到完成,若我在程式前段加入 "On Error Resume Next"不知道有沒有作用呢?(因不是想讓它出現它就會出現,所以我不曉得有沒有作用)

2.第一個問題是若是在下載網路資料有時會遇到某一筆資料查不到,也會出現另一種提醒視窗(類似查不到該筆資料等的訊息),若我也想忽略讓vba繼續往下跑到完成,那我又該怎麼作會較好 ?

若GB大大有時間請再撥空幫小弟解答,不甚感激,謝謝!!

TOP

        靜思自在 : 一句溫暖的話,就像往別人身上灑香水,自己會沾到兩三滴。
返回列表 上一主題