简体   繁体   English

VBA一次复制多个图表

[英]VBA-Copy multiple charts at one time

I have a total of 10 charts on a worksheet, 5 being in SI units and the other 5 being in ANSI. 我在工作表上总共有10张图表,其中5张以SI单位表示,其他5张以ANSI表示。 Each are divided into two separate columns. 每个都分为两个单独的列。 The 5 ANSI charts are aligned vertically in column "F". 5个ANSI图表在“ F”列中垂直对齐。 The 5 SI charts are aligned vertically in column "O". 5个SI图表在“ O”列中垂直对齐。

I want to copy only the charts in column "F". 我只想复制“ F”列中的图表。

How would I go about copying them all at one time? 我要如何一次全部复制它们?

I currently have them copied one at a time 我目前一次将它们复制一次

Code: 码:

wb.Sheets(w).ChartObjects("Chart 9").Chart.ChartArea.Copy
With ThisWorkbook.Worksheets("Plots")
    .Activate
    .Range( "F2").Select
    .Pictures.Paste
End With
wb.Sheets(w).ChartObjects("Chart 13").Chart.ChartArea.Copy
With ThisWorkbook.Worksheets("Plots")
    .Activate
    .Range("F17").Select
    .Pictures.Paste
End With

wb.Sheets(w).ChartObjects("Chart 14").Chart.ChartArea.Copy
With ThisWorkbook.Worksheets("Plots")
    .Activate
    .Range("F32").Select
    .Pictures.Paste
End With

wb.Sheets(w).ChartObjects("Chart 15").Chart.ChartArea.Copy
With ThisWorkbook.Worksheets("Plots")
    .Activate
    .Range("F47").Select
    .Pictures.Paste
End With

wb.Sheets(w).ChartObjects("Chart 16").Chart.ChartArea.Copy
With ThisWorkbook.Worksheets("Plots")
    .Activate
    .Range("F64").Select
    .Pictures.Paste
End With

Example of how they are arranged; 示例如何排列; 在此处输入图片说明

In a loop you could do: 在一个循环中,您可以执行以下操作:

Dim chartPasteRow as integer

chartPasteRow = 2
For each chartName in Array("Chart 9", "Chart 13", "Chart 14", "Chart 15", "Chart 16")
    wb.Sheets(w).ChartObjects(chartName).Chart.ChartArea.Copy
    ThisWorkbook.Worksheets("Plots").Range("F" & chartPasteRow).PasteSpecial xlPasteValues
    chartPasteRow = chartPasteRow + 15
Next chartName

If you want to paste all charts without having to specify you could do something like: 如果要粘贴所有图表而不必指定,则可以执行以下操作:

Dim chartPasteRow as integer

chartPasteRow = 2
For each cht In wb.Sheets(w).ChartObjects
    cht.Chart.ChartArea.Copy
    ThisWorkbook.Worksheets("Plots").Range("F" & chartPasteRow).PasteSpecial xlPasteValues
    chartPasteRow = chartPasteRow + 15
Next cht

This is making the assumption that each chart will get pasted every 15 rows. 这是假设每个图表每15行都会粘贴一次。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM