Открыть PDF-файл в Excel с VBA - PullRequest
0 голосов
/ 14 декабря 2011

У меня проблемы с открытием моего файла PDF в Excel.Я написал макрос, чтобы открыть PDF-документ, скопировать все и вставить его в книгу Excel, но я не могу открыть PDF-файл.Я продолжаю получать ошибку времени выполнения 1004.Любые идеи помощи будут оценены.Вот что я попробовал до сих пор:

Public Sub PDFCopy()

Dim o As Variant
Dim App As AcroPDDoc
Worksheets("Sheet3").Range("A2").Activate

'App.Open ("C:\NetworkDiagrams\100-Viking.pdf")
o = Shell("calc.exe", vbNormalNoFocus)
' ActiveWorkbook.FollowHyperlink ("C:\NetworkDiagram\100-Viking.pdf")

Application.Wait Now + TimeValue("00:00:05")
SendKeys ("^a")
SendKeys ("^c")
SendKeys "%{F4}"

Worksheets("Sheet3").Range("A2").Activate

SendKeys ("^v")



End Sub

Все три метода дали мне одну и ту же ошибку во время выполнения.У меня нет идей.

Ответы [ 2 ]

1 голос
/ 09 октября 2013

Есть два способа сделать это.

Во-первых, вам нужно знать, что установлено в вашей системе.
Acrobat отличается от Acrobat или Adobe Reader.

Вот код, если у вас есть только Acrobat Reader. Вы используете функцию Shell.
Затем для копирования содержимого PDF вы используете SendKeys.
Вид грязного кода и не на 100% надежный, но я могу сказать, что он все еще работает.

Sub Get_Pdf()
    Dim XLName As String, PDFPath As String, READERPath As String
    Dim OpenPDF, sh As Worksheet

    XLName = ThisWorkbook.Name
    Set sh = Thisworkbook.Sheets(1)
    PDFPath = Application.GetOpenFilename(filefilter:="PDF file (*.pdf), *.pdf")
    If UCase(PDFPath) = "FALSE" Then Exit Sub
    '~~> Below path differs depending Adobe version and installation path
    READERPath = "C:\Program Files\Adobe\Reader 11.0\Reader\AcroRd32.exe "
    Shell READERPath & PDFPath, vbNormalFocus: DoEvents

    Application.Wait Now + TimeValue("00:00:2")

    SendKeys "^a", True
    Application.Wait Now + TimeValue("00:00:2")

    SendKeys "^c"
    Application.Wait Now + TimeValue("00:00:2")

    Windows(XLName).Activate
    sh.Paste sh.Range("A1")
    SendKeys "%{F4}", True
End Sub

Если, однако, у вас установлен Acrobat, обратитесь к этой записи и проверьте ссылку на правильный ответ.
По ссылке было размещено обновление, которое касается открытия PDF, даже если установлен только ADOBE Reader.

0 голосов
/ 16 декабря 2011

Не уверен, что это будет работать для вас, но он открывает PDF и копирует его в A2; Надеюсь, кто-то может сделать что-нибудь более чистое.

Public Sub PDFCopy()

    'Filepath for your Adobe reader
    MyPath = "C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe"
    'Filepath for your PDF to open
    MyFile = "C:\Documents\test.pdf"
    Shell MyPath & " " & MyFile, vbNormalFocus

    SendKeys ("^a")
    SendKeys ("^c")
    SendKeys "%{F4}"

    Windows("Test.xlsm").Activate
    Worksheets("Sheet2").Activate
    ActiveSheet.Range("A2").Select

    SendKeys ("^v")

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...