我们有一个基于一组 Excel 工作簿的产品,可在 Excel 2003 及更高版本上运行。一些工作簿打开同一目录中的其他工作簿以用作数据存储。最近,在尝试将其移植到 Mac Excel 2011 平台时,我们将工作簿从 .xls 转换为 .xlsm 格式。在与兼容性问题的日志斗争之后,我们让该产品在 Excel 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\AppData\Local\Temp\MMDataStore.xlsm。如果您随后打开 Microsoft Visual Basic 并逐步执行相同的工作簿打开代码,它现在显示工作表在正确的目录中打开。有没有人对如何解决这个问题有任何想法?
谢谢,尼尔