Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 从一张图纸复制到另一张图纸时调整图表的大小_Vba_Excel - Fatal编程技术网

Vba 从一张图纸复制到另一张图纸时调整图表的大小

Vba 从一张图纸复制到另一张图纸时调整图表的大小,vba,excel,Vba,Excel,我正试图把我的图表从一张纸复制到另一张纸上 在我的工作表中,我有不同大小的图表。但是在sheet2中,我希望我的图表具有相同的高度和宽度 有人能建议我怎么做吗 我运行了下面的代码,只是为了复制图表。我想要常规尺寸的 Sub Overview() Sheets("Cat").Select ActiveSheet.ChartObjects(1).Activate ActiveChart.ChartArea.Copy Sheets("Overview").Select Range("B5").Sele

我正试图把我的图表从一张纸复制到另一张纸上

在我的工作表中,我有不同大小的图表。但是在sheet2中,我希望我的图表具有相同的高度和宽度

有人能建议我怎么做吗

我运行了下面的代码,只是为了复制图表。我想要常规尺寸的

Sub Overview()
Sheets("Cat").Select
ActiveSheet.ChartObjects(1).Activate
ActiveChart.ChartArea.Copy
Sheets("Overview").Select
Range("B5").Select
ActiveSheet.PasteSpecial Format:="Picture (PNG)", Link:=False, _
DisplayAsIcon:=False
Range("B5").Select

如果我没弄错的话,你想调整工作表中所有聊天的大小,使它们具有相同的宽度和高度

下面的代码将在一张纸上运行所有图表,并将设置宽度和高度的新值,同时也将更改位置

'Set Position off all Charts
    Dim intTop As Integer
    Dim intLeft As Integer
    Dim idx As Integer
    intTop = 275 'start Position from the Top for the first chart
    intLeft = 15 'strat positon from the left for the first chart
    idx = 0

    wsDia.Select
    For Each myChart In ActiveSheet.ChartObjects
        myChart.Width = 450
        myChart.Height = 200
        myChart.Top = intTop
        myChart.Left = intLeft

        intLeft = intLeft + 465
        idx = idx + 1
        If idx = 4 Then 'after 4 Charts, go to next row of charts
            intLeft = 15
            intTop = intTop + 230
            idx = 0
        End If

    Next myChart
更新:

如果要更改PNG图片的高度,需要如下循环:

第一个循环是,如果要使用锁定的比率设置大小。这意味着,如果将高度设置为500,则宽度将自动设置

For Each mypNg In ActiveSheet.Shapes


    mypNg.Height = 500
Next
如果要解除锁定比率,必须添加:

    mypNg.LockAspectRatio = msoFalse
试试这个代码

Dim Cht As Chart
Dim Ws As Worksheet, toWs As Worksheet
Set Ws = Sheets("Cat")
Set toWs = Sheets("Overview")
Set Cht = Ws.ChartObjects(1).Chart
Cht.CopyPicture
toWs.Activate
Range("b5").Activate
toWs.Paste

它们不属于图表类别,我将它们复制粘贴在sheet2中,因此它们是图像Png的形式format@Jenny好啊你为什么要将图表复制为图像?因为在一张表中,我希望得到不同表的合并结果。所以我只是复制图像@Jenny好的,明白了。还有一个问题。您现在知道图表的数据源是否会在以后的工作中更改吗?因为那样我会建议你复制图表。是的,它们会改变