Excel 宏刷新数据,然后设置单元格格式



我有一个包含数据透视表的工作表,数据是从另一个系统输出的文件填充的。

在 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

请注意,宏的两个部分可以独立工作,只是在如上所述组合时不能正常工作。

如果在

"数据"功能区的"连接"部分找到查询,打开其属性,然后取消选中"后台刷新"选项,它将暂停任何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

最新更新