2014-09-04 2 views
0

У нас есть продукт, основанный на наборе книг 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

ответ

0

Thi s, похоже, является ошибкой Microsoft. Наше решение заключалось в том, чтобы переместить код, чтобы открыть книгу в нужную ей функцию, как и требовалось. например Когда пользователь хотел получить данные из рабочей книги или сохранить данные в рабочей книге, мы проверили бы, был ли он уже открыт, а если нет, тогда откройте его. К этому времени все внутренние указатели на книгу, похоже, были устранены, и Workbook open работал правильно. Это решение работает в Excel 2003 с конвертерами.

Смежные вопросы