Board logo

標題: [發問] 一個工作表按條件存為不同PDF [打印本頁]

作者: missbb    時間: 2015-7-27 20:10     標題: 一個工作表按條件存為不同PDF

[attach]21538[/attach]

有一個出勤表內有不同分店員工出勤資料, 求教如何以VBA按條件SAVE為以分店名為名的PDF.
現時要每個分店選定範圍才SAVE PDF, 非常慢及浪費時間.
有勞協助!:L :'(
作者: missbb    時間: 2015-7-28 22:45

[attach]21552[/attach]回復 1# missbb


我可以將SHOP A及SHOP B進行篩選, 但是不知如何:
1)將A, B等SHOP成為變數, 再以迴圈完成, 因為其實有30 SHOP, 要設立ARRAY(1,2,3.....30)嗎?
2) 如何可以一次過經將不同SHOP獨立存為成30個PDF呢?

已看了書但確實領會不了, 求教!:'(
作者: Hsieh    時間: 2015-7-30 23:15

回復 2# missbb
2007版是否已有另存成PDF檔功能?
以下在2010版本可行
  1. Sub ex()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. With ActiveSheet
  4. For Each a In .Range(.[E4], .[E4].End(xlDown))
  5.   d(a.Value) = ""         '取得所有不重複分店
  6. Next
  7. For Each ky In d.keys
  8.      .Range("B4").AutoFilter field:=4, Criteria1:=ky
  9.      If Dir("D:\" & ky & ".pdf") <> "" Then Kill "D:\" & ky & ".pdf"  '同名檔案刪除
  10.      .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  11.         "D:\" & ky & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
  12.         IgnorePrintAreas:=False, OpenAfterPublish:=True  '另存成PDF檔案
  13. Next
  14. If .FilterMode = True Then .ShowAllData '顯示所有資料
  15. End With
  16. End Sub
複製代碼

作者: missbb    時間: 2015-8-1 08:57

本帖最後由 missbb 於 2015-8-1 09:08 編輯

回復 3# Hsieh


多謝回覆, 已可以將A分店及B分店變成PDF, 但每個PDF有114頁, 因為向下的空白列都一併變成了PDF.
1)請問如何可以去除A分店的空白列?
2) 另如何可以調整成一頁, 直向A4呢? (另附件)[attach]21599[/attach]
3)有沒有在PDF插入指定電連結的方法?

有勞:'( [attach]21598[/attach][attach]21598[/attach]
作者: missbb    時間: 2015-8-1 09:14

回復 4# missbb 3

另外, 想將檔名變為A 201507, 改了下面的碼, 但檔名仍然是A, 為甚麼呢?

    If Dir("D:\" & ky & "201507" & ".pdf") <> "" Then Kill "D:\" & ky & "201507" & ".pdf" '同名檔案刪除
     .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
作者: missbb    時間: 2015-8-1 23:39

回復 3# Hsieh

有勞再協助!
作者: starry1314    時間: 2015-8-2 09:25

回復 5# missbb


         If Dir("D:\" & ky & "201507.pdf") <> "" Then Kill "D:\" & ky & "201507.pdf"  '同名檔案刪除
     .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

        "D:\" & ky & "201507.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=True  '另存成PDF檔案
Next
作者: missbb    時間: 2015-8-2 12:02

回復 7# starry1314

你好, 但我加入了新程式碼, 仍然有問題, 可幫忙看看嗎?

[attach]21621[/attach]
作者: starry1314    時間: 2015-8-2 12:13

回復 8# missbb
  1. Sub ex()
  2. Set d = CreateObject("Scripting.Dictionary")
  3. With ActiveSheet
  4. For Each a In .Range(.[E4], .[E4].End(xlDown))
  5.   d(a.Value) = ""         '取得所有不重複分店
  6. Next
  7. For Each ky In d.keys
  8.      .Range("B4").AutoFilter field:=4, Criteria1:=ky
  9.      If Dir("D:\" & ky & "201507.pdf") <> "" Then Kill "D:\" & ky & "201507.pdf"  '同名檔案刪除
  10.      .ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  11.         "D:\" & ky & "201507.pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
  12.         IgnorePrintAreas:=False, OpenAfterPublish:=True  '另存成PDF檔案
  13. Next
  14. If .FilterMode = True Then .ShowAllData '顯示所有資料
  15. End With
  16. End Sub
複製代碼

作者: missbb    時間: 2015-8-2 12:28

回復 9# starry1314 1

感謝, 但問題是一轉PDF就是113頁, 是選定範圍的問題嗎?
另如何設定邊界?是在轉之前做好了設定才轉或是在VBA碼內設定?

[attach]21622[/attach]
作者: starry1314    時間: 2015-8-2 13:05

回復 10# missbb


    先在EXCEL設定好比較快,上方 【版面配置】可調整
作者: missbb    時間: 2015-8-2 13:32

回復 11# starry1314


    成功, 多謝!:'(
作者: missbb    時間: 2015-8-4 14:06

各位,有新問題, 因想另設一個輸入的選擇, 已定如下, 如有兩個問題未做到:
(1)  以SHOP2 輸入A, 另F輸入"201507", 想PDF FILE會轉為"A 201507".PFD但出現錯誤
(2) 在轉PDF後, 如何返回EXCEL, 因為要將每個PDF逐個關閉.

Sub in_box2()
'
Dim shop2 As String
Dim f As String

'
    shop2 = InputBox("Enter your shop code")
    f = InputBox("Enter month of the report")
    Range("B4").AutoFilter Field:=4, Criteria1:=shop2
    Range("B4").CurrentRegion.Select
   
ChDir "C:\Users\Desktop\"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:= _
        "C:\Users\Desktop\" & f & "2015.pdf"), Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True
'
   
End Sub




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)