Excel vba export multiple sheets with criteria

假如excel中有好多張sheets, 而我只想將字頭為"Template"的sheets匯出為一個PDF,咁個vba應該點寫?

謝謝!

[quote]假如excel中有好多張sheets, 而我只想將字頭為"Template"的sheets匯出為一個PDF,咁個vba應該點寫?

謝謝! ...
fanendor 發表於 2016-5-12 12:52

可以用以下的 code

  1. Sub ExportToPDF()
  2.     Dim sheetname() As String
  3.     Dim target As New Collection
  4.     Dim ns As Integer, i As Integer
  5.    
  6.     ns = Worksheets.Count
  7.    
  8.     For i = 1 To ns
  9.         If Left(Sheets(i).Name, 8) = "Template" Then
  10.             target.Add Sheets(i).Name
  11.         End If
  12.     Next i
  13.    
  14.     ReDim sheetname(1 To target.Count) As String
  15.     For i = 1 To target.Count
  16.         sheetname(i) = target(i)
  17.     Next i
  18.    
  19.     ActiveWorkbook.Sheets(sheetname).Select

  20.     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\Output.pdf" _
  21.         , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
  22.         :=False, OpenAfterPublish:=True
  23. End Sub
複製代碼

TOP

[quote]假如excel中有好多張sheets, 而我只想將字頭為"Template"的sheets匯出為一個PDF,咁個vba應該點寫?

...
lamsir 發表於 2016-5-12 23:44


多謝分享

TOP

回覆 2# lamsir


It works! Thank you lamsir!

TOP

回覆 4# fanendor

You are welcome

TOP

回覆 2# lamsir

請教師兄,
我個Excel有1-12月,
每個月都有9張sheets,

我係用copy and paste.
然後改月份
譬如161010>>161101(由10月改為11月)
如果用VBA應該點寫呢!?

month.jpg
2016-5-13 16:33

TOP

回覆  lamsir

請教師兄,
我個Excel有1-12月,
每個月都有9張sheets,

我係用copy and paste.
然後 ...
big_nature 發表於 2016-5-13 16:32


假設你所有工作表資料來自 "工作表1"

  1. Sub CopySheets()
  2.     Dim year As Integer
  3.     Dim month As Integer
  4.     Dim serial As Integer
  5.     Dim sourceSheetName As String
  6.    
  7.     year = 16
  8.     sourceSheetName = "工作表1"
  9.    
  10.     For month = 1 To 12
  11.         For serial = 1 To 9
  12.             If month < 10 Then
  13.                 sheetname = year & "0" & month & "0" & serial
  14.             Else
  15.                 sheetname = year & month & "0" & serial
  16.             End If
  17.             
  18.             Sheets(sourceSheetName).Select
  19.             Sheets(sourceSheetName).Copy After:=Sheets(Sheets.Count)
  20.             
  21.             On Error Resume Next
  22.             Sheets(sourceSheetName & " (2)").Select
  23.             Sheets(sourceSheetName & " (2)").Name = sheetname
  24.             On Error GoTo 0
  25.             
  26.         Next serial
  27.     Next month
  28. End Sub
複製代碼

TOP

回覆 7# lamsir

多謝晒師兄指教!

如果我係英文版excel,
工作表1>>sheet1
其他語法大致上都明!

TOP

再請問下,
是否每開一張sheet 都行呢份macro!?
還是一行marco就有12個月,每月都有9張sheet!?

TOP

回覆 9# big_nature

英文版excel,
工作表1>>Sheet1

一行Marco就有12個月,每月有9張Sheet

TOP