重新启动计算机后引入VBA 1004运行时错误
我一直在尝试编写一个VBA脚本,它可以解析出其他文件中的特定数据,然后输入到当前打开的Excel工作簿中。这些文件都已清除选项卡,并且位于与当前打开的工作簿不同的目录中。下面的代码一直工作到我重新启动我的计算机,现在我总是得到一个“1004运行时错误”。当代码点击DeliminateCSV子例程的“select.TextToColumns”行时,这个错误总是发生。发生错误的原因是程序正在选择空单元格。我相信程序正在选择当前打开的工作簿,而该工作簿当前为空。我相信ParseSummaryReport中的CSV变量可能打开了错误的工作簿,但我在调试模式下观察了它,它似乎有正确的文件路径打开。你知道怎么回事吗重新启动计算机后引入VBA 1004运行时错误,vba,excel,Vba,Excel,我一直在尝试编写一个VBA脚本,它可以解析出其他文件中的特定数据,然后输入到当前打开的Excel工作簿中。这些文件都已清除选项卡,并且位于与当前打开的工作簿不同的目录中。下面的代码一直工作到我重新启动我的计算机,现在我总是得到一个“1004运行时错误”。当代码点击DeliminateCSV子例程的“select.TextToColumns”行时,这个错误总是发生。发生错误的原因是程序正在选择空单元格。我相信程序正在选择当前打开的工作簿,而该工作簿当前为空。我相信ParseSummaryRepor
Option Explicit
Sub PopulateSpreadSheet()
Dim fso As Object
Dim fPath As String
Dim fsoFolder As Scripting.folder
Dim startingFolder As Scripting.folder
Dim iNumFiles As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
'Get path of current workbook
fPath = ActiveWorkbook.Path
Set fsoFolder = fso.GetFolder(fPath)
'Move up one directory
Set startingFolder = fsoFolder.ParentFolder
iNumFiles = 0
Call RecursiveFileCheck(startingFolder, iNumFiles)
End Sub
Sub ParseSummaryReport(ByRef i As Integer, fileName As String)
Dim CSV As Workbook
Dim Excel As Excel.Application
'Data From CSV To Put In Tracking
Dim ES_Number As String
Dim custodian As String
Dim EDoc_Size As Double
Dim Email_Size As Double
Set Excel = New Excel.Application
'Set CSV = Excel.Workbooks.Open(fileName)
Set CSV = Excel.Workbooks.Open(fileName, , , , , , , , " ")
'Deliminate the CSV File
'Call DeliminateCSV(CSV)
Call CSV.Close(False)
End Sub
Sub RecursiveFileCheck(ByRef folder As Scripting.folder, ByRef iNumFiles As Integer)
Dim nextFolder As Scripting.folder
Dim fileName As String
Dim nextFile, files, subFolders
Set files = folder.files
Set subFolders = folder.subFolders
'Search through all the files in this folder
For Each nextFile In files
'Check if this is one of the files we want
If nextFile Like "*_SummaryReport.csv" Then
'Summary Report Found, Parse It
fileName = nextFile
Call ParseSummaryReport(iNumFiles, fileName)
End If
Next nextFile
'Search through all the subfolders recursively
For Each nextFolder In subFolders
Call RecursiveFileCheck(nextFolder, iNumFiles)
Next nextFolder
End Sub
Sub DeliminateCSV(ByRef wrkBook As Workbook)
With wrkBook
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True
End With
End Sub
当你使用
With wrkBook
...
End with
然后,您应该在属于该工作簿的任何属性或方法前面添加一个“.”
With wrkBook
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1")...
End With
应该是
With wrkBook
.Columns("A:A").Select
Selection.TextToColumns Destination:=.Range("A1")...
End With
不过,您不需要选择:
.Columns("A:A").TextToColumns Destination:=.Range("A1")...
当您使用
With wrkBook
...
End with
然后,您应该在属于该工作簿的任何属性或方法前面添加一个“.”
With wrkBook
Columns("A:A").Select
Selection.TextToColumns Destination:=Range("A1")...
End With
应该是
With wrkBook
.Columns("A:A").Select
Selection.TextToColumns Destination:=.Range("A1")...
End With
不过,您不需要选择:
.Columns("A:A").TextToColumns Destination:=.Range("A1")...
也会起作用谢谢,我没有太多使用with语句。@user1476050每个答案旁边都有一个全息复选框,勾选它可以让每个人都知道这个问题有一个答案就是答案,标记正确的答案也会给你几点:)谢谢,我很少使用with语句。@user1476050每个答案旁边都有一个全息复选框,勾选它可以让每个人都知道这个问题有一个答案,这就是答案,标记正确的答案也会给你几分:)