Excel 2003 以降で動作する一連の Excel ワークブックに基づく製品があります。ワークブックの中には、同じディレクトリ内の他のワークブックを開いてデータ ストアとして使用するものがあります。最近、これを Mac Excel 2011 プラットフォームに移植しようとして、ワークブックを .xls から .xlsm 形式に変換しました。互換性の問題のログと格闘した後、製品は Excel 2007 以降で動作します。
ただし、Converter モジュールがインストールされた Excel 2003 でのテストに戻ると、自己相対ブック リンクがすべて壊れてしまいます。これは、コンバーターが製品ディレクトリの近くにないユーザーの一時ディレクトリにワークブックのコピーを作成するためです。ユーザーは製品をインストールする場所を選択できるため、製品ディレクトリへのパスは常に自己相対であり、これまでは問題なく機能していました。奇妙なことに、ワークブックを開くと、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) が一時ディレクトリ (例: C:\Users\njohnson\AppData\Local\Temp\MMDataStore.xlsm) にあることが示されます。 Visual Basic で同じワークブックを開くコードをステップ実行すると、シートが正しいディレクトリで開かれていると表示されるようになりました。
ありがとう、ニール