
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 12:54
- Excel(エクセル) 【VBA】 Alt+PrintScreenにてアクティブウィンドウのスクショを貼付する方法 4 2022/12/08 20:53
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
- Excel(エクセル) エクセル2019でPDFファイル名に枝番号をつけたい。 アクティブワークシートを印刷した後の処理とし 4 2023/06/06 21:00
このQ&Aを見た人はこんなQ&Aも見ています
-
ExcelVBAでPDFを閉じるソース
その他(Microsoft Office)
-
PDFファイルを開き、印刷し、閉じるマクロ
Visual Basic(VBA)
-
ワードからエクセルへ貼り付けるマクロ
Excel(エクセル)
-
-
4
エクセルVBAで、PDFファイルを開きたい
Excel(エクセル)
-
5
Adobe Reader を閉じる
その他(Microsoft Office)
-
6
pdfのテキスト全文コピー、テキストファイル作成、ペーストのプログラムを教えてください!
その他(プログラミング・Web制作)
-
7
VBA PDFファイル印刷後のAcrobatReaderDCの起動画面を閉じたい
Excel(エクセル)
-
8
EXCEL ページを指定してPDF出力するVBAを教えてください。
PDF
-
9
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
10
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
11
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
12
エクセルVBAで画像から文字を抽出出来ますか?
その他(Microsoft Office)
-
13
セルにフルパスを入力してPDFファイルを開きたい
Excel(エクセル)
-
14
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
15
サブフォルダー内のPDFファイルを別フォルダにコピーするVBA
Excel(エクセル)
-
16
Excel マクロ 画像をリンクせずかつ圧縮して貼りつける方法を教えてください
Excel(エクセル)
-
17
VBAのフォント変更(エクセルからoutlookのメール作成において)
Visual Basic(VBA)
-
18
【VBA】写真の縦横比を変えずに貼り付ける
Visual Basic(VBA)
-
19
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
20
A1セルに入力したら、入力時間をA2セルに自動挿入
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 関数を使ってデータと一...
-
Excelの行をコピーして貼り付け...
-
エクセルの選択範囲以外を削除...
-
EXCELのVBAでシートコピーをし...
-
EXCELで別のブックから式をコピ...
-
Excel シートのコピーの際、ペ...
-
VBAで任意のファイルを読み出し...
-
VBA シートをコピー後、ボタン...
-
ExcelVBAで、ユーザーフォーム...
-
エクセルでシートを「移動また...
-
【エクセル】プルダウン設定の...
-
VBA 先頭文字の0(ゼロ)...
-
エクセルの1シートの内容を複...
-
EXCELシートのコピー
-
【VBA】コピー&複数個所のペー...
-
エクセルのシートコピーした際...
-
コピー後に値のみ貼り付け エ...
-
VBAでマクロを組んでいますが、...
-
EXCEL2007でシートをコピーする...
-
エクセル2007 作成した表を丸...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの行をコピーして貼り付け...
-
Excel 関数を使ってデータと一...
-
エクセルの選択範囲以外を削除...
-
EXCELのVBAでシートコピーをし...
-
EXCELで別のブックから式をコピ...
-
Excel シートのコピーの際、ペ...
-
エクセルでシートを「移動また...
-
【エクセル】プルダウン設定の...
-
エクセルのシートコピーした際...
-
エクセルシートを別のエクセル...
-
Excel 数式の保護をしたセルを...
-
エクセルの1シートの内容を複...
-
エクセルVBA 1行飛ばしで転記す...
-
CSVファイルについて質問です。
-
PDFファイルをコピーしてエクセ...
-
ページの設定を別シートにコピ...
-
ExcelVBAで、ユーザーフォーム...
-
【VBA】コピー&複数個所のペー...
-
エクセルのページをシートごと...
-
【Excel VBA】シートコピー時、...
おすすめ情報
自分で1から書くことができないんです・・・
差支えなければ、書いては頂けないでしょうか
ありがとうございます!ただこれだと画像になってしまっていて、
僕がとりたいのはテキストをコピーしたいんです・・・
できないでしょうか?
無理やり Cntl+a Cntl+c でVBAをつくることはできますか
申し訳ないのですが、できたら作って頂けないでしょうか
ありがとうございます。1,2個のファイルだと動いたのですが、10個ぐらいになると
うまく張り付けられなくなりました。。やっぱり難しいですかね・・
これはVBA以外のプログラムだったらできたりするものなのでしょうか?