2010-12-17 97 views
0

有一个动态生成Excel文件和csv的程序。 excel文件有加载csv数据的“加载”的VBA代码,我想通过让csv文件具有相同的文件名,但只是不同的扩展名来动态调用该csv。所以,根据我的理解这一点,如果XLS文件在这里:在Excel中,如果使用VBA,我如何使用“路径+文件名+扩展名”并更改扩展名?

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 

希望这个问题是清楚的,如果有一个更好的解决方案的概念,我接受它。如果你有问题,请告诉我。

回答

3

替换可能是你想要什么:

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 
+0

+1酷,你有没有测试它,或只是猜测它会工作?另外,如何将GetFullNameCSV()插入PrintPDF()示例中的Filename属性?谢谢! – blunders 2010-12-17 01:57:54

+1

我没有测试,但我对Replace很熟悉。我已经勾画出了一种使用这种方法的方法。 – Fionnuala 2010-12-17 02:03:01

+0

+1好的,只是检查,想通了,只是没有安装Excel来测试它 - 说,认为这是可能的我不理解你的代码,或更可能是,你不了解的核心我的问题。我如何取<<文件名:=“GetFullNameCSV()”>>,并将其读作<<文件名:=“C:\目录\文件名.pdf”>>。文件名的引用取自我的问题中的“Sub PrintPDF()”示例。意思我猜我不能只是插入“GetFullNameCSV()”作为文件名位置没有一些特殊的格式。对,还是不?再次谢谢你!! – blunders 2010-12-17 02:11:10

相关问题