egg*_*orx 10 excel powerpoint vba excel-vba
在开始之前,这里有一些历史:
在Excel中创建VBA以打开和读取三(3)个Excel文件(包括其自身)并将数据输入图表/表格/图表到PowerPoint演示文稿中. 这个版本运行得很漂亮.VBA由用户表单启动
修改后的代码以满足传递给我的要求.当在一个特定幻灯片中加载图形时,这个导致对象'ChartData'的VBA方法'激活'的错误.此数据从启动VBA的工作表传输.
我无法稳定地重新创建此错误,直到我开始保存Excel文件,该文件在它询问时启动脚本.现在我能.
没有VBA驻留在powerpoint演示文稿中.
测试此用户的用户第一次遇到错误.我不.但是,在成功或不成功运行后保存Excel工作簿之后,我会进行进一步的迭代.
发生错误时我注意到的屏幕行为:
只有在我保存启动过程的Excel并且在尝试重新创建错误时再次测试过程后才会发生.
当VBA在后台运行时,PowerPoint演示文稿成为"激活的"应用程序
发生在同一幻灯片和图表上(是的,使用PowerPoint中的对象标签).
当发生错误并且我破坏代码时,我无法使用"文件"菜单关闭PowerPoint或Excel.我必须使用右上角的"红色X"来关闭.色带和标签也无法使用(不会对点击事件做出反应).Microsoft确实询问"保存"选项.
我尝试过的:
这是它旅行的功能.它在特定图形(即shapeName)的trpChartData.Activate上跳闸:
Function insGraphInfo(ByVal numOfSlide As Integer, ByVal shapeName As String, ByVal cellToMod As String, ByVal valToIns As Variant) As Variant
'Inserts data into a CHART TYPE graph
On Error GoTo ERR_INS_GRAPH
Dim trpChart As PowerPoint.Chart
Dim trpChartData As ChartData
Dim trpWkBk As Excel.Workbook
Dim trpChartSheet As Excel.Worksheet
Dim errString As String
Set oPPTSlide = oPPTFile.Slides(numOfSlide)
With oPPTSlide
.Select
End With
Set oPPTShape = oPPTFile.Slides(numOfSlide).Shapes(shapeName)
Set trpChart = oPPTShape.Chart
Set trpChartData = trpChart.ChartData
Debug.Print "Activating: " & shapeName & " in slide number: " & numOfSlide
errString = "Activating: " & shapeName & " in slide number: " & numOfSlide
trpChartData.Activate
Debug.Print shapeName & " activated."
errString = shapeName & " activated."
errString = "Setting Workbook and Worksheet Objects"
Set trpWkBk = trpChartData.Workbook
Set trpChartSheet = trpWkBk.Worksheets(1)
errString = "Inserting Value into appropriate cell)"
With trpChartSheet
.Range(cellToMod).Value = valToIns
End With
insGraphInfo = valToIns
errString = "Refreshing Chart."
With oPPTShape 'Refreshes
.Chart.ChartData.Activate
.Chart.ChartData.Workbook.Close
.Chart.Refresh
End With
Set trpWkBk = Nothing
Set oPPTSlide = Nothing
Set oPPTShape = Nothing
Exit Function
ERR_INS_GRAPH:
MsgBox "An error occurred while: " & errString
Resume Next
End Function
Run Code Online (Sandbox Code Playgroud)
Excel 和 PowerPoint 由两个不同的开发团队创建。
PowerPoint.Chart与Excel.Chart不同
是的,它们看起来一样,您会认为您对它们的属性具有相同级别的访问权限,但这就是您错误的地方。PowerPoint 版本非常有限。
无论如何,据我所知,当你声明时你错了
Dim trpChartData As ChartData
Run Code Online (Sandbox Code Playgroud)
代替
Dim trpChartData As PowerPoint.ChartData
Run Code Online (Sandbox Code Playgroud)
正如雷切尔指出的那样,
trpChartData 声明时没有库限定符,因此默认为 Excel.ChartData
除此之外,你从未清除trpChartData过
Set trpChartData = Nothing
Run Code Online (Sandbox Code Playgroud)
我也不知道您在哪里创建了.QuitExcel 应用程序。Chart.Workbook这可以解释为什么后来任务管理器中打开了 Excel 版本。尝试添加这个...
Dim xlApp as Excel.Application
'
'
Set xlApp = .Chart.ChartData.Workbook.Application
'
'
xlApp.Quit
Set xlApp = Nothing
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2460 次 |
| 最近记录: |