PDFファイルをコピーしてエクセルブックにはりつけるVBAをかきました。
これをフォルダ内にあるすべてのPDFを順にエクセルブックに張り付けるやり方を
おしえていただけないでしょうか。
Sub StartAdobe()
Dim AdobeApp As String
Dim AdobeFile As String
Dim StartAdobe As Long
AdobeApp = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe"
AdobeFile = "C:\Users\admin\test\test.pdf"
StartAdobe = Shell("" & AdobeApp & " " & AdobeFile & "", 1)
Application.OnTime Now + TimeValue("00:00:05"), "FirstStep"
End Sub
Private Sub FirstStep()
SendKeys ("^a")
SendKeys ("^c")
Application.OnTime Now + TimeValue("00:00:10"), "SecondStep"
End Sub
Private Sub SecondStep()
VBA.AppActivate Excel.Application.Caption
Windows("Book1.xlsm").Activate
Range("A1").Activate
SendKeys ("^v")
End Sub
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
無理やりです。
動作保証はできません。(私の環境では一応動きましたが・・・)もし、低スペックのPCで実行するようであれば、Wait時間などを調整してみて下さい。
ご検討をお祈りします。
Sub sample2()
Dim MeApp As String
Dim AdobeApp As String
Dim AdobePath As String
Dim AdobeFile As String
Dim StartAdobe As Variant
MeApp = Application.Caption
AdobeApp = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe"
AdobePath = "C:\Users\admin\test\"
AdobeFile = Dir(AdobePath & "*.pdf")
Do While AdobeFile <> ""
ThisWorkbook.Sheets("Sheet1").Range("A1").Copy
On Error GoTo ErrorHandler
StartAdobe = Shell("" & AdobeApp & " " & AdobePath & AdobeFile & "", 1)
AppActivate StartAdobe, False
On Error GoTo 0
SendKeys ("^a"), True
SendKeys ("^c"), True
Application.Wait (Now + TimeValue("0:00:01"))
SendKeys ("%{F4}"), False
AppActivate MeApp, True
Worksheets.Add.Name = AdobeFile
ActiveSheet.Paste
Range("A1").Select
AdobeFile = Dir
Loop
Exit Sub
ErrorHandler:
Application.Wait (Now + TimeValue("0:00:03"))
Resume Next
End Sub
No.3
- 回答日時:
気持ちはわかるのですが、ちょっと無謀な気がします。
そもそもPDFはテキストではないです。仮に、mackojiさんがコピーしようとしているPDFでは、テキスト扱いでコピペができたとしても、すべてのPDFでできるとは限りません。
それから、Cntl+aで選択できるのは、表示中のページだけだったりしませんか?複数ページがある場合は、次ページ操作をしてコピーする必要がある等、難問だらけですよね?
どこまで妥協できるかにもよりますが、私なら諦めます。
No.2
- 回答日時:
SendKeysでのコピペは最終手段ですよ。
できれば避けたいところです。そこで、こんなのはどうでしょうか。
普通の操作でいうと、新しいシートを追加して「挿入」-「オブジェクト」-「ファイルから」でPDFを張り付けるイメージです。それをDir関数でファイル名を取得しながらループしています。
検索対象のフォルダは、ThisWorkbook.Path です。
Sub sample()
Dim MyPathName
Dim MyFileName
Dim MyPDF
MyPathName = ThisWorkbook.Path & "\"
MyFileName = Dir(MyPathName & "*.pdf")
Do While MyFileName <> ""
Worksheets.Add
Set MyPDF = ActiveSheet.OLEObjects.Add(Filename:=MyPathName & MyFileName, _
Link:=False, DisplayAsIcon:=False)
MyFileName = Dir
Loop
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ExcelVBAでPDFを閉じるソース
その他(Microsoft Office)
-
ワードからエクセルへ貼り付けるマクロ
Excel(エクセル)
-
PDFファイルを開き、印刷し、閉じるマクロ
Visual Basic(VBA)
-
-
4
Adobe Reader を閉じる
その他(Microsoft Office)
-
5
VBAでPDFのコピーとリネームを行いたい
Excel(エクセル)
-
6
【VBA】 Alt+PrintScreenにてアクティブウィンドウのスクショを貼付する方法
Excel(エクセル)
-
7
EXCEL ページを指定してPDF出力するVBAを教えてください。
PDF
-
8
vba クリップボードクリアについて教えてください
その他(プログラミング・Web制作)
-
9
pdfのテキスト全文コピー、テキストファイル作成、ペーストのプログラムを教えてください!
その他(プログラミング・Web制作)
-
10
EXCEL VBAでPDFファイルを開いて印刷
Visual Basic(VBA)
-
11
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
-
12
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
13
エクセルVBAで、PDFファイルを開きたい
Excel(エクセル)
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
ワードの図形をコピー&ペイストのマクロ
Word(ワード)
-
16
フォームでPDFを表示させたいときは
Visual Basic(VBA)
-
17
EXCEL VBA 指定したファイルが存在しない場合メッセージボックスを表示させる
Access(アクセス)
-
18
VBAマクロ実行時エラーの修正について
Visual Basic(VBA)
-
19
EXCEL VBAで画像をトリミング
その他(Microsoft Office)
-
20
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの選択範囲以外を削除...
-
Excel シートに別のExcelシート...
-
EXCELのVBAでシートコピーをし...
-
エクセルのワークシートをUSBメ...
-
エクセルの1シートの内容を複...
-
VBAでVBAを削除?
-
標準モジュール、フォームを別...
-
【VBA】コピー&複数個所のペー...
-
シートのコピーでリンク先をコ...
-
Excelの行をコピーして貼り付け...
-
エクセルで保存時に全部のシー...
-
VBA シートをコピー後、ボタン...
-
エクセルでシートを「移動また...
-
エクセルのユーザーフォームを...
-
Excel 関数を使ってデータと一...
-
アクセスの画面をプリントスク...
-
エクセル印刷時 一枚の書類に...
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
VBAで繰り返しコピーしながら下...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 関数を使ってデータと一...
-
エクセルの選択範囲以外を削除...
-
Excelの行をコピーして貼り付け...
-
Excel シートのコピーの際、ペ...
-
EXCELのVBAでシートコピーをし...
-
【エクセル】プルダウン設定の...
-
EXCELで別のブックから式をコピ...
-
Excel 数式の保護をしたセルを...
-
エクセルの1シートの内容を複...
-
エクセルでシートを「移動また...
-
PDFファイルをコピーしてエクセ...
-
エクセルのワークシートをUSBメ...
-
Excel シート複数 金額日計表と...
-
CSVファイルについて質問です。
-
エクセルのページをシートごと...
-
【VBA】コピー&複数個所のペー...
-
ページの設定を別シートにコピ...
-
ExcelVBAで、ユーザーフォーム...
-
EXCEL VBA シートをコピーする...
-
エクセルシートを別のエクセル...
おすすめ情報
自分で1から書くことができないんです・・・
差支えなければ、書いては頂けないでしょうか
ありがとうございます!ただこれだと画像になってしまっていて、
僕がとりたいのはテキストをコピーしたいんです・・・
できないでしょうか?
無理やり Cntl+a Cntl+c でVBAをつくることはできますか
申し訳ないのですが、できたら作って頂けないでしょうか
ありがとうございます。1,2個のファイルだと動いたのですが、10個ぐらいになると
うまく張り付けられなくなりました。。やっぱり難しいですかね・・
これはVBA以外のプログラムだったらできたりするものなのでしょうか?