2010-09-23 55 views
0

問題如何訪問在另一個Excel工作簿中定義的常量?

如何訪問另一個Excel工作簿中定義的公共常量?

設置

workbook.xls中

我的VBA代碼在一個名爲 「MyWorkbook.xls」 當前Excel工作簿中運行。 它有一些VBA代碼,它讀取一個文件名 - 「OtherWorkbook.xls在這種情況下 - 從單元格」A1「。然後,代碼應該讀取其他工作簿中定義的常量並將其寫入單元格」A2 」這裏是我的代碼如下所示:

Sub GetValueFromOtherWorkbook() 
    otherWorkbook = Range("A1").Value ' Value = "OtherWorkbook.xls" 

    Dim returnedValue As String 

    ' Idea 1: Doesn't work 
    Set returnedValue = OtherWorkbook.xls!Module1.MY_CONSTANT 

    ' Idea 2: Doesn't work either 
    Set returnedValue = Application.Run(otherWorkbook & "!Module1.MY_CONSTANT") 

    Range("A2").Value = returnedValue ' MY_CONSTANT = "testValue" 
End Sub 

OtherWorkbook.xls

第二Excel工作簿被稱爲 「OtherWorkbook.xls」 爲 它有一個VBA模塊調用模塊1如上所述。 Module1定義了一個公共常量,代碼如下所示:

Public Const MY_CONSTANT As String = "testValue" 

問題

從MyWorkbook.xls代碼不運行,則返回以下錯誤

運行時錯誤 '424'

所需的對象

我不即使在閱讀幫助文檔後,也不知道該如何處理它。在另一種情況下,我設法調用另一個工作簿中的例行使用此代碼:

otherWorkbookName = "OtherWorkbook.xls" 
Application.Run (otherWorkbookName & "!Module1.SomeRoutine") 

因此,調用一個日常工作,但訪問一個公共的常量不。

任何想法,我可以嘗試下?

回答

2

代碼模塊不是可以像工作表一樣訪問的對象。

您可以訪問和操作它,但爲此,您需要引用Microsoft Visual Basic for Applications Extensibility庫並允許訪問VBA項目(工具 - 選項 - 安全 - 宏安全 - 受信任的發佈者 - 信任訪問VBA項目)之後,您可以使用第二個工作簿的Workbook.VBProject屬性。

您不需要這樣做。相反,您可以創建對其他工作簿的引用:在VBA IDE中,轉至工具 - 參考,單擊Browse並使用常量查找工作簿。

如果這樣做不好,您可以在該工作簿中創建一個只返回常量值的方法,並按照您的說明調用它。

+0

很好的答案,謝謝。是的,我也想過寫封裝方法作爲最後的手段。我想我會採用這種解決方法,所以我不必介紹任何新的參考。 – Lernkurve 2010-09-24 08:49:02

相關問題