Я пытаюсь написать сценарий VBA, который может анализировать другие файлы для конкретных данных, которые затем можно ввести в открытую книгу Excel. Все файлы находятся в разделе «Разделенные флажки» и находятся в другом каталоге, чем текущая открытая книга. Код ниже работал до тех пор, пока я не перезапустил свой компьютер, и теперь я всегда получаю «1004 Runtime Error». Эта ошибка всегда возникает, когда код попадает в строку «select.TextToColumns» подпрограммы DeliminateCSV. Ошибка возникает из-за того, что программа выбирает пустые ячейки. Я считаю, что программа выбирает текущую открытую книгу, которая в настоящее время пуста. Я полагал, что, возможно, моя переменная CSV в ParseSummaryReport открывала неправильную книгу, но я смотрел ее в режиме Debug, и у нее, казалось, был правильный путь к файлу. Любые идеи, что происходит?Ошибка Runtime VBA 1004 после перезагрузки компьютера
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
Спасибо , Я не использовал его с заявлением. – user1476050
@ user1476050 есть голой флажок рядом с каждым ответом, пометив его, чтобы все знали, что у этого вопроса есть ответ, который является решением, отмечая правильные ответы, дает вам пару пунктов тоже :) –