Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


71104 / 76738 ←次へ | 前へ→

【10131】Re:PDFをExcelに戻す方法
回答  Kein  - 04/1/8(木) 15:35 -

引用なし
パスワード
   アクロバットにそんな機能があれば、より簡単にできるでしょうけど
私はリーダーしか持ってないのでリーダーを立ち上げて、SendKeysで
キーを送ってテキストを作りました。古くさいやり方かも知れませんが、
アクロバットでもリーダーでもショートカットキーが有効に働くので、
適当にインターバルを入れてやれば結構うまくいきますよ。一例ですが
こんなコードも考えられます。新規ブックへ入れてお試し下さい。

*Microsoft Forms 2.0 Object Library に参照設定する

Sub Test_PDF_Copy()
  Static i As Integer
  Dim MyF As String, NewF As String, Buf As String
  Dim Ret As Long
  Dim DObj As New DataObject
  Dim Ary As Variant
  Const Acbat As String = _
  "C:\Program Files\Adobe\Acrobat 5.0\Reader\AcroRd32.exe"
 
  If i = Worksheets.Count Then i = 0
  ChDir "C:\My Documents" 'PDFファイルの保存先フォルダーに変更
  With Application
   MyF = .GetOpenFilename("PDFファイル(*.pdf),*.pdf")
   If MyF = "False" Then GoTo EndLine
   i = i + 1: NewF = Left(Dir(MyF), Len(Dir(MyF)) - 3) & "xls"
   Worksheets(i).Cells.ClearContents
   Ret = Shell(Acbat & " " & MyF, 1)
   .Wait Time + TimeValue("00:00:02")
   SendKeys "^(a)"
   .Wait Time + TimeValue("00:00:01")
   SendKeys "^(c)"
   .Wait Time + TimeValue("00:00:01")
   DObj.GetFromClipboard
   Buf = DObj.GetText(1)
   Ary = .WorksheetFunction.Transpose(Split(Buf, ChR(10)))
   .ScreenUpdating = False
   With ThisWorkbook.Worksheets(i)
     .Range("A1").Resize(UBound(Ary) + 1).Value = Ary
     .Copy
   End With
   ActiveWorkbook.Close True, .DefaultFilePath & "\" & NewF
   .ScreenUpdating = True: Erase Ary 
   AppActivate Ret
   .Wait Time + TimeValue("00:00:01")
   SendKeys "^(q)"
EndLine:
   .CutCopyMode = False
   ChDir .DefaultFilePath
  End With
End Sub
0 hits

【10123】PDFをExcelに戻す方法 ストレスアイラ 04/1/8(木) 11:21 質問
【10125】Re:PDFをExcelに戻す方法 INA 04/1/8(木) 14:15 回答
【10131】Re:PDFをExcelに戻す方法 Kein 04/1/8(木) 15:35 回答
【10173】Re:PDFをExcelに戻す方法 ストレスアイラ 04/1/9(金) 15:18 お礼

71104 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free