|
アクロバットにそんな機能があれば、より簡単にできるでしょうけど
私はリーダーしか持ってないのでリーダーを立ち上げて、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
|
|