首页 > 解决方案 > Excel VBA - 从单元格值另存为建议的文件名和文件路径

问题描述

我在 Excel 工作簿中有一个宏,它连接到一个显示导出的按钮

当我单击该按钮时,它会触发“导出 XML ”对话框,我必须手动搜索文件夹以将其导出并输入文件名。

由于我的文档中的文件夹的名称与单元格 A24 的值完全相同,因此我希望它能够将自己引导到正确的文件夹中,并根据单元格 A24 的值向我建议一个文件名,并在其后面加上一些额外的文本。

到目前为止,我在 VBA 中有这个:

Public Sub ExportToXML()

    Dim strFilePath As String
    Dim POFilePath As String
    Dim FOFilePath As String
    Dim POFileName As String
    Dim FOFileName As String
    Dim XMLDoc As MSXML2.DOMDocument
    Dim xNode As MSXML2.IXMLDOMNode
    Dim xAttribute As MSXML2.IXMLDOMAttribute
    Dim xElement As MSXML2.IXMLDOMElement
    Dim xElementRoot As MSXML2.IXMLDOMElement
    
    Application.ScreenUpdating = False
    
    MainSheetName = ActiveSheet.Name
    
    POFilePath = "C:\Users\admin\Desktop\" & Range("A24")
    
    FOFilePath = "C:\Users\admin\Desktop\" & Range("D22") & " " & Range("A22")
    
    POFileName = "_report " & Range("D13").value & " " & Range("F13").value & ".xml"
    
    FOFileName = "_report " & Range("D13").value & " " & Range("F13").value & ".xml"
    
    If Range("A24").value = "0" Then
        
        strFilePath = Application.GetSaveAsFilename(FOFilePath & FOFileName, fileFilter:="XML files (*.xml),*.xml", Title:="Save FileAs...")
        
    Else
    
        strFilePath = Application.GetSaveAsFilename(POFilePath & POFileName, fileFilter:="XML files (*.xml),*.xml", Title:="Save FileAs...")
        
    End If

    If strFilePath = "False" Then Exit Sub

这给了我正确的文件名建议,但它不会将我定向到文件夹并转到桌面。

任何帮助将不胜感激!

编辑:

我尝试将字符串更多地合并在一起并想出了这个:

Public Sub ExportToXML()

    Dim strFilePath As String
    Dim POFilePath As String
    Dim FOFilePath As String
    Dim XMLDoc As MSXML2.DOMDocument
    Dim xNode As MSXML2.IXMLDOMNode
    Dim xAttribute As MSXML2.IXMLDOMAttribute
    Dim xElement As MSXML2.IXMLDOMElement
    Dim xElementRoot As MSXML2.IXMLDOMElement
    
    Application.ScreenUpdating = False
    
    MainSheetName = ActiveSheet.Name
    
    POFilePath = "C:\Users\admin\Desktop\" & Range("A24") & Range("A24").value & "_report " & Range("D13").value & " " & Range("F13").value & ".xml"
    
    FOFilePath = "C:\Users\admin\Desktop\" & Range("D22") & " " & Range("A22") & "_report " & Range("D13").value & " " & Range("F13").value & ".xml"
    
    
    If Range("A24").value = "0" Then
        
        strFilePath = Application.GetSaveAsFilename(FOFilePath, fileFilter:="XML files (*.xml),*.xml", Title:="Save FileAs...")
        
    Else
    
        strFilePath = Application.GetSaveAsFilename(POFilePath, fileFilter:="XML files (*.xml),*.xml", Title:="Save FileAs...")
        
    End If

    If strFilePath = "False" Then Exit Sub

问题是,VBA 认为:

POFilePath = "C:\Users\admin\Desktop\" & Range("A24") & Range("A24").value & "_report " & Range("D13").value & " " & Range("F13").value & ".xml"

第一个 Range("A24") 属于文件名部分,不会继续使用文件路径。因此,如果 A24 中的值为“test”,那么这建议将 xml 保存到桌面,文件名为 testttest_report 11 2020

标签: excelvba

解决方案


推荐阅读