是否可以遍历工作表并创建字符串?

时间:2019-10-28 17:57:15

标签: excel vba

所以我正在创建一个宏,该宏将从下拉列表的选项中准备“临时文件”中的所有数据,然后以PDF打印。

在最后一部分遇到麻烦时,我想创建一个循环,该循环将循环所有工作表,并为每个工作表的所有示例提供一个字符串,并在第4个首字母为Temp。

这是我拥有的代码:

Set DV_Cell = Range("C5")

    ExcelPath = ThisWorkbook.Path

'Set range as the List for the dropdown list
    Set rgDV = ThisWorkbook.Worksheets("Sheet1").Range("S16:S23")

'Loop that changes the value of the C5 then copys the data
    For Each cell In rgDV.Cells
        DV_Cell.Value = cell.Value

        Sheets.Add.Name = "Temp" & DV_Cell.Value
        SheetName = ActiveSheet.Name
        ThisWorkbook.Worksheets("Sheet2").Cells.Copy
        ThisWorkbook.Worksheets(SheetName).Paste
    Next

        ThisWorkbook.Worksheets("Temp").ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=ExcelPath & DV_Cell.Value, _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=False, _
            IgnorePrintAreas:=False, _
            OpenAfterPublish:=False

这是我必须删除Temp文件的代码,可能与获取该字符串所需的内容相似:

For Each Sheet In ThisWorkbook.Worksheets

    StrS = Sheet.Name
     If Left(StrS, 4) = "Temp" Then
          Sheet.Delete
     End If

Next Sheet

1 个答案:

答案 0 :(得分:0)

创建所有临时表后,将按字母顺序对其进行排序。然后,它将循环浏览工作簿中的所有工作表,并选择前四个字母为“临时”的工作表。全部选中后,它将立即全部打印到PDF文件。

'Order worksheets alphabetically so they print in order
Dim x As Integer, y As Integer
For x = 1 To Worksheets.Count
    For y = x To Worksheets.Count
        If UCase(Sheets(y).Name) < UCase(Sheets(x).Name) Then
            Sheets(y).Move before:=Sheets(x)
        End If
    Next
Next

Dim ws As Worksheet

Dim replaceSelection As Boolean
replaceSelection = True

For Each ws In ThisWorkbook.Sheets
    If Left(ws.Name, 4) = "Temp" Then
        'This allows for selecting multiple sheets
        ws.Select Replace:=replaceSelection
        replaceSelection = False
    End If
Next ws

'Once all the Temp sheets have been selected you can print all at once to a PDF.
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=excelpath & "\TempSheets.pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=False, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

希望这就是您想要的。祝您项目顺利!