0

我有以下代码,它从共享位置获取 XML 文件并将其加载到 Excel 中。打开文件后,我收到“运行时错误'1004':应用程序定义或对象定义错误”消息。

Sub Load_XML()

Dim xml_file_path As String
Dim file_date As String

Worksheets("Start").Activate
file_date = Range("B1").Value

xml_file_path = "Y:\mydrive\" & file_date & "-000000_RREP1002.XML"

Workbooks.OpenXML Filename:= _
        xml_file_path _
        , LoadOption:=xlXmlLoadImportToList

Dim lstrow as Integer
Dim r as Range

lstrow = ActiveSheet.UsedRange.Rows.Count 

Set r = Range("A2:AF & lstrow")

执行最后一行之前的代码错误,即一旦 OpenXML 完成。

任何想法请什么可能导致这个问题?

谢谢!

4

1 回答 1

0

我会像下面那样重构代码。

Public Sub Load_XML()
    Dim wsStart As Worksheet
    Set wsStart = ThisWorkbook.Worksheets("Start")
 
    Dim file_date As String
    file_date = wsStart.Range("B1").Value  ' make sure all ranges have a worksheet specified!
    
    Dim xml_file_path As String
    xml_file_path = "Y:\mydrive\" & file_date & "-000000_RREP1002.XML"
    
    Workbooks.OpenXML Filename:=xml_file_path, LoadOption:=xlXmlLoadImportToList
    
    Dim lstRow As Long
    
    
    lstRow = wsStart.UsedRange.Rows.Count 
    ' I recommend a more reliable method to find the 
    
    Dim r As Range
    Set r = wsStart.Range("A2:AF" & lstRow)

我推荐一种比使用更可靠的方法来查找最后使用的行

lstRow = wsStart.UsedRange.Rows.Count

你最好用

lstRow = wsStart.Cells(wsStart.Rows.Count, "A").End(xlUp).Row

这将在 column 中找到最后使用的行A。将列调整为始终包含数据且没有空白的列。

于 2021-06-23T15:39:38.130 回答