【问题标题】:In Excel, using VBA, how do I take the "path+filename+extension" and change the extension?在 Excel 中,使用 VBA,如何获取“路径+文件名+扩展名”并更改扩展名?
【发布时间】:2016-10-07 19:59:15
【问题描述】:

拥有一个动态生成 Excel 文件和 csv 文件的程序。 excel文件具有“加载时”加载csv数据的VBA代码,我想通过让csv文件具有相同的文件名,但只是不同的扩展名来动态调用该csv。所以,根据我的理解,如果 xls 文件在这里:

C:\directory\filename.xls

这个 VBA 代码:

Function GetFullName() As String

 GetFullName = ThisWorkbook.FullName 

End Function

会导致

GetFullName() = "C:\directory\filename.xls"

所以,如果这是正确的 (source of code),我如何将“.xls”替换为“.csv”,然后将该值插入到文件调用中。或者例如,为了简单起见,该文件具有使用此代码打印 PDF 的 VBA;这将需要我使用 GetFullName,并将“.xls”更改为“.pdf”:

Sub PrintPDF()

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\directory\filename.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False _

End Sub

希望问题很清楚,如果有更好的解决方案概念,我愿意接受。如果您有任何问题,请告诉我。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    替换可能正是您想要的:

    Function GetFullNameCSV() As String
    
     GetFullNameCSV = Replace(ThisWorkbook.FullName, ".xls",".csv")  
    
    End Function
    

    你可以通过包含你想要的扩展来扩展它:

    sFileName = GetNewExt("pdf")
    
    Function GetNewExt(Ext As String) As String
    
     GetNewExt = Replace(ThisWorkbook.FullName, ".xls","." & Ext)  
    
    End Function
    

    【讨论】:

    • +1 很酷,你测试过它,还是只是猜测它会起作用?另外,如何在 PrintPDF() 示例中将 GetFullNameCSV() 插入 Filename 属性?谢谢!
    • 我没有测试,但是我对Replace非常熟悉。我已经勾勒出一种使用它的方法。
    • +1 好的,只是检查一下,想通了,只是现在没有安装 Excel 来测试它——也就是说,我可能不理解你的代码,或者更多可能,您不理解我的问题的核心。如何获取 > 并将其读取为 >。对文件名的引用取自我的问题中的“Sub PrintPDF()”示例。这意味着我猜我不能在没有一些特殊格式的情况下将“GetFullNameCSV()”作为文件名位置插入。对,还是不对?再次感谢您!
    • @blunders 你可以把它插入。“特殊格式”由函数提供,它返回一个字符串,一个与你指定的文件名字符串完全等价的字符串。
    • @Doug Glancy:+1 谢谢,我猜我只是混淆了使用字符串连接插入的文件名。
    猜你喜欢
    • 1970-01-01
    • 2022-06-23
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 2016-09-06
    相关资源
    最近更新 更多