打开工作簿,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