Vba 如何使用addOLEObject函数以只读方式打开文件?
我在PPT幻灯片中有一个按钮[DisplayChart],它使用AddOLEObject将Excel图表嵌入到幻灯片中Vba 如何使用addOLEObject函数以只读方式打开文件?,vba,powerpoint,Vba,Powerpoint,我在PPT幻灯片中有一个按钮[DisplayChart],它使用AddOLEObject将Excel图表嵌入到幻灯片中 Set shapeOnPPT = ActivePresentation.Slides.FindBySlideID(mySlideID).Shapes.AddOLEObject(Left:=100,_ Top:=100, Width:=500, Height:=400, FileName:="c:\ThisDoc\Tester123.xlsx", Link:=msoTrue)
Set shapeOnPPT =
ActivePresentation.Slides.FindBySlideID(mySlideID).Shapes.AddOLEObject(Left:=100,_
Top:=100, Width:=500, Height:=400, FileName:="c:\ThisDoc\Tester123.xlsx", Link:=msoTrue)
问题
当我进入presenter视图并单击[DisplayButton]时,Tester123.xlsx
被另一个用户打开,PPT将“挂起”。ctrl-alt-del显示Excel应用程序已打开,并显示以下提示消息:
单击只读或通知将关闭Excel应用程序,PPT将不再挂起
我尝试过的
我想我需要以只读方式自动打开testing.xlsx
。据我所知,我似乎可以使用
链接参数
确定OLE对象是否链接到从中创建它的文件。如果为ClassName指定了一个值,则此参数必须为msoFalse
但是,将此参数更改为msoTrue
或msoFalse
仍然无法解决任何问题
另外,在Windows 7中,此问题不会发生。我目前正在使用Windows 10。无法测试它,但您可以试试这个
Application.DisplayAlerts = false
Set shapeOnPPT =
ActivePresentation.Slides.FindBySlideID(mySlideID).Shapes.AddOLEObject(Left:=100,_
Top:=100, Width:=500, Height:=400, FileName:="c:\ThisDoc\Tester123.xlsx", Link:=msoTrue)
Application.DisplayAlerts = true
显然,在添加OLE对象时,没有任何参数/函数允许我们这样做。最接近的方法是在打开文件之前使用设置文件为只读。这允许多个程序查看文件内容 e、 g 注意:请记住在运行该函数后将其设置为
vbNormal
,否则当其他程序尝试访问该文件时可能会出现问题
另外,如果您的应用程序在运行
.addOLEObject
时崩溃,则该文件仍将处于只读状态,您必须手动将其更改回。不起作用。。。我不需要隐藏显示警报。。。我只需要以编程方式以只读方式打开.xlsx
文件。可能您可以尝试使用Application.SendKeys(“~”)方法
SetAttr "c:\ThisDoc\Tester123.xlsx", vbReadOnly
Set shapeOnPPT =
ActivePresentation.Slides.FindBySlideID(mySlideID).Shapes.AddOLEObject(Left:=100,_
Top:=100, Width:=500, Height:=400, FileName:="c:\ThisDoc\Tester123.xlsx", Link:=msoTrue)
SetAttr "c:\ThisDoc\Tester123.xlsx", vbNormal