Импорт CSV на новый лист в книге Excel VBA - PullRequest
0 голосов
/ 06 ноября 2019

Я создаю спецификацию CSV, экспортированную из CREO. У меня на главном рабочем листе есть кнопка команды, которая импортирует файл CSV на новый рабочий лист и присваивает ему имя с именем файла CSV. Проблема, с которой я столкнулся, заключается в том, что при импорте дата не добавляется на новый лист, вместо этого открывается новая книга.

Sub load_csv () Dim fStr As String

With Application.FileDialog(msoFileDialogFilePicker)
    .Show
    If .SelectedItems.Count = 0 Then
        'MsgBox "Cancel Selected"
        Exit Sub
    End If
    'fStr is the file path and name of the file you selected.
    fStr = .SelectedItems(1)
End With

    Dim ws As Worksheet 'variable that will contain the new sheet

    Dim help_name() As String 'helper string array that will contain the full path of your file
    help_name = Split(fStr, "\") 'populating the variable with the full path, each '\' creates a new item

    Set ws = ThisWorkbook.Sheets.Add 'adding a new sheet to your workbook
    ws.Name = Replace(help_name(UBound(help_name)), ".bom", "", , , vbTextCompare) 'naming the new sheet with the name of the file and removing the '.bom'
        'ubound returns the highest position of the array, which is always name of the file

With ThisWorkbook.Sheets("Sheet2").QueryTables.Add(Connection:= _
"TEXT;" & fStr, Destination:=ThisWorkbook.Sheets("Sheet2").Range("$A$1"))
    .Name = "CAPTURE"
    .FieldNames = True
    .RowNumbers = False
    .FillAdjacentFormulas = False
    .PreserveFormatting = True
    .RefreshOnFileOpen = False
    .RefreshStyle = xlInsertDeleteCells
    .SavePassword = False
    .SaveData = True
    .AdjustColumnWidth = True
    .RefreshPeriod = 0
    .TextFilePromptOnRefresh = False
    .TextFilePlatform = 437
    .TextFileStartRow = 1
    .TextFileParseType = xlDelimited
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .TextFileConsecutiveDelimiter = False
    .TextFileTabDelimiter = True
    .TextFileSemicolonDelimiter = False
    .TextFileCommaDelimiter = True
    .TextFileSpaceDelimiter = False
    .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
    .TextFileTrailingMinusNumbers = True
    .Refresh BackgroundQuery:=False
    'ActiveWorkbook.Save



End With

EndSub

Я создал код для импорта CSV-файла в «Sheet2», однако я хотел бы добавить его в качестве нового рабочего листа, а затем переименовать этот рабочий лист в имя файла без .BOM в конце, если это возможно

1 Ответ

1 голос
/ 06 ноября 2019

Надеюсь, это поможет :-)

, если вы вставите его перед оператором with, а затем замените 'ThisWorkbook.Sheets ("Sheet2") "на" ws "в выражении with, я верюследует делать то, что вам нужно.

Dim ws As Worksheet 'variable that will contain the new sheet

Dim help_name() As String 'helper string array that will contain the full path of your file
help_name = Split(fstr, "\") 'populating the variable with the full path, each '\' creates a new item

Set ws = ThisWorkbook.Sheets.Add 'adding a new sheet to your workbook
'Original not reliable option 'ws.Name = Replace(help_name(UBound(help_name)), ".bom", "", , , vbTextCompare) 'naming the new sheet with the name of the file and removing the '.bom'
    'ubound returns the highest position of the array, which is always name of the file
ws.Name = Left(help_name(UBound(help_name)), InStr(1, help_name(UBound(help_name)), ".bom", vbTextCompare) - 1) 'updated hopefully more reliable option of naming the sheet
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...