国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
從Excel中獲取數(shù)據(jù)創(chuàng)建Word報(bào)表文檔

很多情況下,我們都需要從Excel中獲取數(shù)據(jù)來(lái)創(chuàng)建Word報(bào)表文檔。首先在Excel中分析數(shù)據(jù),然后將分析結(jié)果導(dǎo)出到Word文檔中發(fā)布。
技術(shù)實(shí)現(xiàn)方式:
1、創(chuàng)建Word模板,用來(lái)作為數(shù)據(jù)分析結(jié)果發(fā)布平臺(tái)。在Word模板中,在每個(gè)插入點(diǎn)處定義書簽。當(dāng)然,對(duì)于只導(dǎo)入一兩個(gè)數(shù)據(jù)表來(lái)說(shuō),這一步可選。
2、使用VBA,將Excel中的數(shù)據(jù)復(fù)制到Word文檔,從而形成一份報(bào)表文檔。
示例1:將Excel數(shù)據(jù)區(qū)域自動(dòng)復(fù)制到Word文檔
例如,將Data工作表中A1:E8的數(shù)據(jù)自動(dòng)導(dǎo)出到Word文檔中。

第1步:創(chuàng)建一份Word文檔,本例中名為PasteTable.docx。在文檔中,在想要粘貼數(shù)據(jù)的位置插入一個(gè)名為DataTable的書簽。關(guān)閉該文檔并將其與Excel文檔放在相同的目錄中。
第2步:在Excel VBE中,創(chuàng)建對(duì)Microsoft Word Object Library的引用。選擇“工具——引用”,在引用對(duì)話框中,選擇“Microsoft Word ×.0 Object Library”。
第3步:輸入下面的代碼
Sub PasteExcelTableIntoWord()'聲明變量    Dim MyRange As Excel.RangeDim wd As Word.ApplicationDim wdDoc As Word.DocumentDim WdRange As Word.Range '復(fù)制區(qū)域    Set MyRange = Sheets("Data").Range("A1:E8")MyRange.Copy '打開Word文檔    Set wd = New Word.ApplicationSet wdDoc = wd.Documents.Open(ThisWorkbook.Path & "\PasteTable.docx")wd.Visible = True '將光標(biāo)移至?xí)炍恢?/span>    Set WdRange = wdDoc.Bookmarks("DataTable").Range '刪除舊表格粘貼新表格    On Error Resume NextWdRange.Tables(1).DeleteWdRange.Paste '調(diào)整列寬    WdRange.Tables(1).Columns.SetWidth _(MyRange.Width / MyRange.Columns.Count), wdAdjustSameWidth '重新插入書簽    wdDoc.Bookmarks.Add "DataTable", WdRange '內(nèi)存清理    Set wd = NothingSet wdDoc = NothingSet WdRange = NothingEnd Sub

說(shuō)明:
1、本例來(lái)源于《Excel & Access Integration with Office 2007》。
2、設(shè)置要復(fù)制的區(qū)域時(shí),使用了硬編碼,可以根據(jù)需要調(diào)整。
3、當(dāng)復(fù)制Excel數(shù)據(jù)表到Word中時(shí),表格太寬往往導(dǎo)致格式問(wèn)題,本例中調(diào)整表格列寬使用了一個(gè)技巧,即每列的寬度設(shè)置為表格的總寬度除以表格列數(shù)。
4、當(dāng)粘貼數(shù)據(jù)到書簽位置時(shí),會(huì)覆蓋書簽,因此,重新創(chuàng)建書簽以確保下次運(yùn)行代碼時(shí)書簽仍在。
示例2:將多個(gè)Excel數(shù)據(jù)區(qū)域復(fù)制到Word文檔
有時(shí),需要將多個(gè)數(shù)據(jù)區(qū)域復(fù)制到Word文檔,而這些數(shù)據(jù)區(qū)域大小不同。例如,在Data工作表中有兩個(gè)大小不一個(gè)數(shù)據(jù)區(qū)域,要將這兩個(gè)區(qū)域分別復(fù)制到同一個(gè)Word文檔中形成報(bào)表文檔。


第1步:創(chuàng)建一份Word文檔,本例中名為PasteTable.docx。在文檔中,在想要粘貼數(shù)據(jù)的位置分別插入名為DataTable1、DataTable2的書簽。關(guān)閉該文檔并將其與Excel文檔放在相同的目錄中。
第2步:將A1:E8命名為“rang1”,A11:F15命名為“rang2”。
第3步:在Excel VBE中,創(chuàng)建對(duì)Microsoft Word Object Library的引用。選擇“工具——引用”,在引用對(duì)話框中,選擇“Microsoft Word ×.0 Object Library”。
第4步:輸入下面的代碼

Sub PasteExcelTableIntoWord()'聲明變量    Dim MyRange As Excel.RangeDim wd As Word.ApplicationDim wdDoc As Word.DocumentDim WdRange As Word.RangeDim i As Long '打開Word文檔    Set wd = New Word.ApplicationSet wdDoc = wd.Documents.Open(ThisWorkbook.Path & "\PasteTable.docx")wd.Visible = True On Error Resume Next For i = 1 To 2Set MyRange = Names("rang" & i).RefersToRangeMyRange.CopySet WdRange = wdDoc.Bookmarks("DataTable" & i).RangeWdRange.Tables(1).DeleteWdRange.PasteWdRange.Tables(1).Columns.SetWidth _(450 / MyRange.Columns.Count), wdAdjustNonewdDoc.Bookmarks.Add "DataTable" & i, WdRangeNext'清空內(nèi)存    Set wd = NothingSet wdDoc = NothingSet WdRange = Nothing End Sub

說(shuō)明:
1、此方法比較“笨”。因?yàn)樵贓xcel中有多少表,就要命名多少個(gè)區(qū)域,然后在Word中就要建立相應(yīng)數(shù)量的書簽。
2、由于表格大小不一,因此粘貼到Word中時(shí),如果表格太寬,會(huì)伸出到Word頁(yè)面之外,因此,在設(shè)置表格尺寸時(shí),使用了一個(gè)固定尺寸來(lái)除以表格列數(shù)得到表格中每列的寬度,并自動(dòng)調(diào)節(jié)。
3、更改書簽的文本信息后,會(huì)刪除該書簽,因此為了使代碼重復(fù)運(yùn)行,在粘貼數(shù)據(jù)表后,會(huì)重新插入書簽。
示例3:復(fù)制工作表中的數(shù)據(jù)到Word文檔
仍然使用上兩例中的數(shù)據(jù),只是在Word中沒有使用書簽,而是直接將Excel數(shù)據(jù)復(fù)制到Word文檔的最后。
代碼如下:

Sub CopyTableToWordDocument()Dim wdApp As Word.Application'要復(fù)制的區(qū)域    ThisWorkbook.Sheets("Data").Range("A1:E8").Copy'建立與Word的連接    Set wdApp = New Word.ApplicationWith wdApp'打開Word文檔        .Documents.Open Filename:=ThisWorkbook.Path & "\Table.docx"With .Selection'到文檔末尾,添加新段落            .EndKey Unit:=wdStory.TypeParagraph.PasteEnd With.ActiveDocument.Save'退出Word        .QuitEnd WithSet wdApp = NothingEnd Sub

說(shuō)明:本示例來(lái)源于《Excel 2007 VBA參考大全》。
示例4:使用Excel數(shù)據(jù)填充Word書簽位置
例如,下面的工作表,其中A2:B4命名為“rngBookmarkList”。


Word文檔模板Bookmarks.dot,含有三個(gè)書簽。

在Excel中運(yùn)行代碼后,書簽位置的文本被取代。

Excel中的代碼如下:

Sub PopulateWordDoc1() Dim wrdApp As Word.ApplicationDim wrdDoc As Word.DocumentDim sPath As StringDim vaBookmarks As VariantDim lBookmark As Long '使用工作表數(shù)據(jù)填充書簽數(shù)組    vaBookmarks = wksBookmarks.Range("rngBookmarkList").Value '開啟Word    Set wrdApp = CreateObject("Word.Application"'打開模板準(zhǔn)備填充    sPath = ThisWorkbook.Path & "\"Set wrdDoc = wrdApp.Documents.Add(Template:=sPath & "Bookmarks.dot"'使用數(shù)組中的數(shù)據(jù)填充模板中的書簽    For lBookmark = LBound(vaBookmarks, 1) To UBound(vaBookmarks, 1)wrdDoc.Bookmarks(vaBookmarks(lBookmark, LBound(vaBookmarks, 2))).Range.Text = vaBookmarks(lBookmark, UBound(vaBookmarks, 2))Next '保存被填充的文檔并關(guān)閉    wrdDoc.SaveAs sPath & "Filled1.doc"wrdDoc.CloseSet wrdDoc = Nothing '關(guān)閉Word    wrdApp.Quit FalseSet wrdApp = NothingEnd Sub

說(shuō)明:本示例來(lái)源于《Professional Excel Development(2nd Edition)》。
示例5:使用Excel中的數(shù)據(jù)結(jié)果生成不同的Word報(bào)告
如下圖所示,在工作表中有很多數(shù)據(jù),并使用數(shù)據(jù)透視表來(lái)分析這些數(shù)據(jù)?,F(xiàn)在,要生成3份Word文檔,分別報(bào)告Central、East、West這三個(gè)部門的業(yè)績(jī)。


在工作表中,定義了一個(gè)名為rngBookMarks的書簽區(qū)域I20:J22,與Word模板中的書簽相對(duì)應(yīng)。將單元格J20命名為ptrDivName,在程序中更新該單元格的內(nèi)容。并且,該單元格內(nèi)容更新后,使用查詢VLookup函數(shù)來(lái)更新單元格J21和J22中的內(nèi)容。
創(chuàng)建一個(gè)Word模板,在報(bào)告中需要更改的3個(gè)位置分別定義3個(gè)書簽,如下圖所示,書簽與Excel單元格中的內(nèi)容相一致。

運(yùn)行代碼后,每基于Word模板生成一份文檔,都會(huì)修改模板中相應(yīng)書簽位置的內(nèi)容,以生成具體的文檔。
代碼如下:

Sub WordGenerateDivisionSummaries() Dim wrdApp As Word.ApplicationDim wrdDoc As Word.DocumentDim wrdrngBM As Word.RangeDim piDiv As Excel.PivotItemDim rngBookmark As Excel.RangeDim sPath As StringDim sBookmarkName As String On Error GoTo ErrorHandler '開啟Word    Set wrdApp = CreateObject("Word.Application") sPath = ThisWorkbook.Path & "\" '基于模板創(chuàng)建新的文檔    Set wrdDoc = wrdApp.Documents.Add(Template:=sPath & "SalaryReport.dot"'遍歷數(shù)據(jù)透視表中的每個(gè)部門    For Each piDiv In wksData.PivotTables(1).PivotFields("Division").PivotItems '填充部門名單元格        wksData.Range("ptrDivName") = piDiv.Value '重新計(jì)算工作表來(lái)更新部門的結(jié)果        wksData.Calculate '從工作表中取數(shù)據(jù)填充模板中的書簽        For Each rngBookmark In wksData.Range("rngBookmarks").Rows '獲取書簽名            sBookmarkName = rngBookmark.Cells(1, 1).Value '獲取書簽跨越的Word區(qū)域            Set wrdrngBM = wrdDoc.Bookmarks(sBookmarkName).Range '設(shè)置區(qū)域中的文本(這將刪除書簽)            wrdrngBM.Text = rngBookmark.Cells(1, 2).Text '重新創(chuàng)建書簽以便下次循環(huán)            wrdDoc.Bookmarks.Add sBookmarkName, wrdrngBMNext rngBookmark '更新可能與書簽相鏈接的字段        wrdDoc.Fields.Update '保存填充的文檔        wrdDoc.SaveAs sPath & "Salary Results - " & piDiv.Value & ".doc"Next piDiv '關(guān)閉Word文檔    wrdDoc.CloseSet wrdDoc = Nothing '關(guān)閉Word    wrdApp.Quit FalseSet wrdApp = Nothing MsgBox "Division Summaries Generated OK." Exit Sub ErrorHandler:'顯示錯(cuò)誤號(hào)和錯(cuò)誤描述    '并且在標(biāo)題欄中注明程序    MsgBox "Error " & Err.Number & vbLf & Err.Description, _vbCritical, "Routine: WordGenerateDivisionSummaries" End Sub

說(shuō)明:本示例來(lái)源于《Professional Excel Development(2nd Edition)》。

附:Word對(duì)象簡(jiǎn)介
Application
Word應(yīng)用程序本身,通過(guò)該對(duì)象創(chuàng)建、打開和保存Word文檔。
Document
Word文檔對(duì)象
Bookmark
書簽,包含在Document、Bookmarks集合中。要在書簽位置放置內(nèi)容,只須指定其Range屬性的文本內(nèi)容。若更改了書簽的文本內(nèi)容,則刪除該書簽。
Range
文檔中某段連續(xù)區(qū)域。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
VB 打開Word文件
VBA實(shí)例01:復(fù)制多個(gè)Excel表到Word
Excel玩跨界 Word數(shù)據(jù)采集錄入竟這么容易
VBA讀取word中的內(nèi)容到Excel中
Word-VBA【干貨案例】
VSTO開發(fā)指南(VB2013版) 第二章 Office解決方案介紹
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服