Вытягивание одного каталога над выбранным каталогом msoFileDialogFolderPicker

#excel #vba

#excel #vba

Вопрос:

Я пытаюсь использовать msoFileDialogFolderPicker в макросе Excel, чтобы выбрать место сохранения для моего пути к файлу. Однако, когда я успешно выполняю код, создается несколько csv, они помещают каталог выше местоположения, которое я выбрал в msoFileDialogFolderPicker. Я попытался использовать 2 для .SelectedItems (2) учитывая, что после того, как я попаду в каталог по умолчанию, мне нужно выполнить детализацию на одном уровне, прежде чем выбрать конечный пункт назначения папки, но безуспешно.

     Sub SplitRowsToMultipleCSVs()
    
    
    Const HeaderRow As Integer = 1
    Dim FolderPath As String
    
    Dim iRow As Integer, startSheet As Worksheet, tmpSheet As Worksheet
    Dim NumRows As Integer
    Dim s As String
      
    Application.ScreenUpdating = False
    
    s = Application.InputBox(Prompt:="Ticket Number", Type:=2)
    
    FolderPath = GetFolder()
    
    NumRows = ActiveSheet.UsedRange.Rows.Count
    iRow = HeaderRow   1
    Set startSheet = ActiveSheet
    Do Until iRow > NumRows
        Set tmpSheet = Worksheets.Add
        'copy the header
        startSheet.Range(HeaderRow amp; ":" amp; HeaderRow).EntireRow.Copy tmpSheet.Range("A1")
        'copy the data
        startSheet.Range(iRow amp; ":" amp; (iRow)).EntireRow.Copy tmpSheet.Range("A2")
        'save tmpSheet to CSV file
        tmpSheet.Move
        With ActiveWorkbook
            .SaveAs Filename:=FolderPath amp; "BillingNAVSetup_" amp; s amp; "_" amp; (iRow - 1) amp; ".csv", FileFormat:=xlCSVMSDOS
            .Close True
        End With
        iRow = iRow   1
    Loop
    
    Application.ScreenUpdating = True
    
End Sub


Function GetFolder() As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
    .Title = "Select a Folder"
    .AllowMultiSelect = False
    '.InitialFileName = strPath
    If .Show <> -1 Then GoTo NextCode
    sItem = .SelectedItems(1)
End With
NextCode:
GetFolder = sItem
Set fldr = Nothing
End Function
  

Комментарии:

1. Я думаю, вам нужен разделитель пути после FolderPath имени вашего файла.

2. Спасибо @Kostas. Пришлось разобраться, на что вы ссылались, но ваш хлебный крошка помог найти решение. Обновлен код до: ` .SaveAs Filename:= Путь к папке и приложение. pathSeparator amp; «BillingNAVSetup_» amp; s amp; «_» amp; (iRow — 1) amp; «.csv», формат файла:=xlCSVMSDOS `

3. Да, это то, что я имел в виду. По какой-то причине я не смог написать символ обратной косой черты в своем комментарии.