作者: fanendor 時間: 2016-5-12 12:52 標題: Excel vba export multiple sheets with criteria
假如excel中有好多張sheets, 而我只想將字頭為"Template"的sheets匯出為一個PDF,咁個vba應該點寫?
謝謝!
作者: lamsir 時間: 2016-5-12 23:44
[quote]假如excel中有好多張sheets, 而我只想將字頭為"Template"的sheets匯出為一個PDF,咁個vba應該點寫?
謝謝! ...
fanendor 發表於 2016-5-12 12:52
可以用以下的 code
- Sub ExportToPDF()
- Dim sheetname() As String
- Dim target As New Collection
- Dim ns As Integer, i As Integer
-
- ns = Worksheets.Count
-
- For i = 1 To ns
- If Left(Sheets(i).Name, 8) = "Template" Then
- target.Add Sheets(i).Name
- End If
- Next i
-
- ReDim sheetname(1 To target.Count) As String
- For i = 1 To target.Count
- sheetname(i) = target(i)
- Next i
-
- ActiveWorkbook.Sheets(sheetname).Select
- ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\Output.pdf" _
- , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
- :=False, OpenAfterPublish:=True
- End Sub
作者: kchouse 時間: 2016-5-13 09:34
[quote]假如excel中有好多張sheets, 而我只想將字頭為"Template"的sheets匯出為一個PDF,咁個vba應該點寫?
...
lamsir 發表於 2016-5-12 23:44
多謝分享
作者: fanendor 時間: 2016-5-13 11:58
回覆 2# lamsir
It works! Thank you lamsir!
作者: lamsir 時間: 2016-5-13 12:14
回覆 4# fanendor
You are welcome
作者: big_nature 時間: 2016-5-13 16:32
回覆 2# lamsir
請教師兄,
我個Excel有1-12月,
每個月都有9張sheets,
我係用copy and paste.
然後改月份
譬如161010>>161101(由10月改為11月)
如果用VBA應該點寫呢!?
https://h2.hkepc.com/forum/attachment.php?aid=1888781&k=33e6b3e0652e40cc241859521b188291&t=1781963332&sid=38cbZ5GDmj

作者: lamsir 時間: 2016-5-13 20:00
回覆 lamsir
請教師兄,
我個Excel有1-12月,
每個月都有9張sheets,
我係用copy and paste.
然後 ...
big_nature 發表於 2016-5-13 16:32
假設你所有工作表資料來自 "工作表1"
- Sub CopySheets()
- Dim year As Integer
- Dim month As Integer
- Dim serial As Integer
- Dim sourceSheetName As String
-
- year = 16
- sourceSheetName = "工作表1"
-
- For month = 1 To 12
- For serial = 1 To 9
- If month < 10 Then
- sheetname = year & "0" & month & "0" & serial
- Else
- sheetname = year & month & "0" & serial
- End If
-
- Sheets(sourceSheetName).Select
- Sheets(sourceSheetName).Copy After:=Sheets(Sheets.Count)
-
- On Error Resume Next
- Sheets(sourceSheetName & " (2)").Select
- Sheets(sourceSheetName & " (2)").Name = sheetname
- On Error GoTo 0
-
- Next serial
- Next month
- End Sub
作者: big_nature 時間: 2016-5-13 20:25
回覆 7# lamsir
多謝晒師兄指教!
如果我係英文版excel,
工作表1>>sheet1
其他語法大致上都明!
作者: big_nature 時間: 2016-5-13 20:29
再請問下,
是否每開一張sheet 都行呢份macro!?
還是一行marco就有12個月,每月都有9張sheet!?
作者: lamsir 時間: 2016-5-13 20:37
回覆 9# big_nature
英文版excel,
工作表1>>Sheet1
一行Marco就有12個月,每月有9張Sheet
作者: big_nature 時間: 2016-5-13 20:50
回覆 10# lamsir
good are!
師兄marco真係好通!
作者: big_nature 時間: 2016-5-13 20:53
好耐冇玩excel marco,
唔記得點放尼段語法放入去!?


