如何利用excel和Word批量生成公文?
本人做人事工作,近期需要給幾百個員工出具公函,基本格式都一樣,就是裡面的員工編號、姓名、出生時間有變,這幾個要素我excel表都是全的,但一個個複製到Word模板里又慢又容易出錯,有沒有批量生成的方式?求助
來講講郵件合併的方法。郵件合併會生成單個文件,這樣列印的時候會比較方便。
首先我們也是先有這麼個數據表:
然後我們也要有模板:
注意:末尾不要有多餘的回車或者分頁符。郵件合併會自動給每一項創建一頁。
然後點擊郵件 - 開始郵件合併 - 信函點擊旁邊的選擇收件人 - 使用現有列表 - 選擇你的 Excel 表格
這裡按照實際情況選
如果不是所有數據都要填進去的話旁邊有個按鈕「編輯收件人列表」那裡可以過濾一下。
然後我們把游標定位到要填寫姓名的地方
插入合併域 - 姓名(這裡顯示的是 Excel 表格列標題)其他地方同理,全部完成後效果如圖
然後就好了。戳右邊的完成併合並
點擊編輯單個文檔然後選擇「全部」可以看到最終合併的文檔,或者你可以選幾頁來看。
點擊列印文檔就直接列印了。用這種方法如果要對每一頁創建新文檔的話請參考微軟官方教程:如何以編程方式將每頁或每節的文檔另存為一個單獨的文件
(完)首先呢,先在一個文件夾下新建兩個空文檔,一個 Data.xlsx 文件,一個 Main.docx 文件。Data.xlsx 文件用來存儲人員信息的, Main.docx 文件就是你要生成公文的模板。
Data.xlsx 裡面就是人員姓名,編號,出生日期什麼的。不要在意日期和編號這些細節。然後我們打開 Word 文檔,點擊 開發工具 —— 宏。
" 打開 Data.xlsx 文件
Dim MyFile As Object
Set MyFile = CreateObject("Scripting.FileSystemObject")
Dim FilePath As String
FilePath = ActiveDocument.Path "Data.xlsx"
" 如果不存在 Data.xlsx 文件
If Not MyFile.FileExists(FilePath) = True Then
" 退出
MsgBox "無法找到文件: Data.xlsx", Title:="Error"
Exit Sub
End If
" 讀取 Data.xlsx 文件
Dim ExcelObject As Object
Set ExcelObject = GetObject(FilePath)
Set Table = ExcelObject.Sheets(1).UsedRange()
" 循環
For i = 1 To Table.Rows.Count
" 清空變數
For Each Var In ActiveDocument.Variables
Var.Delete
Next
" 添加一個名字為 Name 的變數,它的值是 Data.xlsx 中第 i 行第 1 列的內容
ActiveDocument.Variables.Add Name:="Name", Value:=Table.Cells(i, 1).Text
" 添加一個名字為 Number 的變數,它的值是 Data.xlsx 中第 i 行第 2 列的內容
ActiveDocument.Variables.Add Name:="Number", Value:=Table.Cells(i, 2).Text
" 添加一個名字為 Date 的變數,它的值是 Data.xlsx 中第 i 行第 3 列的內容
ActiveDocument.Variables.Add Name:="Date", Value:=Table.Cells(i, 3).Text
" 更新 Word 文檔
ActiveDocument.Fields.Update
" 設置保存目錄
ChangeFileOpenDirectory ActiveDocument.Path
" 保存文件,文件名為:姓名.docx
ActiveDocument.SaveAs2 FileName:=Table.Cells(i, 1).Text ".docx", FileFormat:= _
wdFormatXMLDocument, LockComments:=False, Password:="", AddToRecentFiles _
:=True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts _
:=False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False, CompatibilityMode:=15
Next
如下圖所示。
保存並關閉代碼框。然後就是寫模板了,用現成的就好。我隨便寫了一個公文,請不要在意公文的內容。如下圖所示。
公文中有姓名、編號、出生年月等信息。我們刪掉這些信息。然後把游標放在要插入姓名的位置,然後按下 Ctrl + F9。
裡面輸入 DOCVARIABLE
Name,編號後面如法炮製,輸入 DOCVARIABLE Number,出生年月也一樣。圖中 Number 的大小寫有問題,但是不要緊,vba 不認大小寫。
然後公文就完成了。最後一步:
找到我們剛剛寫好的那個宏,點擊運行。 瞬間生成 9 份公文。打開 Qiqi.docx,看一下內容。
已經全部填好了。以上!
WORD的郵件合併功能,具體請百度
像前面的答主使用VBA也是可以的,就是對新手不太友好。其實這種功能Word本身是有提供的,就是郵件合併功能。不過據我所知,只能把所有的公函合併到同一個Word文檔,真正要每個人存一份文檔的話還是只能用VBA。
如果是我,我會編程解決先把模板弄出來,然後用Office的COM介面讀取文檔內容,替換相關的條目如此循環這對題主的要求太高了題主可以學學vba或者看一下Office2013的內容控制項,使用內容控制項在 Word 2013 的新增功能不知道有沒有幫助
最後一段要修改,如下便可
寫那麼複雜的VBA, 請好好去重新學習WORD, 現在用WORD 自身的功能已經可以快速搞定。
這個鏈接的視頻教程中: 1小時玩轉職場WORD
第12課,就是說的這個操作的用法。總共3個操作步驟,不到5分鐘,你就能學會。
重點是,這個課程現在還是免費的! 學會了的,請點贊。以上各位都只會說VBA 而不敢寫一個嗎?只有第一的答主和第二的答主算是答題,剩下的,呵呵呵
我有一個自己寫的小工具,.exe打開即可使用,需要的話 郵件 next_11@126.com
WPS郵件合併功能只支持自有格式.et,如果是.xls的文檔,會不支持。WPS的郵件合併功能可以生成不同新文檔,再表格裡面加一列文檔名,可以根據文檔命名要求輸入文檔名稱。
Alt+F9 怎麼又是後會顯示空白?顯示未提供文檔變數的地方,運行宏後也不顯示引用,還是顯示未提供文檔變數而且運行後文件會出現,錯誤4198
不知道你用的word哪個版本,郵件合併可以,上網搜一下教程
office自帶的vba可以循環,批量生成
以前做過,批量從excel里取出數據生成word文件,用vba很容易實現。
推薦閱讀:
※Windows 8 64位系統,使用什麼殺毒軟體比較好?
※Windows 平台最好的軟體管家是什麼?
※快速做出有界面的程序用什麼編程語言??
※為什麼 Google 一直做開源軟體?
※為什麼操作系統一次只能安裝一個程序?
TAG:軟體 | MicrosoftOffice | MicrosoftWord | MicrosoftExcel |