По какой-то причине мои номера версий смешались, и в какой-то момент я четко установил более позднюю версию времени исполнения композитора (то есть версию 0.19.12), чем сервер REST-композитора (то есть версия 0.19.5). Необходимо переустановить, чтобы номера версий были одинаковыми.
Вы можете просмотреть все открытые книги:
Public sub GetWB(byval wb_name as string) as excel.workbook
Dim wbkCurr as excel.workbook
Set getwb=nothing
For each wbkCurr in application.workbooks
If lower(left(wbkCurr.name, instr(wbkCurr.name,”.”))) = lcase(wb_name) then
Set getwb = wbkCurr
Endif
Next wbkCurr
End function
Вызвать его с помощью set wb = getwb (wb_name)
Просто проверьте, что wb все еще ничто, прежде чем продолжить [113 ]
Вы можете использовать групповой подход.
Dim wb_name as String
wb_name = Range("A1").Value & ".****"
Set wb = Workbooks(wb_name)
Вы можете использовать регистр выбора, чтобы определить версию и расширение / формат файла Excel
If Val(Application.Version) < 12 Then
'You use Excel 97-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'You use Excel 2007-2016
Select Case wb.FileFormat
Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
Case 52:
If .HasVBProject Then
FileExtStr = ".xlsm": FileFormatNum = 52
Else
FileExtStr = ".xlsx": FileFormatNum = 51
End If
Case 56: FileExtStr = ".xls": FileFormatNum = 56
Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
End Select
End If
Вот 2 примера
Использование VBA SaveAs в Excel 2007-2016 - Рон де Брюин Excel Automation