首页 > 解决方案 > 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

标签: excelvba

解决方案


这可能是因为您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 :)


推荐阅读