使用批处理文件重命名和格式化 Excel 工作表
Posted
技术标签:
【中文标题】使用批处理文件重命名和格式化 Excel 工作表【英文标题】:Renaming and Formatting Excel worksheet with batch file 【发布时间】:2013-06-11 17:45:50 【问题描述】:是否可以创建一个批处理文件来执行以下操作?
-
重命名 Excel 文件中的单个工作表(不是 Excel 工作簿/文件本身)
对 Excel 文件应用简单格式 - 例如,对整个工作簿应用字体和字号。
谢谢
【问题讨论】:
【参考方案1】:创建两个文件:一个批处理文件和一个由批处理文件调用的 VBScript 文件。在 VBS 中操作 Excel 的工作很容易。
modder.bat
:Start
@Echo off
CScript modder.vbs
:End
modder.vbs
'launch Excel and open file
Set xlObj = CreateObject("Excel.Application")
Set xlFile = xlObj.WorkBooks.Open("c:\temp\filename.xls")
'turn off screen alerts
xlObj.Application.DisplayAlerts = False
'loop through sheets
For Each Worksheet In xlFile.Worksheets
'change sheet to desired worksheet name
If Worksheet.Name = "SheetToRename" Then
Worksheet.Name = "NewName"
End If
'change all sheets to desired font
With Worksheet.Cells.Font
.Name = "Verdana"
.Size = 12
End With
Next
'save, close, then quit
xlFile.Close True
xlObj.Quit
modder.vbs(根据要求使用 workday() 函数)
'launch Excel and open file
Set xlObj = CreateObject("Excel.Application")
Set xlFile = xlObj.WorkBooks.Open("c:\temp\filename.xls")
'turn off screen alerts
xlObj.Application.DisplayAlerts = False
'loop through sheets
For Each Worksheet In xlFile.Worksheets
'change sheet to desired worksheet name
If Worksheet.Name = "SheetToRename" Then
'get prior workday
dPriorWorkday = xlObj.Application.WorksheetFunction.WorkDay(Now, -1)
'format as necessary (I used ISO 8061)
Worksheet.Name = Year(dPriorWorkday) & "-" & Right("0" & Month(dPriorWorkday),2) & "-" & Right("0" & Day(dPriorWorkday),2)
End If
'change all sheets to desired font
With Worksheet.Cells.Font
.Name = "Verdana"
.Size = 12
End With
Next
'save, close, then quit
xlFile.Close True
xlObj.Quit
部分工作表名称的修订
If Left(Worksheet.Name,12) = "Target Sheet" Then
'get prior workday
dPriorWorkday = xlObj.Application.WorksheetFunction.WorkDay(Now, -1)
'format as necessary (I used ISO 8061)
Worksheet.Name = "Target Sheet " & Year(dPriorWorkday) & "-" & Right("0" & Month(dPriorWorkday),2) & "-" & Right("0" & Day(dPriorWorkday),2)
End If
【讨论】:
这很有帮助,谢谢!在另一个问题中,我根据前一个工作日重命名文件得到了一些帮助:***.com/questions/15011081/… 有没有一种简单的方法可以将这两者结合起来?要将工作表名称重命名为上一个工作日? 太棒了,感谢您的帮助。我明天试试这个。 我可以在“If Worksheet.Name = "SheetToRename"”部分的工作表名称中使用通配符吗? 不完全是,但您可以通过字符串比较或正则表达式来近似类似的行为。您能否给出一个确切的示例来说明您希望通配符方案如何工作? 工作表名称是固定不变的文本,后跟 YYYY-MM-DD 格式的日期。基本上,我想做的是用它来用前一个工作日日期更新工作表名称。不确定是否需要通配符(替换旧日期)。以上是关于使用批处理文件重命名和格式化 Excel 工作表的主要内容,如果未能解决你的问题,请参考以下文章
Excel VBA - 组合宏以重命名工作表和宏以在一个宏中合并工作表