【问题标题】:Open a PowerPoint presentation from Excel with VBA without specifying Excel file path在不指定 Excel 文件路径的情况下使用 VBA 从 Excel 打开 PowerPoint 演示文稿
【发布时间】:2020-08-15 16:04:37
【问题描述】:

我正在寻找一种让 PowerPoint 中的 VBA 自动识别我计算机上唯一打开的 Excel 文件并使用此 Excel 文件从中读取数据的方法。我想避免在我的代码中手动插入 Excel 文件路径。有可能吗?

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("PATH\FILENAME.xlsm")
    xlBook.Application.Visible = False

谢谢!

【问题讨论】:

  • GetObject(,"Excel.Application")
  • CreateObject创建一个新的 Excel 实例;如果您打算使用已经存在的 Excel 实例,则需要改用 GetObject ...但仍应处理 Excel 尚未打开预期文件的情况 - 如果您的宏打算使用一个特定的 Excel 工作簿,然后像这样使用GetObject假设预期的工作簿已打开并处于活动状态:您必须验证/断言这些假设或您的代码最终可能无法针对预期的特定工作簿/工作表工作。

标签: excel vba powerpoint


【解决方案1】:

请尝试下一个代码:

Sub testOpenWorkbook()
  Dim Ex As Object, wb As Object
   On Error Resume Next
    Set Ex = GetObject(, "Excel.Application")
     If Err.Number <> 0 Then
        Err.Clear: On Error GoTo 0
        MsgBox "There is not any Excel session open...", vbInformation, "Ups...": Exit Sub
     Else
        On Error GoTo 0
        If Ex.Workbooks.count = 1 Then
            Set wb = Ex.Workbooks(1)
        Else
            MsgBox "There are more Excel Workbooks open...", vbInformation, "Ups...": Exit Sub
        End If
     End If
End Sub

【讨论】:

  • 您混淆了 If Error 和 if not 语句,并且在 msgbox 代码行末尾有错误的 Exit Forcodes。 wb 应定义为 Object 或 Excel 需要提前绑定,因为代码将由 Powerpoint 托管。使用函数并返回wb(工作簿参考)怎么样。
  • @ComputerVersteher:是的,我打算使用Exit Sub。我可以发誓这是我做的……我引用了Microsoft Excel ... Object Library 并用Dim Ex As Excel.Application 编写了代码。然后我想起有些人害怕外部引用而改编(仅)Ex声明...我没有检查代码,当然,看起来很简单...但是谢谢!我会将代码调整为有效的代码... :)。制作一个函数并不复杂..但是我没有任何反馈,无论如何...我以为他会用上面的代码开始他的代码,然后他会使用wb...
猜你喜欢
  • 1970-01-01
  • 2015-10-14
  • 2015-12-28
  • 1970-01-01
  • 2017-05-30
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 2020-03-05
相关资源
最近更新 更多