ActiveDocument.SaveAs2 не работает в Excel 2000, но хорошо в 2010 и 2016 годах
Я использовал модифицированную версию кода, предоставленную Jtchase08 в другом потоке, и она отлично работает в Excel 2010 и 2016, когда я изменяю библиотеку объектов на соответствующую версию Microsoft Word, однако, пытаясь заставить то же самое работать в 2000 году, я получаю
Ошибка времени выполнения "438": объект не поддерживает это свойство или метод
Отладка приводит меня сюда
Полный код, который я использую, приведен ниже, и если кто-то может помочь изменить его, чтобы он работал в 2000 году, это было бы очень полезно.
Sub ExportToHTML()
Dim DocPath As String
Dim MsgBoxCompleted
Worksheets("Final Code").Activate
Worksheets("Final Code").Range("A1:A322").Select
Dim AppWord As Object
Set AppWord = CreateObject("Word.Application")
AppWord.Visible = False
Selection.Copy
DocPath = CurDir & Application.PathSeparator & Range("U15")
'Create and save txt file
AppWord.Documents.Add
AppWord.Selection.Paste
AppWord.ActiveDocument.SaveAs2 Filename:=DocPath, FileFormat:=wdFormatText
Application.CutCopyMode = False
AppWord.Quit (wdDoNotSaveChanges)
Set AppWord = Nothing
MsgBoxCompleted = MsgBox("Process complete.", vbOKOnly, "Process complete")
Worksheets("User Input").Activate
End Sub
1 ответ
Я думаю, что лучшим решением будет
If Val(Application.Version) < 14 Then
AppWord.ActiveDocument.SaveAs Filename:=DocPath, FileFormat:=wdFormatText
Else
AppWord.ActiveDocument.SaveAs2 Filename:=DocPath, FileFormat:=wdFormatText
End If
Так что для версий до Office 2010 старая функцияSaveAs
используется. А для Office 2010 и новее новая функцияSaveAs2
используется.
Информация
SaveAs2
Функция была введена в Office 2010.
Как я знаю, единственная разница в том, чтоSaveAs2
функция принимает дополнительный (последний) аргументCompatibilityMode
(см. перечисление WdCompatibilityMode).Так старый
SaveAs
может работать и в новых версиях, потому что это все еще реализовано по причинам совместимости. Но мы никогда не знаем, будет ли он удален в каких-либо будущих версиях, поэтому с помощью вышеприведенного решения вы получите совместимость с будущими версиями в случае, если старыеSaveAs
удаляется из VBA.