先日から何度も質問させて頂いている件の続きなのですが、
PDF一括出力するシートがかなりの量あることが判明致しました。
そこでシート名にDBを含むシートは除いて、すべてを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 Dim WB As Workbook 29 Dim Sh As Worksheet 'シートの変数 30 Dim ArrayShName() As String 'シート名を格納する箱(配列) 31 Dim k As Long 32 33 Set WB = Workbooks(ExFileName) 34 35 '箱の初期化 36 ReDim ArrayShName(0) 37 38 For Each Sh In WB.Worksheets 39 If Not Sh.Name Like "DB*" Then 40 '配列の内容を保持したままシート名を配列に追加する 41 ReDim Preserve ArrayShName(k) 42 ArrayShName(k) = Sh.Name 43 k = k + 1 44 End If 45 Next Sh 46 '指定した名前のシートがあるか確認 47 If ArrayShName(0) = "" Then 48 49 Exit Sub 50 End If 51 'シート名を格納した配列変数を指定してSelect 52 Worksheets(ArrayShName).Select 53 54 ActiveWindow.Close '読み込んだファイルを閉じます。 55 56 ExFileName = Dir() '次のファイルを指定する。 57 58 59 60 MsgBox "PDFファイルに一括変換しました。" 61 Else 62 MsgBox "処理を中断します" 63 End If 64 65 Application.DisplayAlerts = True '確認メッセージを有効化します。 66 67End Sub 68 69
出力したいシート数は格ファイルバラバラです。
DBと○○○があったりDB2と○○○と○○○であったりDBはなくてシートがたくさんあったり等
なのでこう言ったところをみた方が良い
もっと簡単な書き方がある等なにかこの状況を打開できるヒント等頂けると本当に嬉しいです。
度々未熟な質問をさせて頂き大変恐縮ですが宜しくお願い致します。
参考記事:https://www.moug.net/tech/exvba/0040032.html
:http://luster.fem.jp/blog/2014/08/post-7.html
OS:macOS Catalina バージョン10.15.3
Excelバージョン: Microsoft Excel for Mac バージョン16.39
「そこで指定した複数のシートDBとDB2以外のシート全てをPDF出力すると言うコードにしたく」
これでは何をしたいのか分かりません。仕様が正確に誤解なく伝わるように書いてください。
例えば、
「シート名が DB で始まるシートのうち「DB2」というシートは除いて、すべてをPDF出力したい」
とか。
ご指摘ありがとうございます!
伝わりにくく大変申し訳ありません。
修正完了しております。
シート名にDBを含むシートは除いて、すべてをPDF出力です。
エラーについては Set WB = ExFileName → Set WB = Workbooks(ExFileName) で良いような。
ご返答ありがとうございます!
確かに教えて頂いたコードを記述してみたところ質問のエラー自体はなくなりました!
ありがとうございます!
回答1件
あなたの回答
tips
プレビュー