Excel VBA:向用户指示PivotCaches.create的进度

我环顾了一会儿,但在这一个找不到答案。 在我的VBA中,我有一行创build一个新的pivottable,并将其插入到工作表中,

Application.StatusBar = MyPC.RecordCount ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _ ActiveWorkbook.Connections("ACCESS2"), Version:=xlPivotTableVersion14). _ CreatePivotTable TableDestination:="Dashboard!R20C1", TableName:= _ "PTDashboard", DefaultVersion:=xlPivotTableVersion14 Application.StatusBar = False 

当我处于构build这个阶段的早期阶段时,状态栏将显示一个计数器,它logging了从Connection连接到pivotCache的logging数量。 它出于某种原因,我试图模仿它在做什么(这可能是一个Excel 2013的事情,因为我一直在家里的电脑上也在这个项目上工作)。

因为可能有几十万条logging可能需要一分钟,我想向用户指出它正在发生。

我通常在一个循环内做到这一点,但因为我没有这个选项,我有点难住。 有什么地方可以从中读取这些数据吗? 我希望我已经清楚了。 提前致谢。

我不认为你能够以你想要的方式访问数据,但为了避免你的应用程序挂起或者代码停止工作的外观,这是你可以做的一件事。

创build一个小的UserForm ,并在其上放置一个标签,指示您的macros正在执行某些操作 ,例如“请等待Pivotecache加载…这可能需要1分钟”。

然后,在您调用PivotCache之前立即显示它vbModeless ,然后立即卸载它。

我testing了这个循环,但我认为它也应该与你在做什么一样工作,如:

 Sub Test() UserForm1.Show vbModeless ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _ ActiveWorkbook.Connections("ACCESS2"), Version:=xlPivotTableVersion14). _ CreatePivotTable TableDestination:="Dashboard!R20C1", TableName:= _ "PTDashboard", DefaultVersion:=xlPivotTableVersion14 Unload UserForm1 End Sub 

你可以试试吗?

 Application.StatusBar = "Creating Pivot... Please be Patient" DoEvents ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _ ActiveWorkbook.Connections("ACCESS2"), Version:=xlPivotTableVersion14). _ CreatePivotTable TableDestination:="Dashboard!R20C1", TableName:= _ "PTDashboard", DefaultVersion:=xlPivotTableVersion14 Application.StatusBar = "Pivot Created!" DoEvents