2014-12-17 4 views
0

Я надеюсь, что вы, ребята, можете мне помочь. Я действительно не очень много знаю о кодировании vb, но только некоторые крайние основы.Excel save as box

Я пытаюсь получить свой destfile в = Application.FileDialog, но я не совсем уверен, как это сделать. Я знаю, как назначить путь по умолчанию для моего текущего кода, но я бы предпочел сохранить его как поле. Любая помощь случайно?

Вот мой текущий код.

Sub QuoteCommaExport() 
    ' Dimension all variables. 
    Dim DestFile As String 
    Dim FileNum As Integer 
    Dim ColumnCount As Integer 
    Dim RowCount As Integer 
    ' Prompt user for destination file name. 
    DestFile = InputBox("Enter the destination filename" _ 
     & Chr(10) & "(with complete path):", "Quote-Comma Exporter") 
    ' Obtain next free file handle number. 
    FileNum = FreeFile() 
    ' Turn error checking off. 
    On Error Resume Next 
    ' Attempt to open destination file for output. 
    Open DestFile For Output As #FileNum 
    ' If an error occurs report it and end. 
    If Err <> 0 Then 
     MsgBox "Cannot open filename " & DestFile 
     End 
    End If 
    ' Turn error checking on. 
    On Error GoTo 0 
    ' Loop for each row in selection. 
    For RowCount = 1 To Selection.Rows.Count 
     ' Loop for each column in selection. 
     For ColumnCount = 1 To Selection.Columns.Count 

     ' Write current cell's text to file with quotation marks. 
     Print #FileNum, StrConv("""" & Selection.Cells(RowCount, _ 
      ColumnCount).Text & """", 1); 
     ' Check if cell is in last column. 
     If ColumnCount = Selection.Columns.Count Then 
      ' If so, then write a blank line. 
      Print #FileNum, 
     Else 
      ' Otherwise, write a comma. 
      Print #FileNum, ","; 
     End If 
     ' Start next iteration of ColumnCount loop. 
     Next ColumnCount 
    ' Start next iteration of RowCount loop. 
    Next RowCount 
    ' Close destination file. 
    Close #FileNum 
End Sub 
+0

Пожалуйста, добавьте 4 пробела перед кодом, таким образом он выглядит хорошо. (Я пытался изменить ваш вопрос, но где-то ошибся). –

+0

Да, я отправил с использованием bbcode изначально, а потом понял. Благодарю. –

+0

Это старый код VB, а не Excel VBA (по крайней мере, это было не десять лет или около того). Возможно, поиск здесь для '[vba] FileDialog' даст вам примеры его использования, а затем вы можете его обновить, чтобы фактически использовать встроенную поддержку SaveAs для CSV-файлов. –

ответ

1

Вы должны включить библиотеку объектов Microsoft Office 14.0.

Тогда у вас будет возможность создать поле Application.FileDialog.

Код для FileDialog выглядит примерно так:

Dim fDialog 
Dim fLocation 
Dim varFile as variant 
     Set fDialog = Application.FileDialog(msoFileDialogFilePicker) 
     With fDialog 
      .Filters.Add "Excel", "*.xlsx, *.xlsb, *.xlsm, *.xls", 1 
      .AllowMultiSelect = False 
      .Title = "Please select the file you want to use" 
      If .Show = True Then 
       ImportCK = MsgBox("Are you you want to use this file?", vbYesNo + vbQuestion, "Saving...") 
       If ImportCK = vbYes Then 
        For Each varfile In .SelectedItems 
         fLocation = varfile 
        Next 
       End If 
      Else 
       MsgBox "You clicked Cancel.", vbExclamation + vbOKOnly, "Canceled" 
       'Do something on cancel 
      End If 
     End With 

Приведенный выше код позволяет пользователю выбрать файл и возвращает адрес файла.

Если вы хотите, чтобы пользователь только выбирал папку, код похож, но меняется несколько строк.

Dim fDialog 
Dim fLocation 
Dim varFile as variant 
     'Create a folder picker 
     Set fDialog = Application.FileDialog(msoFileDialogFolderPicker) 
     With fDialog 
      .Title = "Please select the folder you want to use" 
      If .Show = True Then 
       ImportCK = MsgBox("Are you you want to use this folder?", vbYesNo + vbQuestion, "Saving...") 
       If ImportCK = vbYes Then 
        For Each varfile In .SelectedItems 
         fLocation = varfile 
        Next 
       End If 
      Else 
       MsgBox "You clicked Cancel.", vbExclamation + vbOKOnly, "Canceled" 
       'Do something on cancel 
      End If 
     End With 

Это для VBA в макросе Excel.

+0

Да, я уже знал эту конкретную команду, но спасибо за помощь. Я пытаюсь получить команду save как команду, работающую в том же контексте этого поля. По существу тот же вид просмотра, который вы видите, когда вы идете в файл> сохранить как. не File> open. Не уверен, что application.filedialog - это даже правильная команда для запуска того, что я хочу. Поэтому спрашиваю вас, ребята. –

+0

Nevermind, просмотрел синтаксис приложения и нашел нужную мне команду. msoFileDialogSaveAs. спасибо за помощь, хотя ребята! –