スポンサーリンク

050-VBA

EXCELのVBAを使ってPDFを開き指定のページのみを印刷する!

へっぽこヘタレシステム管理者の管理人です。

さて、昨日に引き続き・・・

ある部署からエクセルのマクロの作成を依頼され・・・

その過程で、いくつか部品を作ったので忘備録として掲載します。

スポンサーリンク

ブログランキングにご協力ください!
ブログランキング・にほんブログ村へ

EXCELのマクロを使ってPDFを開き指定のページを開く

まずは、コードです。

例では、マクロ1に割り当てています。

Sub Macro1()
'
' Macro1 Macro
'

'A列の最終行を取得

    Dim LastRow As Long         '最終行
    
    LastRow = Cells(1, 1).End(xlDown).Row 'A列の最終行を取得

'印刷繰り返し回数を指定

     Dim xClip
     Set xClip = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
     Dim P As String
     Dim i As Long
         
     For i = 2 To LastRow
    
     P = P & ActiveSheet.Cells(i, 1).Value
     If i <> LastRow Then P = P & ","
    
     Next

'pdf開く処理

     CreateObject("shell.application").shellExecute "PDFファイルをフルパスで指定"
        
    With Application
    
     .Wait Now + TimeValue("00:00:03")
     .SendKeys "^p", True	'CTRL+Pを押す
     .Wait Now + TimeValue("00:00:03")
     .SendKeys "%g", True	'ALT+Gを押す
     .Wait Now + TimeValue("00:00:03")
     .SendKeys "{TAB}"		'TABを押す
     .Wait Now + TimeValue("00:00:03")
    
     xClip.SetText P	'印刷ページをセット
    
     .Wait Now + TimeValue("00:00:03")
    
     xClip.PutInClipboard	'印刷ページをクリップボートにコピー
    
     .Wait Now + TimeValue("00:00:03")
     .SendKeys "^v", True	'CTRL+Vを押す
    
     .Wait Now + TimeValue("00:00:03")
     .SendKeys "~", True	'エンターを押す
    
     End With
    
End Sub

コードの処理は次のとおりです。

A列の2行目から印刷したいページを入力します。

A列の1行目は【ページ数】等とタイトルを付けておけば良いでしょう。

次に、A列の最終行を取得します。

次に、印刷するページ数をA列から取得します。

例えば、A列に次の様に入力されているとすると

  • A2:4
  • A3:8
  • A4:9
  • A5:15
  • A6:20

4,8,9,15,20

を【P】として取得します。

次に、PDFをフルパス指定で開きます。

PDFを開いたら

【CTRL+P】を送信

【ALT+G】を送信

【CTRL+V】で【P】にセットした印刷するページを貼り付け

最後に【ENTER】を送信

以上です。

【TimeValue(“00:00:03”)】は待ち時間の設定です。

とくに大きいサイズのPDFを開く場合は、印刷できるようになるまでに時間が掛かるので、最初の【CTRL+P】を送信するまでの時間を長めに設定するとよいでしょう・・・

ブログ開設に必要なドメイン取得、サーバーレンタル、ASPの登録等は、こちらのサイトから!

スポンサーリンク
スポンサーリンク

-050-VBA

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

EXCELのVBAを使ってDB【Oracle】に接続してSQLを叩く方法!

へっぽこヘタレシステム管理者の管理人です。 さて・・・ 長年、【Oracle】等のDBに接続してSQLを叩く場合は・・・ EXCELでのやり方が分からず・・・ ず~っとMS-ACCESSを使っていまし …

EXCELやACCESSの関数やVBA・SQL文等の忘備録まとめ!

このページでは、管理人が良く使う次のソフト MS-EXCEL(エクセル) MS-ACCESS(アクセス) Oracle(オラクル)SQL について、良く使うけれどもすぐに忘れて、何度も調べ「関数やVB …

ZOOM+Openmeetings+VideoCaptureでインターネットに接続されていないLAN環境でもWEBセミナーを受講できる

へっぽこヘタレシステム管理者の管理人です。 さて・・・ コロナ禍のせいで、なんでもかんでもZOOM等のWEB会議ソフトを使って、会議や講習会が開催され、その度に準備に呼ばれる面倒な日々を送っております …

Accessでユーザー定義関数を作る!基本はエクセルの場合と同じ方法でOK!

エクセル【EXCEL】でユーザー定義関数は、よく使いますが・・・ そういえば、アクセス【ACCESS】では、使った事がないなと思い・・・ 作り方を整理してみました。 基本はEXCELの場合と同じ 試し …

Excelで長い「if関数」からおさらば!ユーザー定義関数を使って関数を楽々作る方法!

長い「if関数」は、勘弁してほしい! さて、人事異動等で業務を引き継ぐと、前任者が作ったExcel(エクセル)ファイルを使う場面が良くあります。 そのまま使えれば良いのですが多くの場合、法令変わったり …

スポンサーリンク
スポンサーリンク
スポンサーリンク