フォルダ内のエクセルファイルをPDF出力するマクロを作成しました。
出力したい条件としては、シート名にDBを含むシートは除いて、すべてをPDF出力、複数シートがある場合は結合してPDF出力
と言った作業が行いたく以下のマクロを作成しました。
VBA
1 2Sub EXCELファイルPDF化03() 'フォルダのEXCELファイルの一括変換 3 4 Dim Button, T, i, L As Integer 5 Dim OpenExcelFileName, ExcelFileName, ExcelFilePath, ExFileName As String 6 7 Application.DisplayAlerts = False '確認メッセージを無効化します。 8 9 10 Button = MsgBox("EXCEファイルの一括PDF変を行いますか?", vbYesNo + vbQuestion, "確認") 11 If Button = vbYes Then 12 13 OpenExcelFileName = Application.GetOpenFilename 'ダイアログを表示取り込むフォルダーにあるファイルを選択します。 14 15 If OpenExcelFileName <> "False" Then 16 ExcelFileName = Dir(OpenExcelFileName) '指定したファイルパスからファイル名を代入します。 17 ExcelFilePath = Replace(OpenExcelFileName, ExcelFileName, "") '指定したファイルパスを指定します。(ファイルパスからファイル名を取り除く) 18 19 MsgBox ExcelFilePath & "この選択フォルダからPDFに変換します。" 20 Else 21 MsgBox "キャンセルされました" 22 Exit Sub 'キャンセルでプログラムを終了します。 23 24 End If 25 26 ExFileName = Dir(ExcelFilePath & "*.xls?") '指定したフォルダーから一件目のEXCELファイルを指定します。 27 28 29 Do While ExFileName <> "" '読み込むファイルがなくなるまで繰り返す。 30 31 Workbooks.Open fileName:=ExcelFilePath & ExFileName, ReadOnly:=True, UpdateLinks:=0 'EXCELファイルを読み取り専用で読み込む 32 ExFileName = Left(ExFileName, InStr(ExFileName, ".") - 1) ' ファイル名から拡張子を取り除く(.xls?) 33 Set wb = ActiveWorkbook 34 35 With ActiveSheet.PageSetup 36 .Zoom = False 37 .FitToPagesWide = 1 38 .FitToPagesTall = 1 39 End With 40 41 'ActiveWorkbook の記述はいらなかった 42 'レポートの記述にいらないスペースがあったかも 43 44 Dim sheet_count As Integer 45 sheet_count = Worksheets.Count 46 Dim ArrayShName() As String 47 ReDim ArrayShName(sheet_count) 48 Dim mySheet As Worksheet 49 50 On Error Resume Next 'エラー無視 51 52 Dim k As Long 53 k = 0 54 55 Dim j As Integer 56 For j = 1 To Worksheets.Count 57 If Worksheets(j).Name <> "DB" Then 58 ArrayShName(k) = Worksheets(j).Name 59 k = k + 1 60 End If 61 Next 62 63 Worksheets(ArrayShName).Select 64 ActiveSheet.ExportAsFixedFormat _ 65 Type:=xlTypePDF, _ 66 fileName:=ExcelFilePath & ExFileName, _ 67 OpenAfterPublish:=True 68 69 ActiveWindow.Close '読み込んだファイルを閉じます。 70 71 ExFileName = Dir() '次のファイルを指定する。 72 73 Loop 74 75 MsgBox "PDFファイルに一括変換しました。" 76 Else 77 MsgBox "処理を中断します" 78 End If 79 80 Application.DisplayAlerts = True '確認メッセージを有効化します。 81 82End Sub
ただ現状タイトルにも記載して重複で申し訳ないんですが、
複数シートがあるファイルをPDF出力する際シートが一つしか出力されないものと全て出力されるものと分かれてしまい
その原因がどこにあるのかわからず困っております。
調べ方であったり、ここの記述がおかしい!など手掛かりになるヒント、アドバイスを頂けると幸いです。
宜しくお願い致します。
参考記事:https://ateitexe.com/excel-vba-sheets-to-merge-pdf/
OS:macOS Catalina バージョン10.15.3
Excelバージョン: Microsoft Excel for Mac バージョン16.39
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/06 00:01
2020/08/06 01:42
2020/08/06 01:56
2020/08/06 03:27
2020/08/06 04:34
2020/08/06 08:07
2020/08/06 10:20
2020/08/06 10:41
2020/08/06 10:48
2020/08/07 03:39
2020/08/07 06:11
2020/08/07 06:19
2020/08/07 06:36
2020/08/07 06:37
2020/08/07 06:39
2020/08/07 08:06
2020/08/07 08:19
2020/08/07 08:44
2020/08/07 08:55