调整范围和转置数组时出现错误1004

时间:2019-06-27 07:02:02

标签: excel vba

我不会发布完整的代码,因为它非常庞大-我将重点介绍引起错误的部分。

该宏应该复制在excel中生成的URL,在IE中打开它们,将源代码复制到另一个工作表,在此代码中查找内容,将结果保存在特定的单元格中,删除工作表并转到下一个URL。它工作得很好,它复制了许多URL的源代码,但是对于某些URL却失败了。当我手动打开URL时,它们可以正常工作,但是Excel以某种方式向我抛出错误。

你们可以检查以下内容是否可以帮助我更好地了解问题出在哪里?

以下是两个示例链接:

这个效果很好-link1 此错误引发错误1004-link2

这是代码:

    Sub CC_Check()

Dim ie As InternetExplorer
Dim html As HTMLDocument

Dim URL As Range
Dim Rng As Range
Dim ws1 As Worksheet

Set ws1 = Worksheets("One Code")

Set ie = New InternetExplorer

Set Rng = ws1.Range("A3:A18")

For Each URL In Rng

ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = ws1.Cells(URL.Row, 2).Value & "_" & ws1.Cells(6, 7).Value

ie.Visible = False
ie.navigate URL.Value

Do While ie.readyState <> READYSTATE_COMPLETE
DoEvents
Loop

Set html = ie.document

Range("A1").Value = html.DocumentElement.outerHTML

Dim arr

arr = Split(html.DocumentElement.outerHTML, vbLf)

Range("A1").Resize(UBound(arr) + 1, 1).Value = Application.Transpose(arr) '<-- this line causing error 1004

1 个答案:

答案 0 :(得分:0)

// ... unwind("profiles"), project().and(ctx -> new Document("profiles", asList("$profiles"))).as("profiles") 有很多问题。

  • 该数组只有一个成员(Application.Transpose
  • 其中一个字符串的长度> 32K(但是我已经看到其他情况,当一个字符串超过255个字符时,它已经失败了)
  • 数组的大小大于64K(但是,在Excel 2016中,这不会导致运行时错误,但会导致数组大小变小的损坏的数组

因此,押注押注是手动进行转换,这很容易。顺便说一下,您应该为添加的工作表使用UBound(arr) = 1变量-永远不要依赖Worksheet。以下代码仅在新工作表不存在时才会创建它(否则它将清除其内容,因此您可以多次运行该代码

Activesheet