我想知道是否有人可以帮助我解决我遇到的 PowerPoint VBA 问题。我有一个由两个 PowerPoint 演示文稿组成的系统,我使用 VBA 以交互方式动态链接它们,并使用同一文件夹中的外部 VBS 脚本打开,该文件夹在演示模式下播放 PowerPoint 并在屏幕上调整大小和位置。VBS 脚本链接到该子程序,该子程序会自动运行其他链接的子程序:
Sub Open_Presentation_VEdit()
Dim Ret
Dim Ret2
Dim PPT1 As Object
Set PPT1 = CreateObject("PowerPoint.Application")
Dim PPT2 As Object
Set PPT2 = CreateObject("PowerPoint.Application")
Dim filePath As String
filePath = ActivePresentation.Path
Ret = IsWorkBookOpen(filePath & "\Stand Up Title Page - With Macros.pptm")
Ret2 = IsWorkBookOpen(filePath & "\Stand Up Summary and Breakdowns - With Macros.pptm")
If Ret = True And Ret2 = False Then
Set PPT1 = Presentations("Stand Up Title Page - With Macros.pptm")
Set PPT2 = Presentations.Open(filePath & "\Stand Up Summary and Breakdowns - With Macros.pptm")
Call TaskbarAutohideOn
Call Resize_Presentations
Else: MsgBox "Close all stand-up wall slides"
End If
End Sub
我遇到的问题是我拥有的一个函数 IsWorkBookOpen 正在为允许多个用户访问系统造成问题:
Function IsWorkBookOpen(fileName As String)
Dim ff As Long, ErrNo As Long
On Error Resume Next
ff = FreeFile()
Open fileName For Input Lock Read As #ff
Close ff
ErrNo = Err
On Error GoTo 0
Select Case ErrNo
Case 0: IsWorkBookOpen = False
Case 70: IsWorkBookOpen = True
Case Else: Error ErrNo
End Select
End Function
我写了这个函数,因为如果有人多次按下脚本,我会遇到打开顺序的问题,这两个 PowerPoint 的很多版本都试图打开,这会导致代码和错误出现问题。
但是,系统需要由多个人同时打开,他们通过网络访问它。是否可以编写一个函数来判断单个用户是否打开了两个演示文稿?即只允许单个用户一次打开每个演示文稿的一个副本,但允许多个用户。
提前感谢您的帮助!