excel - VBA 导入动态 URL
问题描述
我正在尝试将文本文件自动导入 Excel,但遇到了一些问题。
我在这里使用香蕉作为带有 URL 的动态方程,但失败了。
http://regsho.finra.org/regsho-September.html
Option Explicit
Public Sub testing()
Dim qt As QueryTable
Dim ws As Worksheet
Dim banana As String
Set ws = ThisWorkbook.Worksheets("Sheet1")
banana = Range("C4").Value
Const URL As String = "http://regsho.finra.org/CNMSshvo"" & banana & "".txt"
Set qt = ws.QueryTables.Add(Connection:="URL;" & URL, Destination:=ws.Range("A1"))
With qt
.RefreshOnFileOpen = True
.FieldNames = True
.WebSelectionType = xlSpecifiedTables
.WebTables = 1
.Refresh BackgroundQuery:=False
End With
End Sub
解决方案
这可能是因为您banana
以错误的方式将变量添加到文本字符串。你正在做的:
Const URL As String = "http://regsho.finra.org/CNMSshvo"" & banana & "".txt"
虽然这应该是
Const URL As String = "http://regsho.finra.org/CNMSshvo" & banana & ".txt"
即用单个双引号替换双引号。字符串中有 2 个双引号将在文本中插入一个文本双引号(称为转义),这意味着字符串在插入的双引号之后继续。这反过来意味着您的字符串中有文字文本“banana”(包括引号)。因此,您最终会得到以下 URL:
http://regsho.finra.org/CNMSshvo" & banana & ".txt
寻找这类事情的一种方法是在 const 字符串之后添加以下内容:
call MsgBox(URL)
你很快就会发现你建立了什么 URL :)