[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『PDFファイルのページを指定してシート貼付け』(田吾作)
おはようございます。お世話になります。 下記のコードはPDFファイルをオブジェクトとしてシートに貼り付けるもの です。本当は特定のページだけを貼り付けたいのですが方法がわからず以前 ネットで調べた物を使わせていただいております。
Sub test() Dim fpath As String Dim ws As Worksheet Dim myobj As Object fpath = "D:\test\test2\aaa.pdf" If Dir(fpath) <> "" Then Set ws = ThisWorkbook.Worksheets(1) Set myobj = ws.OLEObjects.Add(Filename:=fpath, Link:=False, DisplayAsIcon:=False) Set myobj = Nothing Set ws = Nothing End If End Sub
今回やりたいことは、PDFファイルの特定のページを指定してシートに貼り つける、という作業です。
現在、手作業でPDFファイルの2ページ目を開き、その内容を目視で確認して PDFファイルの名前をリネームしております。 各PDFファイルは2ページのものです。 この作業はエクセルは使用して いません。
PDFファイルが50ほど入ったフォルダが10ほどあります。
1つのフォルダ内の全PDFファイルの2ページ目をシートのセルに一覧表示して、 そのセルの隣のセルにリネーム後の名前を入力してマクロで自動的にリネーム しようと考えています。 リネームのマクロは出来ています。 今回お聞きしたいのは、PDFファイルの特定のページをシートの表示できるか、 という点です。
ご存知の方、ご教示お願いいたします。
< 使用 Excel:Excel2002、使用 OS:WindowsXP >
元ファイルをバラして欲しいページだけ別PDF(または画像)にしてから貼るとか、
OLE貼付をやめてAcrobat Readerで表示し、Sendkeysでページ変更操作するとか。
(別アプリで表示では、一覧表示目的と違ってしまいますね)
または、製品版Acrobatならば、何とかできるかも。
(???) 2014/02/25(火) 13:30
Acrobat(有償S/W)があるとできる幅は広がりますが、Reader ではできることも 制限されます。 http://pdf-file.nnn2.com/
ですが、このようなコマンドツールもあるようです。 http://nwpct1.hatenablog.com/entry/2013/12/14/192914
このあたりを組み合わせて使用してはどうでしょうか。 コマンドは VBA のShell 等から起動できます。 (Mook) 2014/02/25(火) 14:00
???さん、Mookさん、ご回答ありがとうございます。
Mookさんにリンクしていただきましたツールを使用してPDFファイルの特定のページ を新規PDFファイルとして切り出すことが出来ました。 これで切り出したものをシートに貼り付けることにいたします。 ありがとうございました。
↓はpdftkのコマンドをVBAから実行するコードです。 指定のフォルダ内の全PDFファイルの指定のページを新規フォルダ内に新規PDFファイル として保存します。
Sub test() Dim fol As String Dim myfile As String Dim fpath As String Dim newfol As String Dim newmyfile As String Dim newfpath As String Dim kaku As String Dim mynum As Integer Dim mycmd As String 'フォルダパス fol = "G:\test\mypdf" '新規フォルダパス newfol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\" & Format(Now, "yymmdd_hhmmss") '新規フォルダ作成 MkDir (newfol) '切り出すページ番号 mynum = 2 '対象拡張子 kaku = "pdf" myfile = Dir(fol & "\*." & kaku) 'フォルダ内ループ Do While myfile <> "" 'ファイルパス fpath = fol & "\" & myfile '新規ファイル名 newmyfile = Left(myfile, InStrRev(myfile, ".") - 1) & "_" & mynum & "." & kaku '新規ファイルパス newfpath = newfol & "\" & newmyfile 'コマンド内容 mycmd = "pdftk " & """" & fpath & """" & " cat " & mynum & " output " & """" & newfpath & """" 'コマンド実行 Call Shell(Environ$("ComSpec") & " /c" & mycmd) myfile = Dir() Loop '新規フォルダの起動 CreateObject("Shell.Application").ShellExecute newfol End Sub (田吾作) 2014/02/26(水) 09:34
解決済みですが、検索などでこのスレッドをご覧になる方への参考として書いておきます。
私のPCの環境は
Windows:XP-SP3 IE:Version8/セキュリティの状態は?? ネット接続:ダイヤルアップ
ですが、pdftkの「Windows Download」をクリックしてダウンロードしようとしても ダウンロードが始まりませんでした。他のサイトでは特にダウンロードが出来なかった というような症状は出たことがありませんでした。
そこで、ソースを表示してダウンロードファイルのURLを取得し(↓です)、
ttp://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/pdftk_server-2.02-win-setup.exe
API関数のURLDownloadToFileでPC上にダウンロードしました。↓はURLDownloadToFileの解説 ページです。
Office TANAKA - 番外編[画像をダウンロードする] http://officetanaka.net/other/extra/tips01.htm
また、pdftkコマンドラインを使って作業しますので、元のPDFファイルや新規PDFファイル のパスにスペースが含まれていると作業できませんので、場合によってはパスを「""""」で 囲ってやる、ということも必要になります。パスにスペースが無くてもパスを「""""」で囲 むとエラーになる、ということは有りませんので常にパスを「""""」で囲む、でもOK(のはず) です。 (田吾作) 2014/02/27(木) 00:08
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.