最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

VBA實現(xiàn)合并具有文本框的Word文檔

 更新時間:2024年11月17日 13:37:36   作者:瘋狂學(xué)習(xí)GIS  
這篇文章主要為大家詳細(xì)介紹了如何基于VBA語言,對大量含有圖片、文本框與表格的Word文檔加以批量自動合并,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

本文介紹基于VBA語言,對大量含有圖片、文本框與表格的Word文檔加以批量自動合并,并在每一次合并時添加分頁符的方法。

在我們之前的文章中,介紹過基于Python語言的python-docxdocx)模塊與docxcompose模塊,對大量Word文檔加以合并的方法;但是,基于這種方法,我們無法對具有非明確大小的文本框Word加以合并,因為python-docx無法處理含有這種元素的Word文件。最近,一位老哥提出了合并含有文本框Word的需求,所以就嘗試用VBA來實現(xiàn)這一操作,這里就介紹一下具體的方法。

其中,VBA是Visual Basic for Applications的縮寫,其是基于Visual Basic語言的一種擴展,主要應(yīng)用于微軟Office套件中各種應(yīng)用程序,例如WordExcelPowerPoint等;其允許用戶創(chuàng)建自定義的宏和應(yīng)用程序來自動執(zhí)行各種任務(wù),從而提高工作效率。目前,VBA主要就是應(yīng)用于需要批量操作Office文件的各類場景中。

本文的需求如下。現(xiàn)在有一個文件夾,其中包含大量文檔文件,如下圖所示;其中,每一個文檔中,都包含圖片、表格、文本框等較為復(fù)雜的元素

我們現(xiàn)在希望,可以批量將文件夾中大量文檔文件加以合并;并且在合并時,每次都需要在新的1頁中合并下一個文件(也就是,不同文件的內(nèi)容不要出現(xiàn)在1頁中)。

明確了需求,即可開始代碼撰寫。本文所需代碼如下。

Sub merge_word()
    Dim time_start As Single: time_start = Timer
    Dim word_result As Document
    Dim word_temp As Document
    Dim file_dialog As FileDialog
    Dim str As String
    Dim file
    Dim num As Long
    
    Set word_result = ActiveDocument
    Set file_dialog = Application.FileDialog(msoFileDialogFilePicker)
    
    With file_dialog
        .AllowMultiSelect = True
        .Title = "請選擇【一個或多個】需要與當(dāng)前文檔合并的文件"
        With .Filters
            .Clear
            .Add "Word文件", "*.doc*;*.dot*;*.wps"
            .Add "所有文件", "*.*"
        End With
        If .Show Then
            Application.ScreenUpdating = False
            num = .SelectedItems.count
            For Each file In .SelectedItems
                Set word_temp = Documents.Open(file)
                word_temp.Range.Copy
                
                word_result.Range(word_result.Range.End - 1, word_result.Range.End).Select
                
                DoEvents
                Selection.Paste
                Selection.InsertBreak
                
                word_temp.Close wdDoNotSaveChanges
            Next
            
            Application.ScreenUpdating = True
        End If
    End With
    
    Set word_result = Nothing
    Set word_temp = Nothing
    Set file_dialog = Nothing
    
    str = Format(Timer - time_start, "均已成功合并;共用時0秒!")
    str = Format(num, "您選擇合并0個文件,") & str
    MsgBox str, vbInformation, "文件合并結(jié)果"
End Sub

上述代碼中,我們首先進行變量聲明。time_start是一個Single類型的變量,用以記錄代碼開始執(zhí)行的時間;Timer函數(shù)返回一個單精度浮點數(shù),表示從計算機啟動到現(xiàn)在經(jīng)過的秒數(shù)。word_result是一個Document類型的變量,用以存儲當(dāng)前打開的Word文檔。word_temp是另一個Document類型的變量,用以臨時存儲要合并的其他Word文檔。file_dialog是一個FileDialog類型的變量,用以存儲文件選擇對話框?qū)ο蟆?code>str是一個字符串類型的變量,用以存儲最終要顯示在消息框中的合并結(jié)果信息。file用以在循環(huán)中存儲用戶選擇的每個文件路徑。num是一個長整型變量,用以存儲用戶選擇的文件數(shù)量。

隨后,我們獲取當(dāng)前文檔。將當(dāng)前正在編輯的Word文檔賦值給word_result變量,這個文檔就是要合并其他文檔內(nèi)容的結(jié)果文檔。

接下來,我們打開文件選擇對話框。創(chuàng)建一個文件選擇對話框?qū)ο?,并逐一設(shè)置對話框的屬性;其中,允許用戶選擇多個文件,自定義對話框標(biāo)題,并設(shè)置文件類型過濾器,其中第一個表示只顯示Word文檔文件,第二個則表示顯示所有類型的文件。

緊接著,通過If .Show Then語句,判斷用戶在對話框中是否選擇了文件。如果是的話,執(zhí)行合并操作。其中,首先獲取用戶選擇的文件數(shù)量;隨后,循環(huán)遍歷每個選擇的文件——打開每個選擇的文件作為臨時文檔,將臨時文檔的全部內(nèi)容復(fù)制到剪貼板;將光標(biāo)定位到目標(biāo)文檔(也就是結(jié)果文件)的最后一個字符處,并將剪貼板中的內(nèi)容粘貼到目標(biāo)文檔的末尾,同時在粘貼的內(nèi)容后插入一個分頁符;最后,關(guān)閉臨時文檔而不保存更改。接下來,進行下一次遍歷。其中需要注意,這里如果我們不添加DoEvents這句代碼,會導(dǎo)致其下方的Selection.Paste這句代碼報錯(雖然會報錯,但其實選擇調(diào)試后繼續(xù)按下F5,程序也還是可以運行)。

最后,即可清理變量引用,并計算合并操作的耗時,將結(jié)果信息顯示在消息框中。

代碼的執(zhí)行方法如下。首先,在任意路徑創(chuàng)建一個空白的Word文檔,作為我們的結(jié)果文件。隨后,在這個文檔中,同時按下Alt鍵與F11鍵,進入VBA宏界面,如下圖所示。

隨后,在左上角的Normal處右鍵,選擇“插入”→“模塊”,如下圖所示。

隨后,在彈出的窗口中,復(fù)制前述代碼,如下圖所示。

接下來,按下F5鍵,即可開始運行代碼。其中,首先彈出一個選擇文件的窗口,我們選擇待合并的文件即可;如下圖所示。

隨后,點擊“確定”,即可開始合并文件。稍等片刻,合并完成,并將彈出如下所示界面。

此時,回到我們打開的Word文件中,即可看到文件已經(jīng)被合并在內(nèi)了。

其中,上圖中紫色框所示區(qū)域,就是我這里待合并文件的開頭部分(紫色框內(nèi)紅色的兩段線僅僅是為了遮擋文件中的部分信息,沒有別的含義,大家理解即可)——可以看到,每一次新的文件合并時,都是在新的一頁操作的,符合我們的需求。

至此,大功告成。

到此這篇關(guān)于VBA實現(xiàn)合并具有文本框的Word文檔的文章就介紹到這了,更多相關(guān)VBA合并Word文檔內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vba將excel按照某一列拆分成多個文件

    vba將excel按照某一列拆分成多個文件

    本文主要介紹了vba將excel按照某一列拆分成多個文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧<BR>
    2023-01-01
  • Excel?VBA按列拆分工作表和工作簿的實現(xiàn)

    Excel?VBA按列拆分工作表和工作簿的實現(xiàn)

    表格拆分是常見的數(shù)據(jù)處理,本文主要介紹了Excel?VBA按列拆分工作表和工作簿的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • VBA將excel數(shù)據(jù)表生成JSON文件

    VBA將excel數(shù)據(jù)表生成JSON文件

    本文給大家匯總介紹了幾種使用VBA處理EXCEL并生成JSON文件的方法和思路,非常的實用,有需要的小伙伴可以參考下。
    2015-09-09
  • 用vba實現(xiàn)將記錄集輸出到Excel模板

    用vba實現(xiàn)將記錄集輸出到Excel模板

    用vba實現(xiàn)將記錄集輸出到Excel模板...
    2007-02-02
  • VBA UsedObjects 集合用法

    VBA UsedObjects 集合用法

    可用 Application 對象的 UsedObjects 屬性返回一個 UsedObjects 對象。
    2009-07-07
  • VBA解決Windows空當(dāng)接龍的617局

    VBA解決Windows空當(dāng)接龍的617局

    本文給大家分享的是使用VBA解決Windows空當(dāng)接龍的617局的方法和思路,有需要的小伙伴可以參考下。
    2015-09-09
  • Excel?VBA指定條件刪除整行整列的實現(xiàn)

    Excel?VBA指定條件刪除整行整列的實現(xiàn)

    本文主要介紹了Excel?VBA指定條件刪除整行整列的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • VBA 編程基礎(chǔ)

    VBA 編程基礎(chǔ)

    好多朋友想學(xué)習(xí)vba但相關(guān)資料不是很多,其實就是利用了vb的語法,結(jié)合office
    2009-07-07
  • VBA中Excel宏的介紹及應(yīng)用

    VBA中Excel宏的介紹及應(yīng)用

    本文主要介紹了VBA中Excel宏的介紹及應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • VBA工程加密PJ方式(兩種)

    VBA工程加密PJ方式(兩種)

    今天遇到一個excel小工具感覺不錯,想研究研究代碼,竟然有密碼,我就不淡定了。網(wǎng)上找了找代碼,改了一下就OK了。接下來通過本文給大家分享兩種方式破解VBA工程加密,需要的朋友參考下吧
    2021-12-12

最新評論

长治市| 谢通门县| 涡阳县| 鄂伦春自治旗| 客服| 阜康市| 阿鲁科尔沁旗| 肥西县| 江西省| 山西省| 平度市| 邹平县| 从江县| 沈丘县| 瓦房店市| 阿瓦提县| 乌什县| 南澳县| 苏州市| 宜良县| 休宁县| 永济市| 招远市| 宁陕县| 醴陵市| 清水河县| 甘孜| 齐齐哈尔市| 华池县| 当涂县| 年辖:市辖区| 会昌县| 阳原县| 周口市| 长顺县| 清徐县| 盖州市| 平湖市| 吉安市| 信宜市| 芒康县|