我们有一个基于一组Excel工作簿的产品,该工作簿从Excel 2003开始运行。某些工作簿在同一目录中打开其他工作簿,用作数据存储。最近,为了将其移植到Mac Excel 2011平台,我们将工作簿从.xls格式转换为.xlsm格式。在经历了一系列兼容性问题后,我们的产品开始在Excel 2007上运行。
然而,当我们在安装了Converter模块的Excel 2003上进行测试时,我们的自相关工作簿链接全部中断。这是因为转换器在users 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并单步执行相同的工作簿打开代码,则现在会显示工作表已在正确的目录中打开。有人想过如何解决此问题吗?
谢谢,尼尔