Итак, во-первых, я не знаком с VBA. Я пытался изучать VBA, потому что на моей работе это то, что лежит в основе нашей базы данных и нашего рабочего процесса Excel (хотя никто в моем отделе, кажется, не знает, как это работает). И я пытался написать макрос, который мог бы автоматизировать некоторые работы, которые мне нужно сделать, а именно: импорт CSV-файлов в Excel для их обработки. Я пытался подойти к этой проблеме шаг за шагом, разделив ее на более мелкие подмножества задач.
Таким образом, я смог добавить запрос в Excel, который позволяет ему заглянуть в папку, чтобы увидеть какие файлы там. Это позволяет макросу «видеть» различные пути к файлам и имена файлов.
Теперь я пытаюсь выполнить sh, чтобы получить макрос l oop через все файлы, которые он видит в папке, и импортировать их на лист с именем «output».
Независимо от того, что я пробовал и сколько исследований я провел, я не могу понять макрос импорта. Он продолжает выдавать мне ошибку компиляции, которая ожидает '='
(я знаю, что макрос может правильно прочитать имена файлов и т. Д. c, потому что я создал подпрограмму, которая делает его 'log' любым он читает, чтобы проверить его способность различать типы файлов)
Dim ImportFolder As String
Dim ImportRow As Range
Dim ImportFilename As Range
Dim ImportFilenameS As String
Dim ImportAccessDate As Range
Dim ImportFilePath As Range
Dim ImportExtension As Range
Dim ImportRange As Range
Dim ImportVar As Integer
Dim ImportLength As Integer
Dim L
Dim LogRow As Range
Dim LogFilename As Range
Dim LogAccessDate As Range
Dim LogFilePath As Range
Dim LogStatus As Range
Dim LogReason As Range
Dim OutputFolder As String
Dim OutputRange As Range
Sub FileTypeController()
Set ImputFolder = "H:\BLM.Workflow\CSV.Workflow-Input\"
Set ImportExtension = ThisWorkbook.Worksheets("Import").Range("B2")
Set ImportFilename = ThisWorkbook.Worksheets("Import").Range("A2")
Set ImportAccessDate = ThisWorkbook.Worksheets("Import").Range("C2")
Set ImportFilePath = ThisWorkbook.Worksheets("Import").Range("G2")
Set LogFilename = ThisWorkbook.Worksheets("Log").Range("A2")
Set LogAccessDate = ThisWorkbook.Worksheets("Log").Range("B2")
Set LogFilePath = ThisWorkbook.Worksheets("Log").Range("C2")
Set LogStatus = ThisWorkbook.Worksheets("Log").Range("D2")
Set LogReason = ThisWorkbook.Worksheets("Log").Range("E2")
Set ImportRange = ThisWorkbook.Worksheets("Import").Range("A:A")
ImportVar = WorksheetFunction.CountA(ImportRange)
ImportLength = (ImportVar - 1)
For L = 1 To ImportLength
If ImportExtension.Value = ".csv" Or ImportExtension.Value = ".txt" Then
Call CSVToOutput Else Call ExtensionTypeFailedImport
Set ImportExtension = ImportExtension.Offset(1, 0)
Set ImportFilename = ImportFilename.Offset(1, 0)
Set ImportAccessDate = ImportAccessDate.Offset(1, 0)
Set ImportFilePath = ImportFilePath.Offset(1, 0)
Set LogFilename = LogFilename.Offset(1, 0)
Set LogAccessDate = LogAccessDate.Offset(1, 0)
Set LogFilePath = LogFilePath.Offset(1, 0)
Set LogStatus = LogStatus.Offset(1, 0)
Set LogReason = LogReason.Offset(1, 0)
Next
ThisWorkbook.Worksheets("Log").Activate
End Sub
Sub CSVToOutput()
ImportFilenameS = "TEXT;" & ImportFilename.Value
Set OutputRange = ThisWorkbook.Worksheets("Output").Range("A1")
'Application.CutCopyMode = False
With ThisWorkbook.Worksheets("Output").QueryTables_
.Add(Connection:= ImportFilenameS,Destination:= OutputRange)
.Name = "Importfilename"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
Call SuccessfulImport
End Sub
Это все еще первый черновик, поэтому я еще не потратил немного времени на его очистку. Извиняюсь, если код tra sh, но я даю ему все; -)