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