我有30张图表是从excel创建的,并粘贴到powerpoint幻灯片上.每个月,我都必须通过手动点击图表和编辑来更新这30个嵌入式图表.
我知道有一个选项可以使用paste special,因此可以通过单击更新链接自动更新图表中的数据.但是,我的图表需要由一些用户编辑.粘贴特殊选项不允许用户编辑图表.因此,我无法使用此粘贴特殊选项.
我认为解决方案在于在powerpoint中编写vba.这里有专家可以编写这个vba代码,以便在powerpoint中更新所有图表吗?我目前正在使用powerpoint 2007.非常感谢您的帮助.
我正在开发一个应用程序,它打开并读取以前嵌入PowerPoint演示文稿或Word文档中的XML文档.为了读取这个对象(xmlFile as Object),我必须这样做:
xmlFile.OLEFormat.DoVerb 1
这将打开包对象,我有另一个子例程,它获取Notepad.exe的打开实例,并将其内容读入ADODB流.
Google文档中提供了此过程的示例:
在此过程中,Notepad.exe会在几秒钟内获得焦点,并且无意中击键可能会导致意外结果或读取XML数据时出错.
我正在寻找两件事之一:
MouseKeyboardTest,在下面的子程序中不控制用户机器的东西.要么,对于#1:这是我发现的功能,我对它的使用持怀疑态度.我担心对用户系统进行这种控制.##我可以使用其他任何方法吗?##
Private Declare Function BlockInput Lib "USER32.dll" (ByVal fBlockIt As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub MouseKeyboardTest() 'both keyboard and mouse blocked
BlockInput True ' Turns off Keyboard and Mouse
' Routine goes here
Sleep 5000 ' Optional coding
BlockInput False ' Turns on Keyboard and Mouse
End Sub
Run Code Online (Sandbox Code Playgroud)
对于#2:一些背景,但问题似乎是无法使用除以外的任何方法可靠地提取嵌入对象DoVerb 1.由于我正在处理一个不受我的VBA技能影响的应用程序(记事本)中未保存的文档,这似乎是唯一的方法.完整的背景,在这里: …
试图将标题串起来就足以成为一种挑战......
我试图从PowerShell运行一些PowerPoint宏.我已经非常擅长从Powershell for Excel运行宏.当我在Excel上运行宏时,COM对象的Run()方法将采用各种参数,具体取决于宏是否有任何参数.但另一方面,PowerPoint Run()方法需要参数,我无法弄清楚如何传递它们.
我的宏期待通过一个字符串,我已经大量搜索并且缩短了.我总是得到这个错误:
错误:
type must not be ByRef
Run Code Online (Sandbox Code Playgroud)
我在PowerShell中整理了一个非常基本的PoC for PowerPoint:
码:
# PowerPoint test
Add-type -AssemblyName office
$PowerPoint = New-Object -comobject PowerPoint.Application
$PowerPoint.Visible = [Microsoft.Office.Core.MsoTriState]::msoTrue
$presentation2 = $PowerPoint.Presentations.open("C:\macros.pptm")
$presentation = $PowerPoint.Presentations.open("C:\Test For Macros.pptx")
$PowerPoint.run("macros.pptm!IAM",[ref]"Feb")
$presentation.save()
$presentation.close()
$presentation2.close()
$PowerPoint.quit()
# extra clean up omitted
Run Code Online (Sandbox Code Playgroud)
宏本身只是在框中移动一些文本,从PowerPoint运行时它可以正常工作.
需求:
我现在想要跨多个文件和幻灯片自动执行此操作.
有关PowerPoint COM对象的文档运行方法,显示了两个参数的要求.
我想将自定义ActiveX控件插入到Powerpoint幻灯片中.我已经创建了自定义控件并对其进行了注册,并测试了它的工作原理.我可以轻松地将自定义控件添加到UserForm,但无法将其直接添加到幻灯片中(根据Developer Tab - > Controls下的其他控件).
是否可以直接将自定义ActiveX控件添加到幻灯片?
如果没有,是否可以将UserForm直接嵌入到幻灯片中?
谢谢!
我觉得我缺乏一些真正的基础知识,如果在这里提出所有这些基本问题,我觉得我会浪费你的时间.能否请您推荐一本很好的PowerPoint VBA教程,向我解释基础知识.提供了一个带有例子的教程.
有谁知道PowerPoint中的VBA/VSTO编程的未来是什么?我一直在研究Office自动化项目,发现使用PowerPoint特别令人沮丧,因为它似乎比Excel或Word中的VBA支持低一级.
感觉MS正试图逐步淘汰PowerPoints中对VBA的支持,因为他们在2007版本中放弃了宏录制,而对象模型缺少一些关键功能支持.
我试图在Powerpoint 2010中使用VBA在以下代码的帮助下打开Excel文件.
Private Sub CommandButton1_Click()
Dim xlApp As Excel.Application
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
xlApp.Workbooks.Open "C:\lol\Book1.xlsx", True, False
Set xlApp = Nothing
Range("A8").Value = "Hello"
End
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误.
编译错误用户定义的类型未定义.
我错过了什么.任何人都可以共享示例代码片段来打开excel文件,更改单元格值并使用VBA在Powerpoint 2007和2010中关闭Excel文件.
我已经搜索了很多并尝试了不同的代码,但每次都得到相同的错误.:(
提前致谢.:)
请考虑以下代码
With ActivePresentation
Set sldNewSlide = .Slides.Add(.Slides.Count + 1, ppLayoutBlank)
With sldNewSlide
Set shpCurrShape = .Shapes.AddTextbox(msoTextOrientationHorizontal, 25, 50, 50, 200)
With shpCurrShape
With .TextFrame.TextRange
'------------ Below is an ARABIC string
.Text = ChrW$(&H6A9) & ChrW$(&H64A) & ChrW$(&H641) & " " & ChrW$(&H62D) & ChrW$(&H627) & ChrW$(&H644) & ChrW$(&H643)
With .Font
.Name = "someFontName" '-------------- THIS LINE IS NOT WORKING
.Size = 65
End With
End With
End With
End With
End With
Run Code Online (Sandbox Code Playgroud)
如上所述,阿拉伯语文本的字体未被更改.当文本框包含英文文本时,字体更改效果很好.如果有混合的阿拉伯语和英语文本,英语字体会更改,但阿拉伯语文本保持默认字体(即Arial).
此代码在Office 2003中运行正常,但在尝试在Office 2007/2010中运行时遇到此问题.我已仔细检查,我试图指定的字体已安装在计算机上.
虽然我只测试了阿拉伯语脚本语言(arabic/urdu/persian等),但我想在处理任何非拉丁语脚本语言时会出现这个问题.
有什么建议?似乎是ms office的后续版本中的一个错误.
PS.按照@Steve( …
我正在尝试使用进度指示将.pptx文件转换为.mp4视频文件.我正在使用Python 2.7.6以及win32com.client模块,以便在Microsoft Powerpoint 2013中自动执行一些操作.
到目前为止这是我的代码:
import win32com.client
powerpoint = win32com.client.Dispatch("Powerpoint.Application")
presentation = powerpoint.Presentations.Open(FileName='myFile.pptx',
WithWindow=False)
try:
# May need a few other parameters as well
presentation.CreateVideo('out.wmv')
except:
raise SystemExit
Run Code Online (Sandbox Code Playgroud)
我的问题是我没有得到导出到视频进展的迹象.我知道这些信息是可用的,因为从应用程序中导出视频时,Powerpoint本身会显示一个确切的进度条.
到目前为止,我设法检索的唯一信息是轮询该CreateVideoStatus属性,该属性仅告诉我转换是否已经结束.
while presentation.CreateVideoStatus == 1:
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)
然而,根据这篇文章Powerpoint 2013 - 导出到视频的进展,用户Steve Rindsberg建议我们应该使用ResampleMediaTasks对象及其PercentComplete()方法来获得进展.
关于如何在Python中实现这一点的任何想法?
我正在尝试制作一个数学练习powerpoint,其中学生将使用数字1 - 20来呈现随机添加问题.我一直在使用David Marcovtiz(和其他人)的教程,并使用他的代码作为起点.由于我的观众是年轻学生,我希望数学问题不是在消息框中,而是在文本框或形状之类的东西,我可以自定义,并为年轻学生提供大的视觉吸引力.
所以,我想要做的......在一个powerpoint节目中
如果答案不正确,则消息或图片会闪烁然后消失.
自动/随机生成新的添加问题我想将添加问题的数量设置为例如20,然后将幻灯片移动到评分幻灯片,该幻灯片显示他们在图片中的分数,例如每个正确答案的星号.
更新:使用Activex文本框:
我已经成功使用activex文本框,能够随机显示两个数字并将它们相乘并在第三个activex文本框中显示答案,我将其隐藏在幻灯片中.我使用第四个作为输入框,让学生输入他们的答案.如果这与第三个框中的答案相同,我可以显示一个星形并清除框然后移动到下一张幻灯片.如果它不一样,我可以去显示另一张图片,然后转到下一张幻灯片.(我原本希望幻灯片更新并使用一张幻灯片提出20个问题,但发现这很困难.)
目前,这需要单击三个命令按钮.
到目前为止我所管理的内容(我知道这对你来说似乎很难过,可能不稳定,但对我来说是一项重大成就,并且'比特'正在运作)我可以管理它用于乘法但是当我+值时,例如9 + 3 ,我得到93
Private Sub CommandButton1_Click()
TextBox1.Value = Int(10 * Rnd)
TextBox2.Value = Int(10 * Rnd)
TextBox3.Value = TextBox1.Value * TextBox2.Value
End Sub
Private Sub CommandButton2_Click()
If TextBox4.Value = TextBox3.Value Then
ActivePresentation.Slides("problem").Shapes("badge5").Visible = True
ActivePresentation.Slides("score").Shapes("badge5").Visible = True
Else
ActivePresentation.Slides("problem" _).Shapes("incorrect").Visible = True
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
End If
End Sub
Private Sub CommandButton3_Click()
SlideShowWindows(1).View.Next …Run Code Online (Sandbox Code Playgroud) powerpoint-vba ×10
powerpoint ×7
vba ×7
vsto ×2
activex ×1
adodb ×1
fonts ×1
ole ×1
powershell ×1
python ×1
pywin32 ×1
random ×1