0

我想知道是否有人可以帮助我解决我遇到的 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 的很多版本都试图打开,这会导致代码和错误出现问题。

但是,系统需要由多个人同时打开,他们通过网络访问它。是否可以编写一个函数来判断单个用户是否打开了两个演示文稿?即只允许单个用户一次打开每个演示文稿的一个副本,但允许多个用户。

提前感谢您的帮助!

4

0 回答 0