VBA Excel-电源查询等待刷新,然后继续

VBA Excel-电源查询等待刷新,然后继续,excel,vba,powerquery,Excel,Vba,Powerquery,在提出这个问题之前,我已经尝试过论坛上先前提到的解决方案。 及 我的目标是:刷新表格,格式化表格(调整大小、对齐和隐藏数据),将空白单元格替换为“-”。 format和replace blank过程是分别编写的,我在查询刷新后调用它们。 当我一步一步地完成代码时,一切都很完美。但是,当我运行宏时,查询将刷新并替换空白,但数据的格式不是我指定的格式 我不确定这是否是由于代码中的缺陷、在缓慢的网络上工作的副产品,或者我只是一个新手,没有意识到我做错了什么 我尝试过的解决方案:1。在属性部分禁用“后

在提出这个问题之前,我已经尝试过论坛上先前提到的解决方案。 及

我的目标是:刷新表格,格式化表格(调整大小、对齐和隐藏数据),将空白单元格替换为“-”。 format和replace blank过程是分别编写的,我在查询刷新后调用它们。 当我一步一步地完成代码时,一切都很完美。但是,当我运行宏时,查询将刷新并替换空白,但数据的格式不是我指定的格式

我不确定这是否是由于代码中的缺陷、在缓慢的网络上工作的副产品,或者我只是一个新手,没有意识到我做错了什么

我尝试过的解决方案:1。在属性部分禁用“后台刷新”。2.以两种方式编写刷新条目:

With ActiveWorkbook.Connections("Query - QueryName").OLEDBConnection
    brfresh = .BackgroundQuery
    .BackgroundQuery = False
    .Refresh
    .BackgroundQuery = brfresh

End With

我还尝试添加一个应用程序。刷新后等待5秒

如果有帮助,以下是模块:

Sub RefreshMRIQuery()

   Dim brfresh As Boolean
   Dim StartT As Date
   Dim EndT As Date
   StartT = Now
   EndT = StartT + TimeValue("00:00:05")

    Sheets("MRI").Select
    Range("A1").Select

   With ActiveWorkbook.Connections("Query - MASTER ROLLER INPUT").OLEDBConnection
        brfresh = .BackgroundQuery
        .BackgroundQuery = False
        .Refresh
        .BackgroundQuery = brfresh

    End With

    Application.Wait EndT

    Range("A1").Select
    RemoveBlanks
    Range("A1").Select
    FormatMRITable
    Range("A1").Select


End Sub


Sub FormatMRITable()

    Columns("B:B").Select
    Selection.EntireColumn.Hidden = True
    Columns("C:C").Select
    Selection.EntireColumn.Hidden = True
    Rows("1:1").RowHeight = 44.25
    Range("MASTER_ROLLER_INPUT").Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Columns("G:G").ColumnWidth = 10
    Columns("G:G").ColumnWidth = 13.57
    Columns("H:H").ColumnWidth = 11.57
    Columns("I:I").ColumnWidth = 11.29
    Columns("I:I").ColumnWidth = 14
    Columns("J:J").ColumnWidth = 12.71
    Range("A2").Select
End Sub


Public Sub RemoveBlanks()
Dim MRI As ListObject
Set MRI = Worksheets("MRI").ListObjects("MASTER_ROLLER_INPUT")
Dim r As Range

    For Each r In MRI.DataBodyRange
        If r.Value = "" Then r.Value = "-"
    Next r

End Sub
抱歉,如果格式不正确和/或我有不必要的步骤,我已经从头开始学习了大约一个月,谷歌一直是我所有编程知识的来源。
如果我需要详细说明什么,请让我知道,谢谢

问得好!哈哈,谢谢@BigBen,在提问之前,我真的试着自己弄清楚,因为已经有一些关于这个主题的问题了。问得好!哈哈,谢谢@BigBen,我真的试着在问之前自己弄清楚,因为已经有一些关于这个主题的问题了。
Sub RefreshMRIQuery()

   Dim brfresh As Boolean
   Dim StartT As Date
   Dim EndT As Date
   StartT = Now
   EndT = StartT + TimeValue("00:00:05")

    Sheets("MRI").Select
    Range("A1").Select

   With ActiveWorkbook.Connections("Query - MASTER ROLLER INPUT").OLEDBConnection
        brfresh = .BackgroundQuery
        .BackgroundQuery = False
        .Refresh
        .BackgroundQuery = brfresh

    End With

    Application.Wait EndT

    Range("A1").Select
    RemoveBlanks
    Range("A1").Select
    FormatMRITable
    Range("A1").Select


End Sub


Sub FormatMRITable()

    Columns("B:B").Select
    Selection.EntireColumn.Hidden = True
    Columns("C:C").Select
    Selection.EntireColumn.Hidden = True
    Rows("1:1").RowHeight = 44.25
    Range("MASTER_ROLLER_INPUT").Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Columns("G:G").ColumnWidth = 10
    Columns("G:G").ColumnWidth = 13.57
    Columns("H:H").ColumnWidth = 11.57
    Columns("I:I").ColumnWidth = 11.29
    Columns("I:I").ColumnWidth = 14
    Columns("J:J").ColumnWidth = 12.71
    Range("A2").Select
End Sub


Public Sub RemoveBlanks()
Dim MRI As ListObject
Set MRI = Worksheets("MRI").ListObjects("MASTER_ROLLER_INPUT")
Dim r As Range

    For Each r In MRI.DataBodyRange
        If r.Value = "" Then r.Value = "-"
    Next r

End Sub