У меня есть макрос, который преобразует (экспортирует) текстовые документы внутри папки в PDF. Макрос работает, но WORD продолжает выводить диалоговое окно сохранения, что убивает идею пакетной операции. Команда
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
который помог мне в других случаях, не работает по какой-то причине. Любое предложение приветствуется. Мартин
Sub Loop_through_files()
Dim cDocuments As New Collection
Dim sPath As String, sFilter As String
Dim sCurrentDocName As String, sFullname As String
Dim i As Long
Dim xNewName As String
Dim xIndex As Integer
sPath = "C:\Users\xxxxxx\Desktop\ConvertPDF"
sFilter = "*.DOC*"
Set cDocuments = Nothing
sCurrentDocName = Dir(sPath & "\" & sFilter)
Do Until sCurrentDocName = ""
cDocuments.Add Item:=sCurrentDocName
sCurrentDocName = Dir
Loop
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For i = cDocuments.Count To 1 Step -1 '
sFullname = sPath & "\" & cDocuments(i)
xIndex = InStr(cDocuments(i), ".")
xNewName = Left(cDocuments(i), xIndex) + "pdf"
Documents.Open FileName:=sFullname, _
ConfirmConversions:=False, ReadOnly:=False, AddToRecentFiles:=False, _
PasswordDocument: = "", PasswordTemplate: = "", Revert:=False, _
WritePasswordDocument: = "", WritePasswordTemplate: = "", Format:= _
wdOpenFormatAuto, XMLTransform: = ""
ActiveDocument.ExportAsFixedFormat OutputFileName:=sPath & "\" & xNewName, _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
ActiveWindow.Close
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Попробуйте открыть документ с помощью ReadOnly:=True
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
В вызовах метода Close
необходимо указать параметр OriginalFormat
, который представлен перечислением WdOriginalFormat:
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges, OriginalFormat:=wdOriginalDocumentFormat
Великолепно! Я только что вернулся к этому после того, как был полностью поглощен другим проектом. Этот дополнительный параметр в методе close сделал это!! Большое спасибо!
Старайтесь не работать с
ActiveDocument
. МетодDocuments.Open()
возвращает документ, содержит ссылку на него, экспортирует в pdf и удаляет.