复制绘图区域在 Powerpoint VBA 中无法正常工作

2023-11-30

我拼凑了以下代码,将图表的格式从一个图表复制到另一个图表。代码仍然很混乱,因为我试图想出引用图表的最佳方法(欢迎任何想法!)。

我无法准确复制主要是绘图区域和辅助访问的格式和位置。

一个页面上必须有两个图表,首先选择源,然后选择目标。目前来看,它们应该是同一类型。

感谢您的帮助。

Sub CopyChartFormat()

' Define the source and destination charts
Dim sourceChart As Chart
Dim destChart As Chart

'Check if two charts are selected
If ActiveWindow.Selection.Type <> ppSelectionShapes Then
    MsgBox "Please select two charts."
    Exit Sub
End If

If ActiveWindow.Selection.ShapeRange.Count <> 2 Then
    MsgBox "Please select two charts."
    Exit Sub
End If

Set sourceChart = ActiveWindow.Selection.ShapeRange(1).Chart
Set destChart = ActiveWindow.Selection.ShapeRange(2).Chart
    
''    If .HasChart = True Then
''    End If

    '' Chart size
    ActiveWindow.Selection.ShapeRange(2).Width = ActiveWindow.Selection.ShapeRange(1).Width
    ActiveWindow.Selection.ShapeRange(2).Height = ActiveWindow.Selection.ShapeRange(1).Height
    
'' Adjust plot area size and fill

    With destChart.PlotArea
        .Top = sourceChart.PlotArea.Top
        .Left = sourceChart.PlotArea.Left
        .Height = sourceChart.PlotArea.Height
        .Width = sourceChart.PlotArea.Width
    
''        .Format.Fill.ForeColor.RGB = sourceChart.PlotArea.Format.Fill.ForeColor.RGB
''        .Format.Line.ForeColor.RGB = sourceChart.PlotArea.Format.Line.ForeColor.RGB
    
    
    End With


End Sub

你错过了情节区域的内部。我添加了尽可能多的东西。我测试过,如果字体大小不同,我必须运行两次才能得到想要的结果。


Sub CopyChartFormat()

' Define the source and destination charts
Dim sourceChart As Chart
Dim destChart As Chart

'Check if two charts are selected
If ActiveWindow.Selection.Type <> ppSelectionShapes Then
    MsgBox "Please select two charts."
    Exit Sub
End If

If ActiveWindow.Selection.ShapeRange.Count <> 2 Then
    MsgBox "Please select two charts."
    Exit Sub
End If

Set sourceChart = ActiveWindow.Selection.ShapeRange(1).Chart
Set destChart = ActiveWindow.Selection.ShapeRange(2).Chart
    
''    If .HasChart = True Then
''    End If

    '' Chart size
    ActiveWindow.Selection.ShapeRange(2).Width = ActiveWindow.Selection.ShapeRange(1).Width
    ActiveWindow.Selection.ShapeRange(2).Height = ActiveWindow.Selection.ShapeRange(1).Height
    
'' Adjust plot area size and fill

    With destChart.PlotArea
        .Top = sourceChart.PlotArea.Top
        .Left = sourceChart.PlotArea.Left
        .Height = sourceChart.PlotArea.Height
        .Width = sourceChart.PlotArea.Width
        
        
        .InsideWidth = sourceChart.PlotArea.InsideWidth
        .InsideHeight = sourceChart.PlotArea.InsideHeight
        .InsideLeft = sourceChart.PlotArea.InsideLeft
        .InsideTop = sourceChart.PlotArea.InsideTop

        End With
        
        With destChart.Format
        .TextFrame2.TextRange.Font.Size = sourceChart.Format.TextFrame2.TextRange.Font.Size
        .TextFrame2.TextRange.Font.Name = sourceChart.Format.TextFrame2.TextRange.Font.Name
        End With
        
        

''        .Format.Fill.ForeColor.RGB = sourceChart.PlotArea.Format.Fill.ForeColor.RGB
''        .Format.Line.ForeColor.RGB = sourceChart.PlotArea.Format.Line.ForeColor.RGB
    
    
'    End With
    
    With destChart.ChartTitle.Format
            .TextFrame2.TextRange.Font.Size = sourceChart.ChartTitle.Format.TextFrame2.TextRange.Font.Size
    End With
    
    With destChart.ChartArea.Format
    
        .TextFrame2.TextRange.Font.Size = sourceChart.ChartArea.Format.TextFrame2.TextRange.Font.Size
        
    End With
    
    
    With destChart.Legend
        .Position = sourceChart.Legend.Position
        .Left = sourceChart.Legend.Left
        .Top = sourceChart.Legend.Top
        .Width = sourceChart.Legend.Width
        .Height = sourceChart.Legend.Height
    End With


'With destChart.Floor   'commented out as i keep on getting "Method failed"
'
'.Format.TextFrame2.TextRange.Font.Size = sourceChart.Floor.Format.TextFrame2.TextRange.Font.Size
'
'End With

With destChart.Format
.TextFrame2.TextRange.Font.Size = sourceChart.Format.TextFrame2.TextRange.Font.Size

End With


End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

复制绘图区域在 Powerpoint VBA 中无法正常工作 的相关文章

  • 使用 VBA 从 Word 发送 HTTP 请求

    我正在尝试将数据从 Word 文档发送到网页 我找到了一些代码 将其粘贴到新模块中并保存 当我运行它时 我收到 编译错误 用户定义的类型未定义 My code Sub http Dim MyRequest As New WinHttpReq
  • Excel 区分大小写的 COUNTIF 带通配符:本机函数?

    我正在尝试找到一个本机 Excel 函数 或其组合 该函数将以 COUNTIF 的方式精确运行 即处理通配符 但区分大小写 我已经成功使用了 SUMPRODUCT EXACT 函数 它们确实执行区分大小写的计数 但问题是我无法让它们识别通配
  • 范围联合无序

    我正在尝试按特定顺序复制各种范围 然后将它们从工作簿粘贴到不同的工作簿中 现在 我已经设置了范围 例如 Set rg ws1 Range A2 A i Offset rowOffset 1 columnOffset 0 Set rg1 ws
  • 如何修复在 Excel VBA 中使用查找函数的错误

    我尝试从另一张表中搜索值 而不是使用 FIND 函数 Private Function Search rng As Range FindString As String As Range With rng Set Search Find w
  • VBA 使用 Like 运算符删除行

    简单的事情并不简单 我试图根据具有以 2L 开头的数据的特定列删除行 所以我写了这段代码 LastRow可以理解 Sub Cleanup For i 1 To LastRow If Range F i Like 2L Then Rows i
  • 如何从 500 个 .xls Excel 文件中的单元格中获取数据?

    我想问你如何从许多Excel中的几个确定的 并且总是相同的 单元格中获取数据 xls文件 即我有一个清单 xls文件位于一个文件夹中 每个文件内部都有相同的表 但具有不同的值 我想从以下位置获取数据A1 C2 E3从文件夹中的所有文件中提取
  • 使用@@Identity

    我想知道如何从另一个数据库的表中获取最近生成的自动编号值 目前我正在这样做 Do Until rsA EOF Inserts new row here works Set rs New ADODB Recordset rs Open SEL
  • 用户窗体上的类对象 TextBox 可用方法

    我注意到 当我为文本框创建类模块并在表单上使用它时 通过在表单 init 事件中通过 VBA 添加 Enter 或 Exit 方法都不可用 当然 如果我只是在表单中添加一个文本框 我可以让 DblClick 方法正常工作 因此我的类设置正确
  • VBA 激活 Internet Explorer 窗口

    我正在制作一个宏 用于打开 Internet Explorer 导航并登录网站 一切正常 但我需要将 IE 窗口放在前面并激活它 这样我就可以使用SendKeys在上面 我发现网站和视频在名为的命令上有不同的方法AppActivate我已经
  • VBA - HTML 抓取问题

    我正在尝试从网站上抓取拍卖数据https www rbauction com heavy equipment auctions https www rbauction com heavy equipment auctions 我当前的尝试是
  • MS Access 表单按钮,允许用户浏览/选择文件,然后将文件导入到表中

    在我的数据库中 我可以使用以下命令创建命令按钮导入文件 DoCmd TransferText acImportDelim 导入的原始数据 导入规范 导入的原始数据 D Users Denise Griffith Documents Grif
  • 在合并的单元格中选择、插入照片并将其居中

    我是一名研发面包师 正在为我的团队制作食谱模板 模板中有照片 但我需要轻松地允许他们单击一个按钮 打开照片的文件选择器 然后将该照片放在合并的单元格中 我其实不太擅长做这个 Sub InsertPhotoMacro Dim photoNam
  • 将包含宏的工作簿复制到不带宏的工作簿

    我能够复制工作簿 复制到所需位置 其中在后台包含宏 该副本还包含相同的宏 我的问题是我不希望这个重复的工作簿包含宏 谁能告诉怎么做吗 先感谢您 将您的工作簿保存为无宏 即简单地保存为 Excel 工作簿 对于我的 Excel 2007 这是
  • 如何等到 Excel 计算公式后再继续 win32com

    我有一个 win32com Python 脚本 它将多个 Excel 文件合并到电子表格中并将其另存为 PDF 现在的工作原理是输出几乎都是 NAME 因为文件是在计算 Excel 文件内容之前输出的 这可能需要一分钟 如何强制工作簿计算值
  • 在Excel中,我可以使用超链接来运行vba宏吗?

    我有一个包含多行数据的电子表格 我希望能够单击一个单元格 该单元格将使用该行中的数据运行宏 由于行数总是在变化 我认为每行的超链接可能是最好的方法 ROW MeterID Lat Long ReadX ReadY ReadZ CoeffA
  • 获取当前 VBA 函数的名称

    对于错误处理代码 我想获取发生错误的当前 VBA 函数 或子函数 的名称 有谁知道如何做到这一点 编辑 谢谢大家 我曾希望存在一个未记录的技巧来自行确定函数 但这显然不存在 我想我会保留当前的代码 Option Compare Databa
  • 使用 VBScript 在日期字段值上选择错误的数据

    我有一张包含以下数据的表 现在 Excel 共有 36 个任务 每个任务有 4 列 第一个任务 即 Task1 名称将始终从 L 列开始 144 列描述了 36 个任务 现在我们需要按行进行检查 并需要检查 TNStart 开始日期 你们能
  • 如何使用vba复制Excel工作表中的动态范围

    我试图使宏中的范围是动态的 而不指定最后一行x Sheets SheetName Range A2 K1000 Copy在 1000 行中 我想将其更改为动态 因为有时我的数量会更少或更多 尝试这个 Sub Test Dim lRow as
  • 数据透视表错误 |无效的调用或过程

    我需要一些帮助来解决这个问题 我正在尝试创建一个数据透视表 从第一季度开始 在同一张表中包含一系列数据 第一个 if 语句在那里是因为最后一列并不总是包含标题 所以我将其包含在那里 我希望范围是动态的 因为所制作的表格的大小将根据工作表中数
  • 在Excel VBA中将图像(jpg)转换为base64?

    我需要在 Excel 中转换图像 或通过VBA 转为base64 最后我将进行XML输出 我怎样才能做到这一点 我需要引用 DOM 吗 我一直在读书这个问题 https stackoverflow com questions 169907

随机推荐