2015-08-19 19 views
0

我是一个业余程序员学习如何使用VBA出口有一定的工作表从一个工作簿中的PDF

没有进一步应有的编程,我的问题是:

我创建了一个列表框(ListBox1中)在哪里已经将我的所有表(ws)名称列在特定的工作簿中。 我还创建了另一个列表框(listbox2),当我在列表框1上选择一些图纸名称时,它们将被转移到列表框2。

我的主要目标是通过选择listbox2中列出的一个或多个工作表,并通过单击按钮,我将设法将所有选定工作表保存在一个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

而是分别出口每张纸的,其全部选中,然后再调用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 
+0

感谢alot..it真正的工作XD – maximus

相关问题