【发布时间】:2018-05-04 20:59:51
【问题描述】:
我正在尝试通过在每次运行时更改 URL 来动态导入基于 Web 的 CSV 文件。所以我有一个 URL,我通过输入最后一个字符串作为用户通过输入框输入的变量来动态管理它。
问题是,我收到“运行时错误 '438':对象不支持此方法。
所以这是一个正在通过的 URL 示例。如果您愿意,可以将“BRZ”更改为“ASB”以查看不同的示例。
http://cf3.myplumbingshowroom.com/scheduledScripts/brandDataAPI.cfm?brandCode=BRZ
如您所见,该链接会将您直接带到该文件夹。
我不知道这意味着什么。我看到很多人都遇到了同样的问题,但是“.ListObject.DisplayName”是返回错误的代码部分。为了便于参考,我将代码部分加下划线并突出显示。
Sub Macro3()
'Defining Variables
Dim myValue As Variant
Dim Link As Variant
'Creating a link
Link = "http://cf3.myplumbingshowroom.com/scheduledScripts/brandDataAPI.cfm?brandCode="
'creating a the variable to be passed into the link
myValue = InputBox("Enter your brand code here")
'completing our link
Link = "http://cf3.myplumbingshowroom.com/scheduledScripts/brandDataAPI.cfm?brandCode=" & myValue
'checking if it exists
MsgBox Link
'if the query already exists, we're going to delete it. Otherwise, we're going to ignore that function.
On Error Resume Next
ActiveWorkbook.Queries("brandDataAPI").Delete
On Error GoTo 0
Application.CutCopyMode = False
ActiveWorkbook.Queries.Add Name:="brandDataAPI", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Csv.Document(Web.Contents(" & Link & "),[Delimiter="","", Columns=11, Encoding=1252, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & " #""Promoted Headers"" = Table.PromoteHeaders(Source, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumnTypes(#""Promoted Header" & _
"s"",{{""BrandName"", type text}, {"" BrandCode"", type text}, {"" BrandID"", Int64.Type}, {"" datalastUpdate"", type date}, {"" numproducts"", Int64.Type}, {""priceMethod"", type text}, {""URL"", type text}, {""showPrice"", Int64.Type}, {""MAP_YN"", Int64.Type}, {""MAP"", type text}, {""msrpNotes"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Changed Type"""
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""brandDataAPI"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [brandDataAPI]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = False
.Refresh BackgroundQuery:=True
***.ListObject.DisplayName***
End With
End Sub
【问题讨论】:
-
星号是代码的一部分,还是试图强调?另外,可能尝试从 ActiveSheet.ListObjects.Add 中删除 ActiveSheet