打开工作簿,Excelmacros刷新所有数据连接表和透视表,然后将透视导出到csv

我有一个Excel文件,它有CSV数据源和数据透视表,我想刷新所有的数据源和透视表自动导出一个数据透视表作为CSV打开Excel文件。

我尝试了下面的代码,但是这个代码在数据刷新之前导出CSV文件。

请帮助解决scheme。 提前致谢。

Private Sub Workbook_Open() ThisWorkbook.RefreshAll Run "Macro1" End Sub Sub Macro1() Dim ws As Worksheet, newWb As Workbook Dim SaveToDirectory As String SaveToDirectory = "C:\Macro\" Application.ScreenUpdating = False For Each ws In Sheets(Array("locationwise")) ws.Copy Set newWb = ActiveWorkbook With newWb .SaveAs SaveToDirectory & ws.Name, xlCSV .Close (False) End With Next ws Application.ScreenUpdating = True Application.DisplayAlerts = False End Sub 

一个简单的DoEvents应该做的伎俩! ;)

尝试这个 :

 Private Sub Workbook_Open() ThisWorkbook.RefreshAll DoEvents Run "Macro1" End Sub 

如果不是,只需在DoEvents之后添加这一行:

 Application.Wait(Now + TimeValue("0:00:05")) 

这将暂停执行代码,在这里5秒钟!


如果要在修改特定范围后启动保存零件,请将该代码放入工作模块中:

 Private Sub Worksheet_Change(ByVal Target As Range) If Application.Intersect(Target, Me.Range(Rg_To_Check)) Is Nothing Then 'Not in range Else 'In range to check Run "Macro1" End If End Sub 

摆脱Workbook_Open()事件中的Run "Macro1"


另外,要小心,因为你的最后一行是Application.DisplayAlerts = False你以后不会有警报,你应该像这样使用它:

 Sub Macro1() Dim ws As Worksheet, newWb As Workbook Dim SaveToDirectory As String SaveToDirectory = "C:\Macro\" Application.DisplayAlerts = False Application.ScreenUpdating = False For Each ws In Sheets(Array("locationwise")) ws.Copy Set newWb = ActiveWorkbook With newWb .SaveAs SaveToDirectory & ws.Name, xlCSV .Close (False) End With Next ws Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub