Я использую надстройку Excel, которая извлекает данные с некоторого сервера. Я создаю простой макрос для извлечения данных, их разграничения и форматирования. Однако макрос не извлекает данные с сервера.VBA for Excel: данные сервера не обновляются
Формула выглядит следующим образом: =RTD([Server IP Address],"ALLASSETTICKERINFO")
Когда я типа эту формулу непосредственно в ячейку, данные возвращаются. Когда я использую это в макросе, данные не обновляются.
Sub Update_Asset_Info()
Range("A2").Select
' this should be fetching data from a server. Instead it's returning a string "ALLASSETTICKERINFO"
ActiveCell.FormulaR1C1 = "=RTD([Server IP Address],"ALLASSETTICKERINFO")"
' these "resfresh and wait" operations don't seem to help
Range("A2").Select
Calculate
Application.Wait (Now + TimeValue("0:00:03"))
' data is fetched from server if the following code is omitted, but I can't omit it.
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
TrailingMinusNumbers:=True
End Sub
Единственный способ, с помощью которого данные обновляются, - это закрыть макрос сразу после выполнения формулы. Если я попытаюсь отформатировать данные перед завершением макроса, вместо этого данные не будут получены с сервера. Скорее, ячейка просто скажет: «ALLASSETTICKERINFO». Даже входящие команды Wait и Refresh, похоже, не помогают. Любая идея, как обойти это?
Выстрел в темноте: вы пытались «Application.RTD.RefreshData» после ввода формулы. –