Excelの簡単Wordレポート量産vbaノート(一)
3181 ワード
Excelの簡単なWordレポート/vba/マクロの一括生成
注意:
Sub piliangshengcheng()
Set dd = CreateObject("excel.application")
dd.workbooks.Open ("D:\ALM \VBA\ \ .xlsx")
dd.sheets("sheet5").Select
For i = 1 To dd.worksheetfunction.counta(dd.Range("N:N"))
'range
brand = dd.Range("N" & i)
mubiao = "D:\ALM \VBA\ \ _ \" & brand & ".docx"
dd.ActiveSheet.PivotTables(" 3").PivotFields(" ").ClearAllFilters
dd.ActiveSheet.PivotTables(" 3").PivotFields(" ").CurrentPage = brand
FileCopy "D:\ALM \VBA\ \ .docx", mubiao
Set ddd = Documents.Open(mubiao)
With Selection.Find
.Text = " "
.Replacement.Text = brand
.Forward = True
.Execute Replace:=wdReplaceAll
End With
dd.Range("A3:B" & dd.worksheetfunction.counta(dd.Range("B:B")) + 1).Select
dd.Selection.Copy
With Selection.Find
.Text = " 1"
.Replacement.Text = ""
.Forward = True
.Execute
End With
Selection.MoveUp wdLine, 1
Selection.Paste
Application.ActiveDocument.Tables(1).PreferredWidth = 400
Application.ActiveDocument.Tables(1).Select
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
dd.ActiveSheet.ChartObjects(" 1").Activate
dd.ActiveSheet.Shapes(" 1").Width = 400
dd.ActiveChart.ChartArea.Copy
With Selection.Find
.Text = " 1"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
' .wrap
.Execute
End With
Selection.MoveUp wdLine, 1
Selection.PasteSpecial Link:=False, DataType:=14, Placement:=wdInLine, _
DisplayAsIcon:=False
With Selection.Find
.Text = " "
.Replacement.Text = dd.Range("F21")
.Forward = True
.Execute Replace:=wdReplaceAll
End With
ddd.Save
ddd.Close
Set ddd = Nothing
Next
dd.DisplayAlerts = False
dd.Quit
End Sub
注意:
1.各参照がソース(親)//(90%のエラーソース)を宣言しているかどうかを確認します.brand = dd.Range("N" & i)
2.グラフ位置の挿入エラー.Wrap = wdFindContinue
3.文字挿入時にエラーが発生.Execute Replace:=wdReplaceAll
4.画像のリンク解除(画像形式で貼り付け)Selection.PasteSpecial Link:=False, DataType:=14, Placement:=wdInLine, _
DisplayAsIcon:=False
5.ソース・レポートの長さが等しくない場合、最大範囲をとる& xx.worksheetfunction.counta(dd.Range("B:B")) + 1
6.デバッグ時の単独運転は極力避けるSet dd = CreateObject("excel.application")
dd.workbooks.Open ("D:\ALM \VBA\ \ .xlsx")
誤報を避ける
7.キーワードチェック大文字小文字検出精度100%とは限らないSet ddd = Documents.Open(mubiao)
Set ddd = Document.Open(mubiao) //error
7.ファイル呼び出しの開始と終了...コードクローズドSet dd = CreateObject("excel.application")
dd.workbooks.Open (" ")
Set ddd = Documents.Open(mubiao)
ddd.Save
ddd.Close
Set ddd = Nothing
dd.DisplayAlerts = False //excel
dd.Quit
brand = dd.Range("N" & i)
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
Selection.PasteSpecial Link:=False, DataType:=14, Placement:=wdInLine, _
DisplayAsIcon:=False
& xx.worksheetfunction.counta(dd.Range("B:B")) + 1
Set dd = CreateObject("excel.application")
dd.workbooks.Open ("D:\ALM \VBA\ \ .xlsx")
Set ddd = Documents.Open(mubiao)
Set ddd = Document.Open(mubiao) //error
Set dd = CreateObject("excel.application")
dd.workbooks.Open (" ")
Set ddd = Documents.Open(mubiao)
ddd.Save
ddd.Close
Set ddd = Nothing
dd.DisplayAlerts = False //excel
dd.Quit