我正在寻找一个 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
在此:
ActiveWorkbook.SaveAs Filename:=sFilename, FileFormat:= _
wdFormatXMLDocument, [etc etc etc]
wdFormatXMLDocument 是 Word 常量。它仅在 Word 中定义。我不知道其他常量,但尝试在保存 Excel 文件时录制宏,其中包含所需的选项。
这可能会起到作用:
ActiveWorkbook.SaveAs Filename:=sFilename, _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False