我试图遍历工作簿中的工作表,选择名称相同的工作表,将它们保存为PDF,然后再次循环,但更改其在工作表中查找的名称。工作表的共同数字是0001
或0243
之类的4位数字,并且这四个数字很重要,因此工作表0030
和0003
不会合并在一起。
我已经获得了仅在一个名称上查找(以下)的代码,但无法弄清楚如何使它遍历更多名称。尝试使名称成为整数并在每次循环后将其添加1,非常简短地尝试使其遍历数组值,但这对我尝试的方式无效。
For Each sh In ActiveWorkbook.Worksheets
If sh.Name Like "*0001*" Then
Worksheets(sh.Name).Select (False)
ActiveSheet.ExportAsFixedFormat _
''' pdf format and save location'''
End If
Next sh
如果它可以在从0001
到0300
的每个数字之间循环,那将是理想的选择,那么我每次运行它以添加新的工作表名称时都不需要编辑代码。但是,如果数组工作得最好,我可以为文件中存在的数字制作一个长数组,并根据需要每月添加新的数字。
答案 0 :(得分:1)
您可以使用函数从选项卡名称中获取数字。看起来您只希望包含100到300的标签。如何尝试:
For Each sh In ActiveWorkbook.Worksheets
vNumName = NumOnly(sh.Name)
If vNumName >= 100 And vNumName <= 300 Then
Worksheets(sh.Name).Select (False)
ActiveSheet.ExportAsFixedFormat _
''' pdf format and save location'''
End If
Next sh
功能:
Function NumOnly(vName As String) As Integer
vOut = ""
For i = 1 To Len(vName)
If Mid(vName, i, 1) >= "0" And Mid(vName, i, 1) <= "9" Then vOut = vOut & Mid(vName, i, 1)
Next
If Len(vOut) >= 4 Then
NumOnly = vOut
Else
NumOnly = 0
End If
End Function
答案 1 :(得分:0)
我将使用类似于以下代码:
Dim s As Worksheet, t As String
Dim i As Long, K As Long
K = Sheets.Count
For i = 1 to i = K
t = Sheets(i).Name
Sheets(i).activate
' Do your activities within this loop
Next i