簡體   English   中英

如何使用 VBA 將數據作為數字從 Word 提取到 Excel?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM