excel - 尝试重命名工作表时星号不起作用
问题描述
我正在尝试整理几个工作簿,这些工作簿都有一个从“2020”年开始的主工作表
我想简单地遍历每个工作簿并更改名称,但以下代码不起作用:
Sheets("2020-*").Name = "MAIN"
但是,以下代码确实有效:
Sheets("2020-07-01 11.05.04").Name = "MAIN"
这是完整的代码:
Sub dTa_dTb_fix()
'
' dTa_dTb_fix Macro
Dim FolderPath As String, path As String, count As Integer
FolderPath = "C:\Data_Analysis\7-Pass_EVAP"
path = FolderPath & "\2020-*.xlsx"
Filename = Dir(path)
Workbooks.Open (FolderPath & "\Combined_7.xlsx")
count = 2
Application.ScreenUpdating = False
Do While Filename <> ""
Set ClosedBook = Workbooks.Open(Filename)
Sheets("2020-*").Name = "MAIN"
Worksheets("MAIN").ListObjects("Table1").ListColumns("dTa").DataBodyRange.FormulaR1C1 = "=ABS(AVERAGE([@[EVAPORATOR PAO OUTLET TEMP °C]]-[@[EVAPORATOR PAO INLET TEMP °C]])-[@[CONDENSER PAO INLET TEMP °C ]])"
Worksheets("MAIN").ListObjects("Table1").ListColumns("dTb").DataBodyRange.FormulaR1C1 = "=ABS(AVERAGE([@[EVAPORATOR PAO INLET TEMP °C]]-[@[EVAPORATOR PAO OUTLET TEMP °C]])-[@[CONDENSER PAO OUTLET TEMP °C ]])"
ClosedBook.Close SaveChanges:=False
Filename = Dir()
count = count + 1
Loop
Application.ScreenUpdating = True
End Sub
有人可以帮忙吗?
解决方案
根据问题修订进行编辑。
添加InStr()
以搜索条件的ActiveWorkbook.Worksheets(I).Name
内容2020-
。
InStr 参数
InStr VBA 函数接受 4 个参数,其中 2 个是可选的:
InStr([Start], MainString, SubString, [Compare As VbCompareMethod])
src:https ://wellsr.com/vba/2016/excel/use-vba-instr-to-test-if-string-contains-substring/
(未经测试)
Sub WorksheetLoop()
Dim WS_Count As Integer
Dim I As Integer
Dim FolderPath As String, path As String, count As Integer
Application.ScreenUpdating = False
' not needed if FolderPath is a constant
FolderPath = "C:\Data_Analysis\7-Pass_EVAP"
Workbooks.Open (FolderPath & "\Combined_7.xlsx")
' you could just use this
Workbooks.Open ("C:\Data_Analysis\7-Pass_EVAP\Combined_7.xlsx")
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
If InStr(1, ActiveWorkbook.Worksheets(I).Name , "2020-") <> 0 Then
ActiveWorksheet.Name = "MAIN"
Worksheets("MAIN").ListObjects("Table1").ListColumns("dTa").DataBodyRange.FormulaR1C1 = "=ABS(AVERAGE([@[EVAPORATOR PAO OUTLET TEMP °C]]-[@[EVAPORATOR PAO INLET TEMP °C]])-[@[CONDENSER PAO INLET TEMP °C ]])"
Worksheets("MAIN").ListObjects("Table1").ListColumns("dTb").DataBodyRange.FormulaR1C1 = "=ABS(AVERAGE([@[EVAPORATOR PAO INLET TEMP °C]]-[@[EVAPORATOR PAO OUTLET TEMP °C]])-[@[CONDENSER PAO OUTLET TEMP °C ]])"
End If
Next I
ClosedBook.Close SaveChanges:=False
Application.ScreenUpdating = True
End Sub
推荐阅读
- python - 合并字典
- laravel - Laravel - 无法在谷歌云上运行迁移
- wpf - 智能感知 wpf 中未显示的资源
- java - Android Material CalendarView 选定日期背景半径
- javascript - 从事件获取文件时,打字稿对象可能为空
- c# - 如何删除单词中的空格?(itextSharp, PdfReader, C#, ASP.NET)
- python - 找不到满足 gcc7 要求的版本(来自版本:)
- sass - Sass 没有检测到使用过的文件 @use 所做的更改
- python - 蟒蛇ujson。错误:无法为使用 PEP 517 且无法直接安装的 ujson 构建轮子
- javascript - 为什么这段代码使用模板字符串来链接查询选择器?