2011-12-14 2 views
0

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

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 

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

ответ

0

Не уверен, что это сработает для вас, но оно открывает 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 
1

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

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

Вот код, если у вас есть только Acrobat Reader. Вы используете функцию «Шелл».
Затем, чтобы скопировать содержимое 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 установлен, обратитесь к this почте и проверить ссылку, размещенную на правильный ответ.
Обновление было опубликовано по ссылке, и оно охватывает открытие PDF, даже если установлен только ADOBE-ридер.