所以我正在创建一个宏,该宏将从下拉列表的选项中准备“临时文件”中的所有数据,然后以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
答案 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
希望这就是您想要的。祝您项目顺利!