2014-09-04 112 views
0

我們有一套基於Excel 2003工作簿的Excel工作簿。某些工作簿在相同目錄中打開其他工作簿以用作數據存儲。最近,爲了將其移植到Mac Excel 2011平臺,我們將工作簿從.xls轉換爲.xlsm格式。經過與兼容性問題的日誌糾纏之後,我們的產品在Excel 2007開始工作。Excel 2003 - 2007文件轉換器將工作簿相關文件路徑分解爲其他工作簿

但是,當我們返回在安裝了Converter模塊的Excel 2003上進行測試時,我們的自相關工作簿鏈接全部中斷。這是因爲轉換器在用戶Temp目錄中的工作簿的副本中,該目錄不在產品目錄附近的任何地方。用戶可以選擇安裝產品的位置,因此產品目錄的路徑一直是自我相對的,至今爲止工作得很好。奇怪的是,一旦工作簿打開,如果你已經運行了Workbook_Open代碼,它將返回正確的路徑。只有當工作簿實際打開時,你是否有問題。例如

Private Sub Workbook_Open() 
    Dim appPath As String 
    Dim FileName As String 
    . . . 
    appPath = Me.Path 
#If Win32 Or Win64 Then 
    FileName = appPath & "\" & "MMDataStore.xlsm" 
#Else 
    ' MAC support 
    FileName = appPath & ":" & "MMDataStore.xlsm" 
#End If 
    MsgBox FileName 
    Application.Workbooks.Open FileName 
    MsgBox "Activate" 
    Workbooks("MMDataStore.xlsm").Activate 
    Me.Activate 

...

通過第一次,作爲工作簿打開,消息框指示文件名的路徑(APPPATH)是在Temp目錄(如C:\ Users \用戶njohnson \應用程序數據\ Local \ Temp \ MMDataStore.xlsm。如果您打開Microsoft Visual Basic並單步執行相同的工作簿打開代碼,它現在將該工作表顯示爲在正確的目錄中打開。是否有人對如何解決此問題有任何想法?

謝謝,尼爾

回答

0

This a Ppears是微軟的錯誤。我們的解決方法是將代碼移動到需要它的函數中,就像它需要的一樣。例如當用戶想要從工作簿檢索數據或將數據存儲到工作簿時,我們會檢查它是否已經打開,如果沒有,請在當時打開它。此時,工作簿的所有內部指針似乎都已解決,並且Workbook打開工作正常。此解決方案在轉換器的Excel 2003上運行。

相關問題