VBA 循环输出多个图表到 Word 文档

如果你有多张图表,并希望循环输出它们到 Word 文档中,请尝试以下修改后的代码:

Sub SaveChartsAsBMPAndInsertToWord()
    ' 打开 Excel 文件
    Dim wbExcel As Workbook
    Set wbExcel = Workbooks.Open('C:\path\to\your\excel\file.xlsx')
    
    ' 打开 Word 文档
    Dim wordApp As Object
    Set wordApp = CreateObject("Word.Application")
    wordApp.Visible = True
    Dim wordDoc As Object
    Set wordDoc = wordApp.Documents.Add
    
    ' 循环处理每个图表
    Dim ws As Worksheet
    Dim chartObj As ChartObject
    Dim picPath As String
    Dim i As Integer
    
    Set ws = wbExcel.Worksheets("Sheet1") ' 替换为你实际使用的工作表
    i = 1 ' 图表索引从1开始
    
    Do Until i > ws.ChartObjects.Count
        ' 选择工作表中的图表
        Set chartObj = ws.ChartObjects(i)
        
        ' 将图表保存为 BMP 图片文件
        picPath = 'C:\path\to\your\image' & i & '.bmp' ' 使用不同的文件名
        chartObj.Chart.CopyPicture
        
        With CreateObject("Shell.Application")
            .Namespace(picPath).InvokeAsFile = True
        End With
        
        ' 插入 BMP 图片到 Word 文档
        wordDoc.Content.Paste
        
        i = i + 1
    Loop
    
    ' 保存 Word 文档
    wordDoc.SaveAs 'C:\path\to\your\document.docx' ' 替换为你想要保存的完整路径
    wordDoc.Close
    wordApp.Quit
    
    ' 关闭 Excel 文件
    wbExcel.Close False
End Sub

这个修改后的代码在原有基础上添加了循环处理每个图表的逻辑。它会遍历指定的工作表中的每个图表,将每个图表保存为不同的 BMP 图片,并将它们逐个插入到 Word 文档中。

在代码中,你需要将以下部分替换为你实际使用的路径和工作表名称:

  • 'C:\path\to\your\excel\file.xlsx':将其替换为你的 Excel 文件的完整路径。
  • 'C:\path\to\your\image':将其替换为你想要保存 BMP 图片的路径,注意文件名会以数字作为后缀。
  • 'C:\path\to\your\document.docx':将其替换为你想要保存 Word 文档的完整路径。
  • ws = wbExcel.Worksheets("Sheet1"):将 "Sheet1" 替换为你实际使用的工作表名称。

运行该宏后,它会打开 Excel 文件,逐个处理每个图表,将它们保存为 BMP 图片,并将它们插入到 Word 文档中。最后,宏将保存并关闭 Word 文档,然后关闭 Excel 文件。

希望这次的修改能满足你的需求!如果你还有其他问题,请随时提问。

VBA 循环输出多个图表到 Word 文档

原文地址: https://www.cveoy.top/t/topic/wy4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录