如何通过VBA从Access打开不可见的Excel会话?

时间:2018-02-26 15:59:04

标签: vba access-vba excel.application

我很抱歉提出这个看似简单的问题,但我已经阅读了很多关于如何通过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显示的任何想法都会很棒!

0 个答案:

没有答案