
お知恵を貸してください!
ExcelシートをPDF出力する、というマクロを作成しました。
通常は問題なく動くのですが、PDFの出し直しをしようとすると、同じPDFファイルが開いてるときにエラーになってしまうので、実行時にPDFファイルが開いていたら閉じる、としたいのですが構文がわかりません。
もしくは、実行時にPDFファイルが開いていたらメッセージを表示してマクロを中止する、でも構いません。
作成されるPDFのファイル名はExcelと同じファイル名+任意の名前(yyyymmdd_【任意の名前】〇〇〇)になるので予め指定することはできません。
Office365
Excel2016
Adobe Acrobat Reader DC
VBAは初心者のため色々調べましたが難しくてわかりませんでした。
解決出来る構文と、必要な参照設定など、よろしくお願いします!
No.1ベストアンサー
- 回答日時:
こんにちは
他のソフトの制御を行うのは、もともとのVBAの範囲を超えていると言えます。
>VBAは初心者のため色々調べましたが難しくてわかりませんでした。
>解決出来る構文と、必要な参照設定など、よろしくお願いします!
多分、調べたところに例示されている構文ででできるはずと思います。
(何を調べたのかは知りませんけれど・・・)
理解できないようであれば、この方法はあきらめた方が賢明かと思います。
>作成されるPDFのファイル名は~~予め指定することはできません。
マクロから出力しているのでしょうから、名前がわからないってことはないはずと思いますけれど??
名前が不明だとウィンドウの特定ができないので、PDFのウィンドウを盲滅法に閉じて回るしか方法はありません。
>同じPDFファイルが開いてるときにエラーになってしまうので
>メッセージを表示してマクロを中止する、でも構いません。
こちらであれば、通常のマクロの範囲で処理できるでしょう。
On Error ステートメントでエラーを抽出し、Errオブジェクトを調べることでエラーの内容がわかりますので、処理を分ければよろしいでしょう。
https://docs.microsoft.com/ja-jp/office/vba/lang …
https://docs.microsoft.com/ja-jp/office/vba/lang …
まったく別の方法になりますが、PDF出力時に「PDFを開かない」設定にしておくのが一番簡単な解決方法ではないかと思います。
PDFの「印刷設定」で、「結果のAdobe PDFを表示」のチェックをはずすだけで済みますので。
PDFの制御が難しいということすらわかっていなかったのでありがとうございました。
on error gotoで解決させることになりましたのでベストアンサーに選ばせて頂きました。
ご丁寧にありがとうございました。
No.2
- 回答日時:
以前、VBスクリプトでこの手法を利用していたのを思い出しました。
EXCEL VBAのご質問ですが、WORDのVBAを呼んで、Acrobatのタスクを閉じてしまうという、「EXCELのVABじゃない! 」「邪道だ!」といわれそうな手法です。
Sub adobe_kill()
Dim Wdapp As Object
Dim task As Object
Dim Flag As Integer
Set Wdapp = CreateObject("Word.Application")
Flag = 0
For Each task In Wdapp.Tasks
If task.Visible = True And InStr(task.Name, "Adobe Acrobat Reader DC") > 0 Then
Flag = 1
If MsgBox(task.Name & vbCrLf & "を終了させますか?", 36) = vbYes Then
task.Close
End If
End If
Next
If Flag = 0 Then MsgBox ("Adobe Acrobat Readerは起動していません")
Wdapp.Quit
Set Wdapp = Nothing
End Sub
上記のVBAサブルーチンを現在利用中のVBAに組み込んでおお使いください。
ソースまで書いてくださりありがとうございました!
今回はONERROR GOTOで解決することになりました。
PDFの制御が難しいということだったので、それでも実行できるソースは大変参考になります!
ありがとうございます!
今回は使わなかったものの試してみたのですが「別のプログラムでのOLEの操作が完了するまで待機します。」と出てしまい直ぐに解決出来なさそうだったので時間が出来た時に改めて色々試してみようと思います。
とても勉強になりました。
ご丁寧にどうもありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
PDFファイルを開き、印刷し、閉じるマクロ
Visual Basic(VBA)
-
VBA PDFファイル印刷後のAcrobatReaderDCの起動画面を閉じたい
Excel(エクセル)
-
Adobe Reader を閉じる
その他(Microsoft Office)
-
-
4
VBAにてEXCEL以外のファイル(テキストなど)がすでに開いているかの確認方法
Visual Basic(VBA)
-
5
EXCEL ページを指定してPDF出力するVBAを教えてください。
PDF
-
6
PDFファイルを開かずに印刷したい
Visual Basic(VBA)
-
7
PDFファイルを印刷後、自動でファイルが閉じる方法を教えてください。
その他(ソフトウェア)
-
8
PDFファイルをコピーしてエクセルブックにはりつけるVBA
Excel(エクセル)
-
9
VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません
Visual Basic(VBA)
-
10
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
11
vbaでpdfを開いて1ページ目のみ印刷する。
PDF
-
12
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
13
VBAでホルダー内のPDFを一括印刷したい
Excel(エクセル)
-
14
【VBA】PDF出力に任意のファイル名前を付ける方法
Excel(エクセル)
-
15
vbaから他のアプリを終了
Visual Basic(VBA)
-
16
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
17
VBAでPDFを作成する際、同じ名前のデータがすでにある時の対処法を教えてください。
Microsoft ASP
-
18
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
19
【Excel VBA】PDFを作成して,指定したフォルダに保存するコードについて
その他(Microsoft Office)
-
20
印刷ダイアログを表示させない方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
一つのTeratermのマクロで複数...
-
TERA TERMを隠す方法
-
エクセルに張り付けた写真のフ...
-
ファイルが見つからない時、ス...
-
ExcelのVBA。public変数の値が...
-
ダブルクリックで貼り付けた画...
-
【Excel】複数のマクロをまとめ...
-
IF関数を使ってマクロを実行さ...
-
Excel_マクロ_現在開いているシ...
-
エクセルで別のセルにあるふり...
-
特定文字のある行の前に空白行...
-
エクセルで縦に並んだデータを...
-
マクロ実行時エラー
-
【EXCEL VBA】オートシェイプを...
-
Excelのセル値に基づいて図形の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
Excel_マクロ_現在開いているシ...
-
一つのTeratermのマクロで複数...
-
マクロの連続印刷が突然不可能...
-
ExcelのVBA。public変数の値が...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
エクセルに張り付けた写真のフ...
-
Excelのセル値に基づいて図形の...
-
TERA TERMを隠す方法
-
マクロ実行時エラー
-
ExcelVBAでPDFを閉じるソース
-
wordを起動した際に特定のペー...
-
特定文字のある行の前に空白行...
-
Excel マクロでShearePoint先の...
-
エクセルで縦に並んだデータを...
-
マクロ実行時、ユーザーフォー...
-
ソース内の行末に\\
おすすめ情報