1

Я ищу решение VBA для одновременного выполнения задач, таких как переименование активного файла, выбор папки для сохранения переименованного файла и удаление старой версии файла. Диалог "Сохранить как" допускает первые две части этого требования, но не удаляет ex. файл.

Хорошее решение этой проблемы опубликовал Оливер Зальцбург, который также является участником этого форума и размещен здесь. Однако этот код работает только для Microsoft Word. Я пытался использовать Microsoft Excel с небольшими изменениями (ActiveDocument для ActiveWorkbook), предназначенными для Excel, но все еще не работает в Excel. Код Оливера Зальцбурга VBA с незначительными изменениями приведен ниже

   Sub MacroXL()
' Store original name
Dim sOriginalName As String
sOriginalName = ActiveWorkbook.FullName

' Save As
Dim sFilename As String, fDialog As FileDialog, ret As Long
Set fDialog = Application.FileDialog(msoFileDialogSaveAs)
ret = fDialog.Show
If ret <> 0 Then
    sFilename = fDialog.SelectedItems(1)
Else
    Exit Sub
End If
Set fDialog = Nothing

' Don't replace the original file
If sFilename = sOriginalName Then Exit Sub

 ActiveWorkbook.SaveAs2 Filename:=sFilename, FileFormat:= _
    wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
    :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
    :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
    SaveAsAOCELetter:=False, CompatibilityMode:=14

' Delete original
Kill sOriginalName
End Sub

При отладке ошибка отображается как прикрепленная:

В этом месте:

  ActiveWorkbook.SaveAs Filename:=sFilename, FileFormat:= _
    wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
    :=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
    :=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
    SaveAsAOCELetter:=False, CompatibilityMode:=14

Надеюсь, что @Oliver Salzburg или кто-то с навыками VBA сможет решить вышеуказанную небольшую проблему. Заранее спасибо.

1 ответ1

0

В этом:

ActiveWorkbook.SaveAs Filename:=sFilename, FileFormat:= _
    wdFormatXMLDocument, [etc etc etc]

wdFormatXMLDocument является константой Word. Это определено только в Word. Я не знаю о других константах, но попробуйте записать макрос, пока вы сохраняете файл Excel с нужными вам опциями.

Это может сделать работу:

ActiveWorkbook.SaveAs Filename:=sFilename, _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .