У нас есть продукт, основанный на наборе книг Excel, который работает в Excel 2003 и далее. Некоторые из книг открывают другие книги в том же каталоге, что и в качестве хранилищ данных. Недавно, пытаясь перенести это на платформу Mac Excel 2011, мы преобразовали книги с формата .xls в формат .xlsm. После борьбы с журналом проблем совместимости у нас есть продукт, работающий над Excel 2007 и далее.Excel 2003 - 2007 File 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 \ Локальный \ Temp \ MMDataStore.xlsm. Если вы затем откроете Microsoft Visual Basic и пройдете через один и тот же открытый код книги, теперь он показывает, что лист открыт в правильном каталоге. Есть ли у кого-нибудь мысли о том, как обойти это?
Спасибо, Neil