Я обрабатываю данные из симуляции. Мониторы из симуляции - это файлы CSV, но на симуляцию приходится около 20, и каждый из них неудобно загружать в Excel и преобразовывать значения в тип десятичного числа.
В настоящее время у меня есть модуль VBA, который автоматизирует загрузку следующих значений:
''' Sub Macro4()
ActiveWorkbook.Queries.Add Name:="oil-produced", Formula _
:= _
"let" & Chr(13) & "" & Chr(10) & " Source = Table.FromColumns({Lines.FromBinary(File.Contents(""C:\Users\user\Documents\run6\results\oil-produced.out""), null, null, 1252)})," & Chr(13) & "" & Chr(10) & " #""Split Column by Delimiter"" = Table.SplitColumn(Source, ""Column1"", Splitter.SplitTextByDelimiter("" "", QuoteStyle.Csv), {""Column1.1"", ""C" & _
"olumn1.2"", ""Column1.3""})," & Chr(13) & "" & Chr(10) & " #""Changed Type"" = Table.TransformColumnTypes(#""Split Column by Delimiter"",{{""Column1.1"", type number}, {""Column1.2"", type number}, {""Column1.3"", type number}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Changed Type"""
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""oil-produced"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [oil-produced]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "oil_produced"
.Refresh BackgroundQuery:=False
End With
Application.Run "getUnits"
End Sub
Файл данных находится в папке C: \ Users \ user \ Documents \ run6 \ results \ нефтедобывающий, и файл данных называется нефтедобывающим.
Мне нужно вызвать несколько таких файлов данных и папку, в которой эти файлы находятся в изменениях. Я хотел бы иметь возможность параметризовать папку файла и имя файла данных в начале макроса, чтобы я мог легко изменить местоположение файла без корректировки каждого запроса и создать для данных от l oop до l oop файлы, чтобы подпрограмма не была такой длинной и громоздкой.
Я попытался сделать это, указав имя папки в виде строки и подставив его в запрос к книге; однако я получаю сообщение об ошибке, указывающее, что указанный путь к файлу должен быть действительным абсолютным путем.
У кого-нибудь есть предложения относительно альтернативных способов сделать это?