我是一名业余程序员,学习如何使用vba进行编程
没有进一步的到期,我的问题是:
我创建了一个列表框(listbox1),其中列出了特定工作簿中的所有工作表(ws)名称。 我还创建了另一个列表框(listbox2),当我在listbox1上选择一些工作表名称时,它们将被转移到listbox2。
我的主要目标是通过选择列表框2中列出的一个或多个工作表,并通过单击按钮,我将设法将所有选定的工作表保存在一个pdf文件中。
这里是用于导出我编写的pdf文件的按钮的代码,但我只是设法导出它们不是在一个pdf文件中,而是在大量的pdf文件中。
Dim NomTableau() As String
For Each WkbkName In application.Workbooks()
If WkbkName.Name = choix_poteau.Value & "_" & section & "_" & projet & ".xlsx" Then
WkbkName.Activate
GoTo lois
End If
Next
Set wbk = Workbooks.Open(add1 & "\" & Me.projet.Value & "\" & Me.section.Value & "\poteaux\" & Me.choix_poteau.Value & "_" & Me.section & "_" & Me.projet & ".xlsx")
lois:
For i = 0 To ListBox2.ListCount - 1
While ListBox2.List(i) <> ""
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name = ListBox2.List(i) Then
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Export\Resultats__" & ListBox2.List(i - counter) & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End If
Next
Wend
Next i
End Sub
非常感谢,非常感谢您的帮助
答案 0 :(得分:0)
不是单独导出每个工作表,而是先选择它们,然后调用ExportAsFixedFormat
方法。
这是我的测试代码,按预期工作:
Option Explicit
Private Sub TestPDF()
Dim i As Integer
Dim arrSheets() As String
Dim strSheets As String
'Get our sheet names
For i = 1 To 3
strSheets = Worksheets(i).Name & "," & strSheets
Next
'Trim the trailing comma
strSheets = Left(strSheets, Len(strSheets) - 1)
arrSheets = Split(strSheets, ",")
ThisWorkbook.Sheets(arrSheets).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\qzbcjs\Documents\Useful Workbooks\test.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub
我声明了一个字符串数组,用逗号分隔的工作表名称填充了一个字符串变量(在我的例子中我只想要第一个到第三个表),将逗号分隔的字符串拆分成一个数组并使用数组选择所有需要的工作表,只调用一次ExportAsFixedFormat
方法。
将此方法改编为您的代码,从lois
部分开始看起来像这样:
lois:
Dim ws As Worksheet
Dim arrSheets() As String
Dim strWs As String
For i = 0 To ListBox2.ListCount - 1
While ListBox2.List(i) <> ""
For Each ws In Worksheets
If ws.Name = ListBox2.List(i) Then
strWs = ws.Name & "," & strWs
End If
Next
Wend
Next i
strWs = Left(strWs, Len(strWs) - 1)
arrSheets = Split(strWs, ",")
ThisWorkbook.Sheets(arrSheets).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Export\Resultats__" & ListBox2.List(i - counter) & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True