Как сохранить изображение PDF в XLSX, просматривая файл? - PullRequest
1 голос
/ 11 февраля 2020

Ниже я попробовал ниже.

Моя цель - выбрать файл PDF из пути, просматривая его, а не указав путь к строковому файлу, и сохранить как .XLSX, а также найти где сохраните его.

Код ниже:

Option Explicit

Sub PDF_To_Excel()


Dim setting_sh As Worksheet
Set setting_sh = ThisWorkbook.Sheets("Setting")

Dim pdf_path As Variant
Dim excel_path As String

pdf_path = Application.GetOpenFilename(FileFilter:="PDF Files (*.PDF), *.PDF", Title:="Select File To Be Opened")
excel_path = setting_sh.Range("E12").Value 'should save it as browsing location


Dim fso As New FileSystemObject
Dim fo As Folder
Dim f As File

Set fo = fso.GetFolder(pdf_path)

Dim wa As Object
Dim doc As Object
Dim wr As Object

Set wa = CreateObject("word.application")



'Dim wa As New Word.Application
wa.Visible = True
'Dim doc As Word.Document

Dim nwb As Workbook
Dim nsh As Worksheet
'Dim wr As Word.Range


For Each f In fo.Files
    Set doc = wa.documents.Open(f.Path, False, Format:="PDF Files")
    Set wr = doc.Paragraphs(1).Range
    wr.WholeStory


    Set nwb = Workbooks.Add
    Set nsh = nwb.Sheets(1)
    wr.Copy

    nsh.Paste
    nwb.SaveAs (excel_path & "\" & Replace(f.Name, ".pdf", ".xlsx"))

    doc.Close False
    nwb.Close False
Next

wa.Quit

MsgBox "Done"


End Sub

Я получаю следующую ошибку: «Ошибка времени выполнения 76»: путь не найден в следующей строке:

Set fo = fso.GetFolder(pdf_path)

Любая помощь будет более чем признательна.

Большое спасибо!

1 Ответ

2 голосов
/ 11 февраля 2020

Согласно вашим комментариям, вы хотите выбрать файл PDF, а затем код выберет все файлы PDF в этой папке. Странный способ сделать это, но не сложно. Ваш код позволяет выбрать файл - вам просто нужно выбрать родительскую папку этого файла.

Вы можете сделать это с помощью FSO следующим образом:

'existing code
pdf_path = Application.GetOpenFilename(FileFilter:="PDF Files (*.PDF), *.PDF", Title:="Select File To Be Opened")

'create an object referring to the file chosen
Set objFile = FSO.GetFile(pdf_path)

'Derive the path of the file's parent folder
sPath = Left(objFile.Path, Len(objFile.Path)-Len(objFile.Name))

'existing code but using `sPath` derived above
Set fo = fso.GetFolder(sPath)

Возможно, вам следует чтобы убедиться, что пользователь действительно выбрал файл заранее, в случае, если он нажал Отмена:

If pdf_path = False Then
'stop execution, throw an error.. you choose
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...