Web查询中的Excel 2007 VBA错误1004"此站点的地址无效"

时间:2017-06-11 00:44:28

标签: vba excel-2007 excel-web-query

我正在使用以下代码从我的电脑上的文件夹中的网页存储的html页面获取数据。 我在另一个模块中使用了基本相同的代码,它完美地工作,所以我不明白为什么它在这个单独的例程中不起作用。我需要单独例程的原因是因为原始代码嵌入了一个相当复杂的大型例程中,我不能仅仅检查特定文件的数据,而BTW已被分析而没有任何问题更复杂的代码一套例程。 (最初的代码如下所示)。

Dim Act As Worksheet, ActSt As Worksheet

On Error GoTo errorhandler

    Set Actbl = Workbooks("table.xlsm")
    Set ActSt = Actbl.Worksheets("act.st.")                 'query will be stored here
'some code to define path &filename
............
' Create URL
URL = path & filename

' Create Web Query & refresh it

If Len(Dir(URL)) > 0 Then               'found the file
    ActSt.Activate
    ActSt.Cells.Clear                   'clear sheet "act.st."

        'set up a table import (the URL; tells Excel that this query comes from an html file)
        Set qt = ActSt.QueryTables.Add( _
            Connection:="URL;" & filename, Destination:=ActSt.Range("A4"))     'save data in "act.st."
    With qt
        .WebConsecutiveDelimitersAsOne = False
        .WebDisableDateRecognition = False
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = False
        .WebSelectionType = xlEntirePage
        .WebSingleBlockTextImport = False
        .RefreshStyle = xlOverwriteCells
        .Refresh                                    'get the data
    End With
    ActSt.QueryTables.Item(1).Delete                'delete the created query, otherwise they accumulate
Else
    MsgBox "File not found"
    Exit Sub
End If
errorhandler:
    answer = MsgBox("Error " & Err.Number & ": " & Err.Description & ". Exit?", vbYesNo)
    If answer = vbYes Then Exit Sub
    Resume

虽然行"如果Len(Dir(URL))> 0然后"确保文件存在,当代码到达"刷新"时出现错误。消息是:

  

错误1004:此站点的地址无效。检查地址,然后重试。出口?

(文字可能与英语操作系统略有不同,因为实际上它是西班牙文,这只是我的翻译)

我不明白地址是如何无效的"当文件明显存在并且用" Dir(URL)"以及如何解决这个问题。

与此问题相关的第二个问题涉及我在测试此代码之前收到的另一个错误1004。当我运行代码时,我在浏览器中打开了文件,我得到了一个1004错误,上面写着"应用程序定义的错误"。 我想这意味着像#34;文件被其他用户使用"或者。有没有办法区分这种1004错误,所以错误信息可能更具体?类似于"错误子编号"? 1004非常通用。

感谢所有能帮助我找到解决方案的人,尤其是第一个问题。

这是我复制的原始代码段,稍微适用于较短的例程:

If Len(Dir(filename)) > 0 Then      'found the file
    GetFile = True
    ws1.Cells.Clear                 'clear sheet "act.st."

        'set up a table import (the URL; tells Excel that this query comes from an html file)
        Set qt = ws1.QueryTables.Add( _
            Connection:="URL;" & filename, Destination:=ws1.Range("A4"))     'save data in "act.st."
    With qt
        .WebConsecutiveDelimitersAsOne = False
        .WebDisableDateRecognition = False
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = False
        .WebSelectionType = xlEntirePage
        .WebSingleBlockTextImport = False
        .RefreshStyle = xlOverwriteCells
        .Refresh                                'get the data
    End With
    ws1.QueryTables.Item(1).Delete              'delete the created query, otherwise they accumulate
Else
    GetFile = False
End If

1 个答案:

答案 0 :(得分:0)

看起来您没有设置两个变量的值,即构建URL的路径和文件名,从而导致URL的空值。请仔细检查路径和文件名变量以及它们是否设置正确。感谢