VBA 循环输出多个图表到 Word 文档
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 文件。
希望这次的修改能满足你的需求!如果你还有其他问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/wy4 著作权归作者所有。请勿转载和采集!