我很抱歉提出这个看似简单的问题,但我已经阅读了很多关于如何通过VBA打开一个不可见的Excel窗口的建议解决方案,但是他们都没有专门关于从Access做这个,也没有提出任何建议解决方案适用于我的特定情况。
我正在尝试从Access打开Excel会话,以刷新另一个(PowerPoint)文档中的图表引用的某些数据。
这是我正在使用的代码:
'refresh the excel tables that drive the charts
DoCmd.OpenQuery ("qryCreateMemberCountByType")
DoCmd.OpenQuery ("qryCreatePaymentsByType")
Dim AppExcel As Object
Dim wb As Object
Set AppExcel = CreateObject("Excel.Application")
AppExcel.Visible = False 'this doesn't work
AppExcel.DisplayAlerts = False
With AppExcel.Workbooks.Open("C:\MyPath\Template.xlsx")
'.Windows(1).Visible = False 'this doesn't work
.RefreshAll
.Save
.Close
End With
AppExcel.Quit
Set AppExcel = Nothing
我尝试过的多种方法包括:
AppExcel.Visible = False
和
.Windows(1).Visible = False
似乎没有任何东西阻止Excel打开可见窗口(并且在手动关闭之前将其保持打开状态,尽管我尝试通过代码关闭它)。
注意 - 对于PowerPoint,我能够非常优雅地完成它:
With AppPPT.Presentations.Open("C:\MyPath\Template.pptx", WithWindow:=False)
更新:
我发现Excel应用程序实际上是无形的打开;当我刷新PowerPoint中引用Excel表格的图表时,它会变得可见:
For Each Slide In .Slides
For Each shp In Slide.Shapes
'refresh charts
If shp.HasChart Then
shp.Chart.ChartData.Activate 'this line results in a visible Excel session
shp.Chart.Refresh 'this line also results in a visible Excel session
End If
Next shp
Next Slide
有关如何在刷新图表时阻止Excel显示的任何想法都会很棒!