使用批处理文件重命名和格式化 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 - 组合宏以重命名工作表和宏以在一个宏中合并工作表

excel vba复制数据范围,打开新的xlsx文件重命名表并保存

在excel中如何新建一个自己命名的工作簿?

windows dos 批量重命名文件

windows dos 批量重命名文件

文件批量重命名 如1-2 3-4 5-6