昨天和小夥伴們分享了用VBA把Excel的內容寫入到Word的表格中,生成一個一個Word的方法
今天和小夥伴們分享用VBA把Excel的內容寫入到Word文字中間去
下面的是一個Word模板文件,一般都是先做一個模板,然後把內容填到模板,這樣VBA代碼寫起來比較好寫。
要生成下面的忍者檔案,每一個忍者生成一個Word文檔,保存在當前文件夾下面
第3行的代碼,創建Word應用程式對象,相當於啟動Word軟體
第5行的代碼,把當前工作表的已使用區域賦值給數組
第7行的代碼,循環數組的每一行,從第2行開始循環,第1行是標題
第8行的代碼,打開當前文件夾下面的一個檔案.docx的Word文檔
咱們先來看第20行的代碼,word.range(11,11),小夥伴數一下從第一個字符到編號有10個字符當你把滑鼠定位在編號後面這,10+1,就是要插入字符的位置
可以用下面的代碼獲取光標所在的字符起始位置和字符結束位置
代碼要在Word vba模塊裡才可以使用
Sub m()MsgBox Selection.Start & ";" & Selection.EndEnd Sub********
為什麼要從最後往前插入呢?
小夥伴們看模板文檔,一開始這幾個要插入內容的位置都是固定的,但是如果從前面往後面插入內容,當你第一個編號插入內容了,後面要插入內容的位置就變動了
第9行的代碼是在文檔末尾插入圖片,InlineShapes.AddPicture是Word vba插入圖片的方法
InsertAfter方法是在所在位置後面插入文本
第21行的代碼,把Word文檔另存為到當前文件夾下面,命名為忍者名字+檔案
第22行的代碼,關閉打開的Word文檔
Sub main()Dim word, appSet app = CreateObject("Word.Application")Dim arrarr = ActiveSheet.UsedRangeDim i As LongFor i = 2 To UBound(arr) Set word = app.documents.Open(ThisWorkbook.Path & Application.PathSeparator & "檔案.docx") word.Range(85, 85).InlineShapes.AddPicture arr(i, 12), False, True word.Range(81, 81).InsertAfter arr(i, 11) word.Range(71, 71).InsertAfter arr(i, 10) word.Range(61, 61).InsertAfter arr(i, 9) word.Range(51, 51).InsertAfter arr(i, 8) word.Range(41, 41).InsertAfter arr(i, 7) word.Range(32, 32).InsertAfter arr(i, 6) word.Range(27, 27).InsertAfter arr(i, 5) word.Range(24, 24).InsertAfter arr(i, 4) word.Range(20, 20).InsertAfter arr(i, 3) word.Range(16, 16).InsertAfter arr(i, 2) word.Range(11, 11).InsertAfter arr(i, 1) word.SaveAs ThisWorkbook.Path & Application.PathSeparator & arr(i, 2) & "檔案.docx" word.CloseNext iEnd Sub