エクセルファイルからPDF出力されたファイルの画像サイズを整えたいため倍率を変えたいです。
1つのエクセルでPDFが2枚になったり3枚になって出力されてしまうところを全て一枚にまとめたいです。
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 34 'ActiveWorkbook の記述はいらなかった 35 'レポートの記述にいらないスペースがあったかも 36 Dim ws As Worksheet 37 38 On Error Resume Next 'エラー無視 39 Set ws = Worksheets("レポート") 40 On Error GoTo 0 'エラー無視解除 41 If ws Is Nothing Then '"レポート"シートが存在しなければ、 42 Worksheets(Array("表紙", "検索", "表示箇所", "行動", "順位")).Select 43 ActiveSheet.ExportAsFixedFormat _ 44 Type:=xlTypePDF, _ 45 fileName:=ExcelFilePath & ExFileName, _ 46 OpenAfterPublish:=True 47 Else 48 ws.ExportAsFixedFormat _ 49 Type:=xlTypePDF, _ 50 fileName:=ExcelFilePath & ExFileName, _ 51 OpenAfterPublish:=True 52 End If 53 54 With ws.PageSetup 55 56 .Zoom = False '倍率をクリア 57 .FitToPagesWide = 1 '横方向に1ページに収める 58 .FitToPagesTall = 1 '縦方向に1ページに収める 59 .CenterHorizontally = True '水平方向に中央配置 60 .TopMargin = Application.CentimetersToPoints(1) '上マージンを1cm 61 .BottomMargin = Application.CentimetersToPoints(1) '下マージンを1cm 62 63 End With 64 65 66 ActiveWindow.Close '読み込んだファイルを閉じます。 67 68 ExFileName = Dir() '次のファイルを指定する。 69 70 Loop 71 72 73 MsgBox "PDFファイルに一括変換しました。" 74 Else 75 MsgBox "処理を中断します" 76 End If 77 78 Application.DisplayAlerts = True '確認メッセージを有効化します。 79 80End Sub 81 82
そのために上記のように記述したところ
実行エラー91 オブジェクト変数またはWithブロック変数が設定されていません
とのエラーが出てしまいます。
文法的な誤りなのか記述箇所が間違っているのかがわからない状態で詰まっております。
どういった風に修正すれば良いかもしくは上記のコード以外に方法があればご教授頂けると幸いです。
宜しくお願い致します。
参考にした記事: https://tonari-it.com/excel-vba-pdf-saveas-close/
OS:macOS Catalina バージョン10.15.3
Excelバージョン: Microsoft Excel for Mac バージョン16.39
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/01 06:45