我有一个pdf文件,其中包含我在下面附加的表格,我正在尝试将其转换为Excel表格。我首先将pdf保存为html并在Excel中使用import html导入表格。但是有些列没有对齐。例如,“FROM”应位于“1”之上,“TO”应位于“2”之上,“FIELD”应位于“S0CCO”之上。但你可以看到它们在Excel中有点混乱。
这只是一个例子,我有大量的这样的表格,所以我不能手动调整一切。所以我有几个问题:
答案 0 :(得分:0)
如果PDF文件肯定是表而不是表的图像,那么我将使用Word打开文件并从Word文件中提取数据以获得优秀。您还应该能够检查表中的值是否正确排列 - 如果没有,那么错误在于原始PDF创建,而不是您正在提取的内容。
我目前只提供Office XP,因此此代码未经过测试,但这些代码中的某些内容应该适用于较新版本。
基本上它会:
询问您希望从中提取表格的Word或PDF文件
- 您选择文件
它会将文档内容粘贴到sheet1(你可以删除它)
它将创建一个新的工作表并逐个单元格提取表格内容
重复文档中的每个表格
(因此,文档中的每个表都将在一个单独的工作表上)
Sub ImportPDFTable()
Dim wdDoc As Object
Dim wdFileName As Variant
Dim wrd As Object
Dim ApplicationIsRunning As Object
Dim IsWordRunning As Boolean
Dim TableNo As Integer
Dim iRow As Long, iCol As Integer, iCount As Integer
wdFileName = Application.GetOpenFilename("PDF files,*.pdf,Word files,*.doc*", , _
"Browse for file containing table to be imported")
If wdFileName = False Then Exit Sub '(user cancelled import file browser)
Set wrd = CreateObject("Word.Application")
Set wdDoc = wrd.Documents.Open(wdFileName) 'open PDF file in Word
wrd.Visible = False
wrd.Selection.WholeStory
wrd.Selection.Copy
ActiveSheet.PasteSpecial Format:="Text" 'optional - pastes whole document for easy checking
Range("A1").Select
With wdDoc
TableNo = wdDoc.tables.Count
If TableNo = 0 Then MsgBox "This document contains no tables", vbExclamation, "Import Word Table"
For iCount = 1 To TableNo
Worksheets.Add
'Range("A:M").NumberFormat = "@"
TableNo = iCount
With .tables(TableNo)
'copy cell contents from Word table cells to Excel cells
For iRow = 1 To .Rows.Count
For iCol = 1 To .Columns.Count
On Error Resume Next
Cells(iRow, iCol) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
Next iCol
Next iRow
End With
Next iCount
End With
Set wdDoc = Nothing
wrd.Quit
Set wrd = Nothing
End Sub
希望这是有用的。
编辑:几乎忘记了查询的最后一部分。 importhtml不是我熟悉的Excel公式/函数。您可能已经看到某人创建的自定义函数?我相信Google表格确实有一个公式名称importhtml,但我很少使用该软件。