【问题标题】:Macro for getting the file name from the cell and prompt the location to save the file用于从单元格中获取文件名并提示保存文件的位置的宏
【发布时间】:2015-11-25 18:33:31
【问题描述】:

我正在寻找一个宏,它在运行时会从单元格中获取值并使用该名称保存它,并提示输入保存文件的路径。以下是我的尝试:

Sub SelectFolder()
    Dim diaFolder As FileDialog

    Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)
    diaFolder.AllowMultiSelect = False
    diaFolder.Show
    ActiveSheet.Copy
    ActiveWorkbook.SaveAs Filename:= _
    diaFolder & ActiveSheet.[d2] & ".xlsx", FileFormat:= _
    xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False


    Set diaFolder = Nothing
End Sub

在此值是从单元格中获取的,并且会提示询问文件夹以保存文件。但该文件不存储在文件夹中,而是存储在单独的文件夹中。我想这里需要做一个小修正。

同样在保存时,它会警告我可能存在 97-2003 文件类型的兼容性问题。我想这行有一些需要纠正的地方:

diaFolder & ActiveSheet.[d2] & ".xlsx", FileFormat:= _
        xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False 

但不知道要更改什么。我希望文件为 .xlsx 格式,并且与所有设备兼容。

谁能帮我做这两个?

【问题讨论】:

  • 只是为了更好地理解,您正在使用单元格 D2 中的名称保存文件?
  • 关于你的第二个问题,你正在保存到一些古老版本的 excel...FileFormat:= _ xlExcel8
  • 是的.. 之后我选择保存它的路径。我能够做到这一点。但是文件没有保存在选择的路径中
  • @findwindow 哦.. 我猜这应该是问题所在。我们现在可以改什么版本?
  • 我只是省略了文件格式。实际上,您可以省略所有参数...仅在对您很重要时设置参数。

标签: excel vba


【解决方案1】:

这是一个工作代码:

Sub SelectFolder()
    Dim diaFolder As FileDialog
    Dim fileName, filePath As String

    Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker)

    diaFolder.AllowMultiSelect = False
    diaFolder.Show
    ActiveSheet.Copy

    fileName = ActiveSheet.Range("D2").Value

    'You need to use diaFolder.SelectedItems(1) and not just diaFolder
    filePath = diaFolder.SelectedItems(1) & "\" & fileName & ".xlsx"

    ActiveWorkbook.SaveAs fileName:= _
        filePath, FileFormat:=xlWorkbookNormal, Password:="", WriteResPassword:="" _
        , ReadOnlyRecommended:=False, CreateBackup:=False

    Set diaFolder = Nothing
End Sub

注意:
我已将 FileFormat 从 Excel8 更改为 xlWorkbookNormal

代码中的问题:
1. FileFormat Excel 8 表示 97-2003 format in Excel 2007-2013, xls,您将其保存为 .xlsx
2. 您只使用 diaFolder 而不是 diaFolder.SelectedItems(1)

【讨论】:

  • 非常感谢..这行得通。至于名称格式,我仍然在您的代码中收到警告。所以,按照 ExcelHero 的建议,我删除了额外的参数。
  • 很高兴能提供帮助,我想知道为什么它给了你警告,因为它对我来说工作得很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 2010-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多