我有一个包含数据透视表的工作表,数据是由另一个系统输出的文件填充的。
在Power Query中,我对数据进行了转换,特别是使用字段之一来构造URL。
"'=HYPERLINK(""" & "https://website.com/"&[Code] & """, """ & [Code] & """) "
当数据位于数据透视表中时,我需要操纵格式以使其正确显示。
在Excel中,我使用查找和替换功能将字符串转换为显示友好名称的正确URL(并调整列的大小)。
Sub Macro1()
Cells.Replace What:="'=", Replacement:="=", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Columns("A:A").EntireColumn.AutoFit
End Sub
刷新数据意味着上面的宏需要再次运行。
我很想为用户自动化。但是,运行以下宏看起来首先要进行格式化然后刷新,我在做什么错了?
Sub Macro2()
ActiveWorkbook.Connections("Query - XXX"). _
Refresh
'
Cells.Replace What:="'=", Replacement:="=", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Columns("A:A").EntireColumn.AutoFit
End Sub
注意,宏的两个部分可以独立正确地工作,而不能按上述方式结合使用。
答案 0 :(得分:1)
如果您发现该查询的数据功能区中的“连接”部分,打开它的属性,并取消选中“背景刷新”选项,将暂停所有VBA代码,直到它完成令人耳目一新。该属性也可以在VBA设置。
Sub Macro2()
ActiveWorkbook.Connections("Query - XXX").OLEDBConnection.BackgroundQuery = False
ActiveWorkbook.Connections("Query - XXX").Refresh
Cells.Replace What:="'=", Replacement:="=", LookAt:=xlPart, SearchOrder _
:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
Columns("A:A").EntireColumn.AutoFit
End Sub