Привет. Есть макрос, который сохраняет документ word в формат pdf по названию файла. Проблема состоит в том, что при сохранении макрос запрашивает "Перезаписать или изменить название", если я меняю название то ошибка. Прошу поправить ошибку [vba]
Код
Sub Word_ExportPDF() 'https://www.thespreadsheetguru.com/the-code-vault/microsoft-word-vba-to-save-document-as-a-pdf-in-same-folder 'PURPOSE: Generate A PDF Document From Current Word Document 'NOTES: PDF Will Be Saved To Same Folder As Word Document File 'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault
Dim CurrentFolder As String Dim FileName As String Dim myPath As String Dim UniqueName As Boolean
UniqueName = False
'Store Information About Word File 'Сохранить информацию о файле Word myPath = ActiveDocument.FullName 'CurrentFolder = ActiveDocument.Path & "\" 'Сохранить файл pdf там же где и doc CurrentFolder = "D:\YandexDisk\1C Счета и договора\" 'Сохранить файл pdf по пути.. FileName = Mid(myPath, InStrRev(myPath, "\") + 1, _ InStrRev(myPath, ".") - InStrRev(myPath, "\") - 1)
'Does File Already Exist? 'Уже существует ли файл? Do While UniqueName = False DirFile = CurrentFolder & FileName & ".pdf" If Len(Dir(DirFile)) <> 0 Then UserAnswer = MsgBox("Файл уже существует. Нажмите " & _ "[Yes] что бы перезаписать. Нажмите [No] что бы переименовать.", vbYesNoCancel)
If UserAnswer = vbYes Then UniqueName = True ElseIf UserAnswer = vbNo Then Do 'Retrieve New File Name 'Получить новое имя файла FileName = InputBox("Укажите новое имя файла " & _ "(спросит снова, если вы указали недопустимое имя файла)", _ "Введите имя файла", FileName)
'Exit if User Wants To 'Выход, если пользователь хочет If FileName = "False" Or FileName = "" Then Exit Sub Loop While ValidFileName(FileName) = False Else Exit Sub 'Cancel End If Else UniqueName = True End If Loop
'Save As PDF Document 'Сохранить как документ в формате PDF On Error GoTo ProblemSaving ActiveDocument.ExportAsFixedFormat _ OutputFileName:=CurrentFolder & FileName & ".pdf", _ ExportFormat:=wdExportFormatPDF On Error GoTo 0
'Confirm Save To User 'Подтвердить Сохранить пользователю With ActiveDocument FolderName = Mid(.Path, InStrRev(.Path, "\") + 1, Len(.Path) - InStrRev(.Path, "\")) End With
'MsgBox "PDF Saved in the Folder: " & FolderName MsgBox "Файл pdf создан в указанную папку"
Exit Sub
'Error Handlers ProblemSaving: 'MsgBox "There was a problem saving your PDF. This is most commonly caused" & _ " by the original PDF file already being open." MsgBox "Не удалось скопировать" Exit Sub
End Sub Function ValidFileName(FileName As String) As Boolean 'PURPOSE: Determine If A Given Word Document File Name Is Valid 'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault
Dim TempPath As String Dim doc As Document
'Determine Folder Where Temporary Files Are Stored TempPath = Environ("TEMP")
'Create a Temporary XLS file (XLS in case there are macros) On Error GoTo InvalidFileName Set doc = ActiveDocument.SaveAs2(ActiveDocument.TempPath & _ "\" & FileName & ".doc", wdFormatDocument) On Error Resume Next
'Delete Temp File Kill doc.FullName
'File Name is Valid ValidFileName = True
Exit Function
'ERROR HANDLERS InvalidFileName: 'File Name is Invalid ValidFileName = False
End Function
[/vba]
Привет. Есть макрос, который сохраняет документ word в формат pdf по названию файла. Проблема состоит в том, что при сохранении макрос запрашивает "Перезаписать или изменить название", если я меняю название то ошибка. Прошу поправить ошибку [vba]
Код
Sub Word_ExportPDF() 'https://www.thespreadsheetguru.com/the-code-vault/microsoft-word-vba-to-save-document-as-a-pdf-in-same-folder 'PURPOSE: Generate A PDF Document From Current Word Document 'NOTES: PDF Will Be Saved To Same Folder As Word Document File 'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault
Dim CurrentFolder As String Dim FileName As String Dim myPath As String Dim UniqueName As Boolean
UniqueName = False
'Store Information About Word File 'Сохранить информацию о файле Word myPath = ActiveDocument.FullName 'CurrentFolder = ActiveDocument.Path & "\" 'Сохранить файл pdf там же где и doc CurrentFolder = "D:\YandexDisk\1C Счета и договора\" 'Сохранить файл pdf по пути.. FileName = Mid(myPath, InStrRev(myPath, "\") + 1, _ InStrRev(myPath, ".") - InStrRev(myPath, "\") - 1)
'Does File Already Exist? 'Уже существует ли файл? Do While UniqueName = False DirFile = CurrentFolder & FileName & ".pdf" If Len(Dir(DirFile)) <> 0 Then UserAnswer = MsgBox("Файл уже существует. Нажмите " & _ "[Yes] что бы перезаписать. Нажмите [No] что бы переименовать.", vbYesNoCancel)
If UserAnswer = vbYes Then UniqueName = True ElseIf UserAnswer = vbNo Then Do 'Retrieve New File Name 'Получить новое имя файла FileName = InputBox("Укажите новое имя файла " & _ "(спросит снова, если вы указали недопустимое имя файла)", _ "Введите имя файла", FileName)
'Exit if User Wants To 'Выход, если пользователь хочет If FileName = "False" Or FileName = "" Then Exit Sub Loop While ValidFileName(FileName) = False Else Exit Sub 'Cancel End If Else UniqueName = True End If Loop
'Save As PDF Document 'Сохранить как документ в формате PDF On Error GoTo ProblemSaving ActiveDocument.ExportAsFixedFormat _ OutputFileName:=CurrentFolder & FileName & ".pdf", _ ExportFormat:=wdExportFormatPDF On Error GoTo 0
'Confirm Save To User 'Подтвердить Сохранить пользователю With ActiveDocument FolderName = Mid(.Path, InStrRev(.Path, "\") + 1, Len(.Path) - InStrRev(.Path, "\")) End With
'MsgBox "PDF Saved in the Folder: " & FolderName MsgBox "Файл pdf создан в указанную папку"
Exit Sub
'Error Handlers ProblemSaving: 'MsgBox "There was a problem saving your PDF. This is most commonly caused" & _ " by the original PDF file already being open." MsgBox "Не удалось скопировать" Exit Sub
End Sub Function ValidFileName(FileName As String) As Boolean 'PURPOSE: Determine If A Given Word Document File Name Is Valid 'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault
Dim TempPath As String Dim doc As Document
'Determine Folder Where Temporary Files Are Stored TempPath = Environ("TEMP")
'Create a Temporary XLS file (XLS in case there are macros) On Error GoTo InvalidFileName Set doc = ActiveDocument.SaveAs2(ActiveDocument.TempPath & _ "\" & FileName & ".doc", wdFormatDocument) On Error Resume Next
'Delete Temp File Kill doc.FullName
'File Name is Valid ValidFileName = True
Exit Function
'ERROR HANDLERS InvalidFileName: 'File Name is Invalid ValidFileName = False
Function ValidFileName(FileName As String) As Boolean 'PURPOSE: Determine If A Given Word Document File Name Is Valid 'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault
Dim TempPath As String Dim doc As Document
'Determine Folder Where Temporary Files Are Stored TempPath = Environ("TEMP")
'Create a Temporary XLS file (XLS in case there are macros) On Error GoTo InvalidFileName Set doc = Documents.Add doc.SaveAs2 TempPath & "\" & FileName & ".doc", wdFormatDocument doc.Close False On Error Resume Next
'Delete Temp File Kill doc.FullName
'File Name is Valid ValidFileName = True
Exit Function
'ERROR HANDLERS InvalidFileName: 'File Name is Invalid ValidFileName = False
End Function
[/vba]
UPD. Изменила код
Здравствуйте. У меня так сработало [vba]
Код
Function ValidFileName(FileName As String) As Boolean 'PURPOSE: Determine If A Given Word Document File Name Is Valid 'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault
Dim TempPath As String Dim doc As Document
'Determine Folder Where Temporary Files Are Stored TempPath = Environ("TEMP")
'Create a Temporary XLS file (XLS in case there are macros) On Error GoTo InvalidFileName Set doc = Documents.Add doc.SaveAs2 TempPath & "\" & FileName & ".doc", wdFormatDocument doc.Close False On Error Resume Next
'Delete Temp File Kill doc.FullName
'File Name is Valid ValidFileName = True
Exit Function
'ERROR HANDLERS InvalidFileName: 'File Name is Invalid ValidFileName = False
Pelena, а у меня не работает. При переименовывании (когда уже лежит в той папке файл с таким же названием) http://prntscr.com/jjhj7w, возникает ошибка в виде создается какой то документ с вопросом сохранения http://prntscr.com/jjhkb3
Pelena, а у меня не работает. При переименовывании (когда уже лежит в той папке файл с таким же названием) http://prntscr.com/jjhj7w, возникает ошибка в виде создается какой то документ с вопросом сохранения http://prntscr.com/jjhkb3Rama
Сообщение отредактировал Rama - Пятница, 18.05.2018, 14:30