word表格图片自动适应表格大小_Excel应用实践20:使用Excel中的数据自动填写Word表格...
學(xué)習(xí)Excel技術(shù),關(guān)注微信公眾號(hào):
excelperfect
我在Excel工作表中存放著數(shù)據(jù),如下圖1所示。
圖1
我想將這些數(shù)據(jù)逐行自動(dòng)輸入到Word文檔的表格中并分別自動(dòng)保存,Word文檔表格如下圖2所示,文檔名為“datafromexcel.docx”。
圖2
解決思路
首先,將需要自動(dòng)填寫的datafromexcel.docx文檔作為模板,并對(duì)每個(gè)要填寫的位置放置書簽。例如,將光標(biāo)移至上圖2所示表格中姓名后的空格,單擊功能區(qū)選項(xiàng)卡“插入——書簽”,在彈出的“書簽”對(duì)話框中輸入書簽名“姓名”,如下圖3所示。
圖3
同樣,在表的其它空格中插入相應(yīng)的書簽,結(jié)果如下圖4所示。
圖4
在Excel工作表中,將相應(yīng)數(shù)據(jù)所在的單元格命名,名稱與要填寫的上圖4中表的書簽名相同。這就需要我們先命名單元格,待將相應(yīng)的數(shù)據(jù)輸出到Word表中后,再刪除這些名稱。然后,移至下一行,再進(jìn)行單元格命名,并將相應(yīng)的數(shù)據(jù)輸出到Word表中,再刪除這些名稱。如此反復(fù),直至工作表每行數(shù)據(jù)均創(chuàng)建了Word文檔。
編寫代碼
按照上述思路,在存放數(shù)據(jù)的Excel工作簿中編寫代碼:
Sub ExportDataToWord()
??? '變量聲明
??? Dim objWord As Object,docWord As Object
??? Dim wb As Workbook
??? Dim xlName As Name
??? Dim Path As String
??? Dim lLastRow As Long
??? Dim i As Long
??? '下面兩個(gè)變量可修改為實(shí)際工作簿和路徑
??? '設(shè)置數(shù)據(jù)所在工作簿
??? Set wb = ActiveWorkbook
??? '要輸入數(shù)據(jù)的Word模板
??? Path = wb.Path & "\datafromexcel.docx"
??? '錯(cuò)誤處理
??? On Error GoTo ErrorHandler
??? '工作簿工作表中最后數(shù)據(jù)行行號(hào)
??? lLastRow =wb.Worksheets("Sheet1").Range("A" &?Rows.Count).End(xlUp).Row
??? '遍歷工作表數(shù)據(jù)行
??? '從中取出數(shù)據(jù)填充Word文檔
??? For i = 2 To lLastRow
??????? '命名名稱
??????? With wb.Worksheets("Sheet1")
???????????.Range("A" & i).Name = Range("A1").Value
???????????.Range("B" & i).Name = Range("B1").Value
???????????.Range("C" & i).Name = Range("C1").Value
???????????.Range("D" & i).Name = Range("D1").Value
??????? End With
??????? '創(chuàng)建新的Word實(shí)例
??????? Set objWord = CreateObject("Word.Application")
??????? '錯(cuò)誤處理
??????? On Error GoTo ErrorHandler
??????? '打開Word文檔
??????? Set docWord = objWord.Documents.Add(Path)
??????? '遍歷當(dāng)前工作簿中的名稱
??????? For Each xlName In wb.Names
??????????? '如果在Word文檔中存在與名稱相同的書簽
??????????? If docWord.Bookmarks.Exists(xlName.Name) Then
??????????????? '將工作表名稱的值放入書簽所在位置
???????????????docWord.Bookmarks(xlName.Name).Range.Text = Range(xlName.Value)
??????????? End If
??????? Next xlName
??????? With objWord
??????????? '激活并顯示W(wǎng)ord文檔
??????????? .Visible = True
???????????.ActiveWindow.WindowState = 0
??????????? .Activate
??????????? '以列A中相應(yīng)單元格中的數(shù)據(jù)命名并保存Word文檔
???????????.ActiveDocument.SaveAs wb.Path & "\" & Range("A" & i).Value & ".docx"
??????????? '退出Word
??????????? .Application.Quit
??????? End With
??????? '釋放對(duì)象
??????? Set objWord = Nothing
??????? '刪除名稱
???????Names(Range("A1").Value).Delete
???????Names(Range("B1").Value).Delete
???????Names(Range("C1").Value).Delete
???????Names(Range("D1").Value).Delete
??? Next i
???? '釋放Word對(duì)象并退出過(guò)程
ErrorExit:
??? Set objWord = Nothing
??? Exit Sub
??? '錯(cuò)誤處理
ErrorHandler:
??? If Err Then
??????? MsgBox "錯(cuò)誤號(hào): " & Err.Number &"; 出問(wèn)題了."
??????? If Not objWord Is Nothing Then
??????????? objWord.QuitFalse
??????? End If
??????? Resume ErrorExit
??? End If
End Sub
代碼中已經(jīng)給出了詳細(xì)的注釋,有興趣的朋友可以仔細(xì)體會(huì)。
運(yùn)行代碼
在運(yùn)行代碼前,要保證代碼所在的工作簿與Word文檔模板datafromexcel.docx在同一文件夾中。運(yùn)行ExportDataToWord過(guò)程,在文件夾中會(huì)生成以列A中的姓名為名稱的Word文檔,如下圖5所示。
圖5
打開任一文檔,結(jié)果都是填寫好了的表格,如下圖6所示。
圖6
代碼的圖片版如下:
總結(jié)
以上是生活随笔為你收集整理的word表格图片自动适应表格大小_Excel应用实践20:使用Excel中的数据自动填写Word表格...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java判断方法_Java常用的判断方法
- 下一篇: nginx log response_n