【发布时间】:2022-01-26 04:58:51
【问题描述】:
我想知道是否有人可以帮助我使此代码在我的 MAC 中工作。我最近两次发布了这个查询,但我没有得到解决方案。因为知道为 MAC 编写 VBA 的 VBA 专家很少。
这是我在 Windows PowerPoint 中完美使用的 VBA 宏代码。但现在我最近搬到了 MAC OS。我希望这个文件也能在 Mac 上运行。
不幸的是!它不工作并且没有错误消息当我在 MAC 版本 big sur (11.6.2) 和 Microsoft Office PowerPoint 版本 365 上运行此宏时没有任何反应。
这是它的代码:
Dim slideShowRunning As Boolean
Dim counter As Integer
Dim st As Dat
Dim i As Integer
Dim sttime As Date
Dim oxlapp As Object
Dim oxlwb As Object
Dim oxlws As Object
Dim edtime As Date
Sub SlideShowBegin(ByVal Wn As SlideShowWindow)
st = Date
sttime = Time
counter = 0
Debug.Print " works;1 "
Set oxlapp = CreateObject("Excel.Application")
Debug.Print " works; 2"
oxlapp.Visible = False
Debug.Print " works; 3"
Set oxlwb = oxlapp.Workbooks.Open(ActivePresentation.Path & Application.PathSeparator & "record.xlsx")
Debug.Print " works; 4"
Set oxlws = oxlwb.Sheets("TimeRecord")
Debug.Print " works; 5"
i = oxlws.Range("A99919").End(-4162).Row
oxlws.Range("A1").Offset(i, 0).Value = st
oxlws.Range("A1").Offset(i, 1).Value = sttime
Debug.Print " works; 6"
End Sub
Public Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow)
If TypeName(slideShowRunning) = "Empty" Or slideShowRunning = False Then
slideShowRunning = True
SlideShowBegin Wn
End If
End Sub
Public Sub OnSlideShowTerminate(ByVal Wn As SlideShowWindow)
Name = Application.ActivePresentation.Name
slideShowRunning = False
edtime = Time
Debug.Print " works; 7"
ivalue = DateDiff("s", sttime, edtime)
Debug.Print ivalue
oxlws.Range("A1").Offset(i, 2).Value = edtime
oxlws.Range("A1").Offset(i, 3).Value = ivalue
oxlws.Range("A1").Offset(i, 4).Value = Name
Debug.Print " works; 9"
oxlapp.DisplayAlerts = False
Debug.Print " works; 10"
oxlwb.Save
Debug.Print " works; 11"
oxlapp.Visible = True
Debug.Print " works; 12"
oxlapp.DisplayAlerts = True
Debug.Print " works; 13"
End Sub
注意:
-
代码存储 PowerPoint 幻灯片名称以及幻灯片打开时间和幻灯片关闭时间。
-
详细信息存储在 Excel 工作表中。
-
当我在 MAC 上运行时,代码不起作用。
我知道需要进行一些更改才能使其在 Mac 上运行,但到目前为止,我已经找到任何人帮助我很好地修改此代码。
我请求 VBA 专家提供任何帮助。
【问题讨论】:
-
“什么都没有发生”任何 debug.print 消息?
-
没有消息显示。它只是不工作,也没有像在 Windows 中那样完成它的任务,即记录幻灯片模式的开启和关闭时间并将其存储在名为 Record 的 Excel 文件中。
-
我知道不是很有帮助,但可能相关stackoverflow.com/questions/62204810/…
-
先生,实际上我已经完成了。我不知道该怎么做才能改变它......因为它没有显示任何错误。显然,任何拥有 Macbook 的专家都可以很好地了解它的功能,并帮助我摆脱过去几天面临的这个问题。
-
我会将记录文件更改为纯文本 CSV 并调整此处的代码示例 stackoverflow.com/questions/49853008/… 避免了我认为是您的问题的 createobject。
标签: vba macos powerpoint