Excel的简单Word报告批量生成 vba笔记 (一)

本文介绍如何使用VBA批量生成Excel的简单Word报告,包括检查引用、处理图表位置、文字错误、图片格式转换、不同源数据的处理以及调试技巧,旨在帮助初学者掌握VBA自动化报告生成。

批量生成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

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值