[英]How to pull data as numbers from Word to Excel using VBA?
我正在嘗試從 Word 文檔中的表格中提取數據到 Excel。我可以將其作為文本提取,但我不知道如何將數字作為數字提取。
Sub extractData()
Dim wd As New Word.Application
Dim doc As Word.Document
Dim sh As Worksheet
wd.Visible = True
Set doc = wd.Documents.Open(ActiveWorkbook.Path & "C:\Users\itays\Desktop\TTd.docx")
Set tbl = doc.Tables
Set sh = ActiveSheet
For i = 1 To 17
sh.Cells(i, 1).Value = tbl(5).Rows(i).Cells(1).Range.Text
Next
For i = 1 To 17
sh.Cells(i, 2).Value = tbl(5).Rows(i).Cells(2).Range.Text
Next
Range("a:e").Columns.AutoFit
doc.Close
End Sub
基本上,我需要第二個For
命令將數據作為數字而不是文本提取。
Word 處理文本,而不是數字。 您必須通過將其轉換為正確的數據類型來確保第二列中的文本以數字形式出現。 首先,您必須刪除無法轉換的文本,例如換行符和表格格式。 有幾種方法可以做到這一點,下面是我的例子。 Trim
刪除空格, Val
只保留數字, CLng
將其轉換為Long
。
sh.Cells(i, 2).Value = CLng(Val(Trim(tbl(1).Rows(i).Cells(2).Range.Text)))
對了,打開Word文檔時的路徑看起來很奇怪?
編輯
您需要在轉換前清理數據。 添加Replace
命令以將逗號更改為句點,然后轉換為Double
而不是Long
以使用CDbl
處理十進制值:
sh.Cells(i, 2).Value = CDbl(Val(Trim(Replace(tbl(1).Rows(i).Cells(2).Range.Text, ",", "."))))
嘗試:
Sub ExtractData()
Application.ScreenUpdating = False
Dim wdApp As New Word.Application, wdDoc As Word.Document, r As Long
Set wdDoc = wdApp.Documents.Open(ActiveWorkbook.Path & "\TTd.docx")
With wdDoc.Tables(5)
For r = 1 To 17
ActiveSheet.Cells(r, 1).Value = Split(.Cell(r, 1).Range.Text, vbCr)(0)
ActiveSheet.Cells(r, 2).Value = Split(.Cell(r, 2).Range.Text, vbCr)(0)
Next
End With
wdDoc.Close False: wdApp.Quit
Range("a:e").Columns.AutoFit
Application.ScreenUpdating = True
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.