質問: True '確認メッセージを有効化します。 End Sub ``` ただ現状タイトルにも記載して重複で申し訳ないんですが、 複数シートがあるファイルをPDF出力する際シートが一つしか出力されないものと全て出力されるものと分かれてしまい その原因がどこにあるのかわからず困っております。 調べ方であったり、ここの記述がおかしい!など手掛かりになるヒント、アドバイスを頂けると幸いです。 宜しくお願い致します。 参考記事:https://ateitexe.com/excel-vba-sheets-to-merge-pdf/ OS:macOS Catalina バージョン10.15.3 Excelバージョン: Microsoft Excel for Mac バージョン16.39
回答: Worksheets(ArrayShName).Select の後に、 Stop と書いて一次停止し、 意図したシートがちゃんと選択できているか 確認してみてください。 あと、コツとしては、 単一ブックで試してみることです。 繰り返すことはコンピューターは得意ですので、 とりあえず、1つだけで試す。 上手くいきそうなら3つで試す。 その後は10個でやってみる。 その中で、うまくいくファイルとそうでないファイルの違いを 探してみてください。 追記 Stopで止めたとき、 ローカルウィンドウの ArrayShNameの中身を確認してください。 変数名の左に「+」があると思うので、それをクリックで中身が展開できます。 とりあえず、 新規ブックに以下のコードを記入し、 その後テストしたいファイルを開いた後、 コードを実行してみてください。 ``` Option Explicit Sub test() Dim wb As Workbook Set wb = Workbooks(Workbooks.Count) '最後に開いたブックの取得 If MsgBox(wb.Name & "を操作します。", vbYesNo) = vbNo Then Exit Sub Dim v() As String Dim ws As Worksheet Dim i As Long, j As Long ReDim v(wb.Worksheets.Count) For i = 1 To wb.Worksheets.Count Set ws = Worksheets(i) If ws.Name <> "DB" Then v(j) = ws.Name j = j + 1 End If Next If j > 1 Then ReDim Preserve v(j - 1) Debug.Print Join(v, ",") wb.Activate wb.Worksheets(v).Select End If End Sub ``` 動作確認は、 ステップインで、一行づつ実行しながら、 ローカルウィンドウで変数の中身が意図するものになっているか 確認しながら、最終的にはシートを選択するのですから、 意図した結果が、画面上に反映されているか確認してください。 やみくもに、本番コードに追記していっても、 時間がかかるばっかりかと思いますよ。 まずは、ひとつづテーマを絞って解決していって、 自信が出来たら、本番コードに追加していってみては? 参考>> プロパティ、メソッドの探り方 マクロ記録とF1のHelpを使う