首先將word模板中需要填寫excel中數據的空白處用自己獨特的字符串標記,比如 數據001 什么的。如下圖:
這樣,就可以用vba搜尋這些自己獨特的標記來根據excel內容填充word了。
第一個填好的如下圖:
而excel中數據如下圖:
然后代碼如下:
1 Sub 生成Word文件_Click() 2 Dim Word對象 As New Word.Application, 當前路徑, 導出文件名, 導出路徑文件名, i, j 3 Dim Word表格行號, Word表格列號, Excel數據表列號 4 Dim Str1, Str2 5 當前路徑 = ThisWorkbook.Path 6 B = InputBox("請輸入數據開始行", "提示") 7 c = InputBox("請輸入數據結束行", "提示") 8 9 判斷 = 0 10 For i = B To c 11 導出文件名 = "通知書" 12 FileCopy 當前路徑 & "\通知書.doc", 當前路徑 & "\" & 導出文件名 & "(" & Sheets("統計表").Range("c" & i) & ").doc" '可以將Sheets("1").Range("B" & i)換成其他數據 13 導出路徑文件名 = 當前路徑 & "\" & 導出文件名 & "(" & Sheets("統計表").Range("c" & i) & ").doc" '可以將Sheets("1").Range("B" & i)換成其他數據 14 With Word對象 15 .Documents.Open 導出路徑文件名 16 .Visible = False 17 With .Selection.Find 18 For x = 7 To 1 Step -1 '從大到小,防止字符串序號低位與高位串擾,填寫數據即excel表總列數 19 Str1 = "數據" & Format(x, "000") 20 'MsgBox "str1" & Str1 21 Str2 = Sheets("統計表").Cells(i, x) 22 .Text = Str1 '查找到指定字符串 23 .Replacement.Text = Str2 '替換字符串 24 .Execute Replace:=wdReplaceAll '全部替換 25 Next x 26 End With 27 28 29 30 .Selection.WholeStory '全部選中 31 .Selection.Font.Color = wdColorAutomatic '字符為自動顏色 32 End With 33 Word對象.Documents.Save 34 Word對象.Quit 35 Set Word對象 = Nothing 36 ' If i = c Then 37 ' MsgBox "已輸出到 Word 文件!", 0 + 48 + 256 + 0, "提示:" 38 ' End If 39 40 Next i 41 If 判斷 = 0 Then 42 i = MsgBox("已輸出到 Word 文件!", 0 + 48 + 256 + 0, "提示:") 43 End If 44 45 End Sub
這個excelhome里給的一個代碼。挺好的,就是中文變量挺多的。