Excel如何讀寫Word表格中的資料?

上篇文章我們介紹瞭如果在Excel中利用VBA技術訪問Word文件,今天我們就說說如何在Excel中利用VBA寫入/提取Word文件中的資料。

寫入Word文件

當前資料夾中存在一個test的Word文件,文件中僅有一張六列三行的空表格,現在我們在Excel中利用VBA向此Word文件中寫入內容。

當前資料夾,開啟一個Excel,開啟Visual Basic檢視,輸入以下程式碼:

點選執行按鈕,即可發現,Word文件中的表格1,已經被填充數字。

最終結果如下圖所示:

程式碼解釋

wdapp.Documents.Open Filename:=ThisWorkbook.Path & "/test.docx"

開啟當前資料夾下名字為test的Word文件;

wdapp.Visible = True

開啟之後,使文件處於可視的狀態;

wdapp.Documents(1).Tables(1).Range

Word文件表格1(Tables(1))的範圍,這裡表格共三行六列,所以range等於18;

.Cells(i).Range = i

這裡將Word表格1中寫入對應的數字;

完整程式碼如下所示:

Sub 資料寫入word中() Dim wdapp As Word.Application Dim wddoc As Document Set wdapp = New Word.Application wdapp.Documents.Open Filename:=ThisWorkbook.Path & "/test.docx" wdapp.Visible = True With wdapp.Documents(1).Tables(1).Range For i = 1 To .Cells.Count .Cells(i).Range = i Next End With End Sub

讀取Word中的資料

下圖中,Word中存在一張表 表1,裡面儲存著不同的資料,現在我們需要把純資料項提取出來 ,並彙總到Excel單元格中。

開啟Visual Basic檢視,輸入以下程式碼:

點選執行按鈕,完成資料的提取,結果如下圖所示:

程式碼說明:

Left(.Cells(i).Range, Len(.Cells(i).Range) - 2):

.Cells(i).Range為當前Word單元格中的內容,如第一個單元格內容是【18】,但提取出來的並不是單純的18,在VBA本地視窗中可以發現,它是一個【18 】,18 空格 一個正方形;但是我們只要數字18,後面的空格和正方形是不需要的,這裡用一個left函式,去除後兩位,提取數字;

IsNumeric(u):

判斷u是否為數字,如果是則進入下一步,如果不是則結束。

程式執行完一定要關閉Word哦,wdapp.Quit,切記!

明細程式碼如下圖所示:

Sub 提取資料() On Error Resume Next Dim wdapp As Word.Application Dim wddoc As Document Set wdapp = New Word.Application wdapp.Documents.Open Filename:=ThisWorkbook.Path & "/test.docx" wdapp.Visible = False n = 1 With wdapp.Documents(1).Tables(1).Range For i = 1 To .Cells.Count u = Left(.Cells(i).Range, Len(.Cells(i).Range) - 2) If IsNumeric(u) Then n = n   1 Cells(n, 1) = u End If Next End With Cells(1, 1) = "提取數字" wdapp.Quit End Sub

小結

以上就是關於Excel中利用VBA操作Word的相關介紹,如果覺得有用,歡迎關注我,定期分享資料小技巧!