我使用VBA在Excel中創建了自定義函數。我試圖使用Workbooks.Open(path)
命令從不同的工作簿中獲取數據。這裏是我的代碼:Excel VBA無法訪問外部工作簿上的工作表
Option Explicit
Function TestFunction() As String
mySub
TestFunction = "Success."
End Function
Sub mySub()
Dim path As String
Dim wk As Workbook
path = "C:\Users\jg\Desktop\machine_data.xlsm"
Set wk = Workbooks.Open(path)
Dim ws As Worksheet
Set ws = wk.Sheets(1)
Debug.Print ws.Range("A2")
End Sub
Sub Test()
Debug.Print (TestFunction())
End Sub
現在我的問題是這樣的:
當我運行Sub Test()
從Excel一切VBA環境內的工程按計劃進行。打開machine_data.xlsm
,調試中出現A2
字段。
一旦我找到工作簿,並在其中定義了此模塊並鍵入=TestFunction()
到一個單元格中,我得到一個#VALUE!
。該文件也不會被打開。
如果我評論這兩條線:
Set ws = wk.Sheets(1)
Debug.Print ws.Range("A2")
上就會顯示Success!
,但文件仍打不開。
我在做什麼錯?這兩個工作簿都是.xlsm
文件。我使用的是Microsoft Office Excel 2007中
一個UDF只能返回一個值 - 看看[This](http://stackoverflow.com/questions/6045826/excel-vba-function-to-turn-activecell-to-bold)。 – DaveU
@DaveU我已閱讀過這個是的,但不是打開一個外部工作簿,只從它讀取,並根據讀取值返回一個不同的值允許?因爲這似乎不可能。我不更改'machine_data.xlsm'文件中的任何值。 – Octoshape
@DaveU沒關係我選擇了不同的解決方法(見下面我自己的答案) – Octoshape