根據(jù)EXCEL數(shù)據(jù)自動(dòng)生成WORD報(bào)表

需求描述
?
這個(gè)是知乎上一個(gè)朋友的付費(fèi)提問內(nèi)容,因?yàn)樾枨蠛芎?jiǎn)單,我把程序直接寫好了,在這里把代碼分享給大家。
我們有一個(gè)Excel報(bào)表文件,格式如下:

我們要把里面的數(shù)據(jù),一鍵導(dǎo)入到以下的Word文檔:

這個(gè)文檔看著也很簡(jiǎn)單,有一些特別需要注意的地方,我這里說(shuō)一下
表格中的天氣部分,需要根據(jù)Excel表格內(nèi)部的信息判斷,如果是【晴天】,則Word表格中的晴天那一列要打兩個(gè)√。

思路
?
諸如【日期】、【巡查項(xiàng)目點(diǎn)】等這些信息,代碼采用替換的方式解決。
Word文檔作為一個(gè)模板存在,后期會(huì)單獨(dú)另存一份新的文檔。
Word表格內(nèi)部直接按位置寫入數(shù)據(jù)。

具體代碼
?
Sub 導(dǎo)出word()Set doc = CreateObject("word.application") '創(chuàng)建Word對(duì)象Set wd = doc.Documents.Open(ThisWorkbook.Path & "\日?qǐng)?bào)模板 .docx")doc.Visible = True'//判斷天氣Set tbl = wd.tables(1)Select Case Trim(Range("b3").Value)Case "晴"tbl.Cell(4, 2).Range.Text = "√"tbl.Cell(5, 2).Range.Text = "√"Case "陰"tbl.Cell(4, 3).Range.Text = "√"tbl.Cell(5, 3).Range.Text = "√"Case "雨"tbl.Cell(4, 4).Range.Text = "√"tbl.Cell(5, 4).Range.Text = "√"Case "雷暴"tbl.Cell(4, 5).Range.Text = "√"tbl.Cell(5, 5).Range.Text = "√"Case "大風(fēng)"tbl.Cell(4, 6).Range.Text = "√"tbl.Cell(5, 6).Range.Text = "√"Case "臺(tái)風(fēng)"tbl.Cell(4, 7).Range.Text = "√"tbl.Cell(5, 7).Range.Text = "√"End Select'//寫word表格其余信息tbl.Cell(4, 8).Range.Text = Range("c3").Value '平均氣溫tbl.Cell(4, 9).Range.Text = Range("d3").Value '相對(duì)濕度tbl.Cell(3, 10).Range.Text = Range("e3").Value '平均氣溫'//寫段落中的信息replaceStr doc, Range("a3").Text, "{$日期}"replaceStr doc, Range("f3").Value, "{$巡查項(xiàng)目點(diǎn)}"replaceStr doc, Range("g3").Value, "{$養(yǎng)護(hù)團(tuán)隊(duì)次數(shù)}"replaceStr doc, Range("h3").Value, "{$養(yǎng)護(hù)團(tuán)隊(duì)項(xiàng)目點(diǎn)}"replaceStr doc, Range("i3").Value, "{$病害治理包組次數(shù)}"replaceStr doc, Range("j3").Value, "{$病害治理項(xiàng)目點(diǎn)}"'//另存生成的文檔,并且關(guān)閉模板文檔wd.SaveAs ThisWorkbook.Path & "\" & Range("a3").Text & "日?qǐng)?bào).docx"wd.Close Falsedoc.QuitMsgBox "完成!"End SubFunction replaceStr(doc, reStr, findStr)doc.Selection.HomeKey 6With doc.Selection.Find.Text = findStr '要查找的內(nèi)容.Forward = True.Replacement.Text = reStr '替換的結(jié)果.Wrap = 1.Format = False.MatchCase = False.MatchWholeWord = False.MatchByte = False.MatchAllWordForms = False.MatchSoundsLike = False.MatchWildcards = False.Execute Replace:=1End WithEnd Function

參考文章
?
Excel和Word數(shù)據(jù)交互讀取(生成合同) 如何將word中的數(shù)據(jù)批量提取到excel中? Excel和Word數(shù)據(jù)交互讀取(一) Excel和Word數(shù)據(jù)交互讀取(二) Word VBA教程,來(lái)了!
評(píng)論
圖片
表情
