iT邦幫忙

1

VBA 如何引用其他檔案的資料

vba

Workbooks.Open Filename:=ThisWorkbook.Path & "\108.xlsx"
Set D1 = Worksheets("108").Worksheets("sheet1")

請問各位大大,我想使用別的檔案資料放入現行的檔案,下面上行是爬文
參考的,連YOUTOBE上也這麼寫....可是在第二行發生錯誤,
錯誤訊息如下....

執行階段錯誤 '9':
陣列索引超出範圍

可是程式碼也沒使用陣列呀!! 還是語法不對了?! 請問如何解決??

2 個回答

1
paicheng0111
iT邦高手 1 級 ‧ 2020-03-15 22:32:12
最佳解答

Set D1 = Worksheets("108").Worksheets("sheet1")

改成

Set D1 = Workbooks("108.xlsx").Worksheets("sheet1")

謝謝您的指教,不好意思,我打錯了,我是打Workbooks沒錯,錯誤訊息一樣。

已經修改

1
小魚
iT邦大師 1 級 ‧ 2020-03-16 13:34:55

我用起來沒問題啊,
你確定你的檔案裏面有sheet1這個工作表嗎?

Workbooks.Open Filename:=ThisWorkbook.Path & "\test.xlsx"
Set D1 = Workbooks("test.xlsx").Worksheets("sheet1")
Cells(4, 4) = D1.Range("D1").Value
看更多先前的回應...收起先前的回應...

他的問題應該是Workbooks裡面沒有加上副檔名。

的確是副檔名的問題....,sorry,我是參考https://www.youtube.com/watch?v=SisG7g7f6U4
裡面的程式碼的,現在引用可以了,謝謝,但是請教一下,您的Cells(4, 4),我試過發現還是在sheet1裡面,等於同一個工作表引用?!是否要用兩次Workbooks.Open,用d1,d2才能對照引用?
如果兩個工作表在上下層目錄,如何設定上層目錄??
可以先偵測目前的工作表,記錄起來,開完d2,再打開d1嗎? 感謝!!

小魚 iT邦大師 1 級 ‧ 2020-03-16 17:30:31 檢舉

??
Cells是執行的那個工作表,
因為我的VBA是跟著工作表的,
如果你要比較複雜的應該可以用跟取值一樣的語法指定Value
就是 xx.Range("A1").Value = D1.Range("D1").Value

小魚 iT邦大師 1 級 ‧ 2020-03-16 17:31:26 檢舉

因為你沒有回應也沒有設最佳解答,
所以我才想說是不是問題還沒解決?

不好意思,試出來了....感謝小魚大師,但是...是paicheng0111先提出來的,而且最佳解答只能選1個。

小魚 iT邦大師 1 級 ‧ 2020-03-17 10:40:24 檢舉

別太在意,
我本來就是這個意思.

我要發表回答

立即登入回答