Excel VBA重命名文件保存错误的文件类型
此脚本应进入一个包含excel文件的文件夹,按作者姓名重命名文件,并将其保存到新文件夹中 但是,这现在不会将文件保存为excel文档,而是文件类型也是作者姓名和计数 我已根据建议的注释编辑了代码,但现在收到以下错误: 我把代码编辑错了吗Excel VBA重命名文件保存错误的文件类型,excel,vba,Excel,Vba,此脚本应进入一个包含excel文件的文件夹,按作者姓名重命名文件,并将其保存到新文件夹中 但是,这现在不会将文件保存为excel文档,而是文件类型也是作者姓名和计数 我已根据建议的注释编辑了代码,但现在收到以下错误: 我把代码编辑错了吗 Sub RenameExcelFilesbyAuthor() Dim wb As Workbook Dim myPath As String Dim myFile As String Dim myExtension As String Dim Fl
Sub RenameExcelFilesbyAuthor()
Dim wb As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim FldrPicker As FileDialog
Dim Counter As Integer
'Optimize Macro Speed
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.DisplayAlerts = False
Application.CalculateBeforeSave = False
Application.AskToUpdateLinks = False
'Retrieve Target Folder Path From User
Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
With FldrPicker
.Title = "C:\Users\Name\Documents\Excel Folder"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo NextCode
myPath = .SelectedItems(1) & "\"
End With
'In Case of Cancel
NextCode:
myPath = myPath
If myPath = "" Then GoTo ResetSettings
'Target File Extension (must include wildcard "*")
myExtension = "*.xlsx*"
'Target Path with Ending Extention
myFile = Dir(myPath & myExtension)
Counter = 1
'Loop through each Excel file in folder
Do While myFile <> ""
'ReadOnly = False
Set wb = Nothing
On Error Resume Next
'Set variable equal to opened workbook
Set wb = Workbooks.Open(Filename:=myPath & myFile)
On Error GoTo 0
If wb Is Nothing Then
On Error Resume Next
wb.Close
Else
Counter = Counter + 1
'Ensure Workbook has opened before moving on to next line of code
DoEvents
'Change First Worksheet's Background Fill Blue
ThisWorkbook.BuiltinDocumentProperties("Author") = Author
wb.SaveAs Filename:="C:\Users\max\Documents\New folder\" & wb.BuiltinDocumentProperties("Author") & Counter & myExtension, FileFormat:=xlWorkbookDefault
'Save and Close Workbook
wb.Close SaveChanges:=True
'Ensure Workbook has closed before moving on to next line of code
DoEvents
End If
'Get next file name
myFile = Dir
Loop
'Message Box when tasks are completed
MsgBox "Task Complete!"
ResetSettings:
'Reset Macro Optimization Settings
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
[1]: https://i.stack.imgur.com/XVPT1.png
子重命名Excelfilesbyauther()
将wb设置为工作簿
将myPath设置为字符串
将myFile设置为字符串
Dim myExtension作为字符串
Dim FldrPicker As FILE对话框
作为整数的Dim计数器
'优化宏速度
Application.ScreenUpdating=False
Application.EnableEvents=False
Application.Calculation=xlCalculationManual
Application.DisplayAlerts=False
Application.CalculateBeforeSave=False
Application.AskToUpdateLinks=False
'从用户检索目标文件夹路径
Set FldrPicker=Application.FileDialog(msoFileDialogFolderPicker)
用FldrPicker
.Title=“C:\Users\Name\Documents\Excel文件夹”
.AllowMultiSelect=False
如果.Show-1,则转到下一个代码
myPath=.SelectedItems(1)和“\”
以
"如果取消,
下一个代码:
myPath=myPath
如果myPath=”“,则转到重置设置
'目标文件扩展名(必须包含通配符“*”)
myExtension=“*.xlsx*”
'具有结束扩展名的目标路径
myFile=Dir(myPath&myExtension)
计数器=1
'循环浏览文件夹中的每个Excel文件
当我的文件“”时执行此操作
'ReadOnly=False
设置wb=Nothing
出错时继续下一步
'将变量设置为等于打开的工作簿
设置wb=Workbooks.Open(文件名:=myPath&myFile)
错误转到0
如果wb不算什么,那么
出错时继续下一步
wb.关闭
其他的
计数器=计数器+1
'在继续下一行代码之前,确保工作簿已打开
多芬特
'更改第一个工作表的背景填充为蓝色
ThisWorkbook.BuiltinoDocumentProperties(“作者”)=作者
wb.SaveAs文件名:=“C:\Users\max\Documents\New folder\”&wb.builtinocumentproperties(“作者”)&Counter&myExtension,文件格式:=xlWorkbookDefault
'保存并关闭工作簿
wb.Close SaveChanges:=真
'在继续下一行代码之前,确保工作簿已关闭
多芬特
如果结束
'获取下一个文件名
myFile=Dir
环
'任务完成时的消息框
MsgBox“任务完成!”
重置设置:
'重置宏优化设置
Application.EnableEvents=True
Application.Calculation=xlCalculationAutomatic
Application.ScreenUpdating=True
Application.DisplayAlerts=True
端接头
[1]: https://i.stack.imgur.com/XVPT1.png
将xlWorkbookNormal
更改为xlWorkbookDefault
并将扩展名.xlsx
连接到文件名。保存文件时,您缺少文件扩展名。我编辑了代码以反映您的两项更改,对此我非常感激,但现在出现了一个错误。原始帖子已被编辑以显示图像。知道我做错了什么吗?我想你应该调试。打印那个文件名,自己检查一下。。。确保它不会太长,没有打字错误,没有非法字符,等等。每次我把debug.print放在文件名之前,我都会收到一个错误,说我不能放在那里。我将调试打印放在哪里?将xlWorkbookNormal
更改为xlWorkbookDefault
,并将扩展名.xlsx
连接到文件名。保存文件时,您缺少文件扩展名。我编辑代码以反映您的两项更改,对此我非常感激,但现在出现了一个错误。原始帖子已被编辑以显示图像。知道我做错了什么吗?我想你应该调试。打印那个文件名,自己检查一下。。。确保它不会太长,没有打字错误,没有非法字符,等等。每次我把debug.print放在文件名之前,我都会收到一个错误,说我不能放在那里。我将把调试打印放在哪里?