【发布时间】:2015-04-15 08:18:26
【问题描述】:
在运行这段代码时,我得到了
VBA 1004 错误:“应用程序定义或对象定义错误”
在下面指示的行上。为什么?
我正在使用 Excel 2013。我的电子表格有 2 张工作表,Sheet1 和 Sheet2。
Public Sub ImportTextFile()
Dim RowNdx As Long
Dim TempVal As String
Dim WholeLine As String
Application.ScreenUpdating = False
'On Error GoTo EndMacro:
RowNdx = 11
FName = Worksheets("Sheet1").Cells(1, 2).Value
Open FName For Input Access Read As #1
While Not EOF(1)
Line Input #1, WholeLine
Worksheets("Sheet1").Cells(RowNdx, 1).Value = WholeLine ' <~~~~~~ ERROR
RowNdx = RowNdx + 1
Wend
Application.ScreenUpdating = True
Close #1
End Sub
【问题讨论】:
-
没有足够的信息来重现问题。尝试在调试模式下单步执行您的代码并观察您的变量如何演变 (instructions)。发生错误时
RowNdx和WholeLine的值是多少? -
RowNdx = 11 时发生错误。我正在读取一个简单的文本文件(包含 450 行)。因此,出错时的 Wholeline 包含“ABCxyz”。同样,此代码是从文本文件读取并将其全部内容从第 11 行开始复制到 excel 电子表格的简单代码。我也尝试通过代码。在 While 循环中,我尝试在第一次运行循环期间评论 Worksheets("Sheet1").Cells(RowNdx, 1).Value = WholeLine。在循环的第二次迭代中,我取消了对这一行的注释。然后它一直很好地运行到最后。
-
我想知道
WholeLine中是否有 Excel 不喜欢的内容。类似没有 Chr(10) 的 Chr(13) 虽然不是这样。您能否遍历导致错误的行上 WholeLine 的每个字母以及Debug.Print Mid$(WholeLine,i,1), Asc(Mid$(WholeLine,i,1))其中i是您的控制变量?看看里面有什么类型的字符可能会很有用。 -
是的。 @DickKusLeika,你是对的。我的文件有以下行。这导致了我的错误。 =~=~=~=~=~=~=~=~=~=~=~= PuTTY 日志 2015.04.10 14:12:25 =~=~=~=~=~=~=~=~= ~=~=~= 我从文本文件中删除了该行,代码运行良好。似乎 Excel 不喜欢 '=' 作为文本文件中的第一个字符。有没有办法从文本文件中复制所有行,不管它包含什么?非常感谢您为我指明了正确的方向。我花了好几个小时更改我的代码,但没有成功。