2010-12-17 17 views
0

Excelファイルとcsvを動的に生成するプログラムがあります。 Excelファイルには、読み込み時にcsvデータをロードするVBAコードがあり、csvファイルに同じファイル名を使用して、その拡張子を動的に呼び出す必要があります。Excelでは、VBAを使用して、「パス+ファイル名+拡張子」を取得し、拡張子を変更するにはどうすればよいですか?

C:\directory\filename.xls 

このVBAコード::それは(source of code)が正しいかどう

Function GetFullName() As String 

GetFullName = ThisWorkbook.FullName 

End Function 

は、

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

につながるXLSファイルはここにあったのであれば、私の理解これに基づいてどのように ".xls"を ".csv"に置き換えて、その値をファイル呼び出しに挿入しますか。または、たとえば、このコードを使用してPDFを印刷するVBAがファイルをシンプルに保つようにします。これGetFullNameを使用するように私を必要とする、と「.PDF」に変更し、「.XLS」:

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をそれは働くでしょうか?また、GetPullNameCSV()をPrintPDF()の例のFilename属性に挿入する方法はありますか?ありがとう! – blunders

+1

私はテストしませんでしたが、私はReplaceに非常に精通しています。私はこれを使う方法を描いた。 – Fionnuala

+0

+1ちょっと調べてみたら、今すぐテストするためのExcelをインストールしていない - あなたのコードを理解していない可能性があります。私の質問の。 << Filename:= "GetFullNameCSV()" >>を "Filename:=" C:\ directory \ filename.pdf ">>と読み替えるにはどうすればいいですか? Filenameへの参照は私の質問の "Sub PrintPDF()"の例から取られています。意味私はちょうど特別な書式設定なしでファイル名の場所として "GetFullNameCSV()"をプラグインすることはできないと推測しています。そうですか?再びありがとう!! – blunders

関連する問題