【问题标题】:Save file as csv, keeps coming up as .xlsx将文件另存为 csv,不断出现为 .xlsx
【发布时间】:2019-05-21 05:43:21
【问题描述】:

我正在尝试将工作簿的副本输出为 CSV 文件。我有下面的代码,但在将其保存为 Excel 工作簿的文件类型时。

Sub SAVE_CSV()

Dim FileName As String
FileName = "CSV Import File"

Dim fPth As Object
Set fPth = Application.FileDialog(msoFileDialogSaveAs)

With fPth
    .InitialFileName = FileName
    .Title = "Save Your Import File"
    .InitialView = msoFileDialogViewList
    If .Show <> 0 Then
        ThisWorkbook.SaveAs FileName:=.SelectedItems(1) & "*.csv", FileFormat:=xlCSV
    End If
End With

【问题讨论】:

  • 试试去掉*.csv中的*?还要确保文件名是可接受的,并且.SelectedItems(1) 没有非法字符。
  • @BruceWayne 感谢 cmets!在更改这两件事时,我的另存为对话框仍然会出现另存为文件类型 = Excel 工作簿。奇怪的是,虽然 .csv 扩展名没有出现在带有标题的文件名输入框中
  • .SaveAs 行之前,添加Debug.Print .SelectedItems(1) &amp; ".csv"。输出的路径和文件名是否合法?

标签: excel vba csv export-to-csv file-format


【解决方案1】:

您知道要保存的名称,所以也许只是选择正确的文件夹:

Sub SAVE_CSV()

    Dim FileName As String
    FileName = "CSV Import File Again"

    Dim fPth As Object
    Set fPth = Application.FileDialog(msoFileDialogFolderPicker)

    With fPth
      .InitialFileName = "C:\Users\Testing\Documents\Can be deleted\" 'Change as required.
      .Title = "Save Your Import File"
      .InitialView = msoFileDialogViewList

      If .Show <> 0 Then
        ThisWorkbook.SaveAs FileName:=.SelectedItems(1) & "\" & FileName & ".csv", FileFormat:=xlCSV
          End If
    End With

End Sub

【讨论】:

    【解决方案2】:

    替换为:

    ThisWorkbook.SaveAs FileName:=.SelectedItems(1) & ".csv"
    

    遵循以下逻辑:

    1. 路径 - 目录
    2. “\”
    3. 文件名
    4. 文件类型 - .csv

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多