2014-09-04 113 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上运行。

相关问题