我有三个内容和结构非常相似的Excel文件。在我可以使用它们之前,我需要对文件应用许多格式化步骤。使用Access VBA,我开发了一些代码来删除某些行并对数据执行TextToColumns
函数。
此代码适用于第一个电子表格。但是,我看到第二个错误:
运行时错误'91':对象变量或未设置块变量
这发生在代码的Selection.TextToColumns ...
行(即上面的操作对第二个电子表格执行正常)。
有关为何发生这种情况的任何想法?
在审核this post之后,我可能需要在With
之前添加TextToColumns
,或者以不同的方式定义范围。但是我缺乏VBA知识变得非常明显!
Private Sub FormatFile(sPath As String)
Dim oExcel As Excel.Application
Dim owb As Workbook
Dim oWS As Worksheet
Dim sFile As String
Dim sDirectory As String
Dim rng As Range
Set oExcel = New Excel.Application
Set owb = oExcel.Workbooks.Open(sPath)
Set oWS = owb.Sheets(1)
Debug.Print oWS.Name
oExcel.Visible = False
DoCmd.SetWarnings False
sDirectory = fGetDirectory(sPath)
sFile = fGetFileName(sPath)
oWS.Rows(5).Delete
oWS.Rows(3).Delete
oWS.Rows(2).Delete
oWS.Rows(1).Delete
DeleteLastRow oWS.Columns("A")
oWS.Columns("A:A").Select
Selection.TextToColumns Destination:=oWS.Range("A1"), DataType:=xlDelimited, TextQualifier:=-4142, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
owb.Save
owb.Close
oExcel.Quit
Set owb = Nothing
Set oWS = Nothing
Set rng = Nothing
Debug.Print "created file " & sFile
DoCmd.SetWarnings True
Set oExcel = Nothing
End Sub
答案 0 :(得分:1)
这可能与使用.Select
(建议你avoid using)有关。
更改行
oWS.Columns("A:A").Select
Selection.TextToColumns Destination:=oWS.Range("A1"), DataType:=xlDelimited, TextQualifier:=-4142, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
到
oWS.Columns("A:A").TextToColumns Destination:=oWS.Range("A1"), DataType:=xlDelimited, TextQualifier:=-4142, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
可能会发生的是,选择会以某种方式取消选择,因此在使用选择时,它不会"那里"。