在Excel中,使用VBA,如何获取;路径+;文件名+;“扩展”;换分机?

在Excel中,使用VBA,如何获取;路径+;文件名+;“扩展”;换分机?,excel,vba,Excel,Vba,有一个动态生成Excel文件和csv的程序。excel文件有VBA代码,用于“加载”csv数据,我希望通过使csv文件具有相同的文件名,但只是不同的扩展名来动态调用该csv。因此,根据我的理解,如果xls文件在这里: C:\directory\filename.xls 此VBA代码: Function GetFullName() As String GetFullName = ThisWorkbook.FullName End Function 会导致 GetFullName() =

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

C:\directory\filename.xls
此VBA代码:

Function GetFullName() As String

 GetFullName = ThisWorkbook.FullName 

End Function
会导致

GetFullName() = "C:\directory\filename.xls"
那么,如果这是正确的(),我如何将“.xls”替换为“.csv”,然后将该值插入到文件调用中。或者,为了保持简单,该文件具有VBA,可使用此代码打印PDF;这需要我使用GetFullName,并将“.xls”更改为“.pdf”:


希望问题清楚,如果有更好的解决方案,我愿意接受。如果你有问题,就告诉我

替换可能正是您想要的:

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

替换可能正是您想要的:

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属性中?谢谢我没有测试,但我对替换非常熟悉。我已经勾勒出了一种使用它的方法。+1好吧,只是检查一下,我想,只是现在没有安装Excel来测试它——也就是说,我可能不理解你的代码,或者更可能的是,你不理解我问题的核心。如何获取>并将其读取为>。对文件名的引用取自我问题中的“Sub-PrintPDF()”示例。这意味着我猜如果没有一些特殊的格式,我不能直接插入“GetFullNameCSV()”作为文件名位置。对不对?再次感谢你@你可以把它插上。“特殊格式”是由函数提供的,它返回一个字符串,一个与您指定的文件名字符串完全相同的字符串。@Doug Glancy:+1谢谢,我想我刚刚得到了使用字符串串接插入的文件名。+1很酷,您测试过它了吗,或者只是猜测它可以工作?另外,在PrintPDF()示例中,如何将GetFullNameCSV()插入到Filename属性中?谢谢我没有测试,但我对替换非常熟悉。我已经勾勒出了一种使用它的方法。+1好吧,只是检查一下,我想,只是现在没有安装Excel来测试它——也就是说,我可能不理解你的代码,或者更可能的是,你不理解我问题的核心。如何获取>并将其读取为>。对文件名的引用取自我问题中的“Sub-PrintPDF()”示例。这意味着我猜如果没有一些特殊的格式,我不能直接插入“GetFullNameCSV()”作为文件名位置。对不对?再次感谢你@你可以把它插上。“特殊格式”是由函数提供的,它返回一个字符串,一个与您指定的文件名字符串完全相同的字符串。@Doug Glancy:+1谢谢,我想我刚刚得到了使用字符串串联插入的文件名。