2017-05-15 8 views
1

私は特定のフォルダに使用しているExcelブックのコピーを保存するコードを使用したいと思います。名前から範囲のSaveAsCopy

これは私が持っているものですが、私は保存されたコピーを取得していないようです。

私が持っている価値"G4"の名前は、コピーを印刷したい名前です。

問題が発生する可能性のある人はいますか?

私はまだこのVBA stuff =を学ぶことに問題があります。新しいプログラマーにとっては難しいです。

Sub SparatillFolder() 
Dim strFilename, strPathname, strDefpath As String 
On Error Resume Next ' If directory exist goto next line 


strFilename = sheets("Graf").Range("G4").Value 'New file name 
strDefpath = "\\C:"MYFOLDER" \dxakmh\Desktop\TestMiljö\Prognosverktyg\Sektionsfil\Gruppfiler\NyStruktur" 'Default path name 
If IsEmpty(strFilename) Then Exit Sub 

MkDir strDefpath 
strPathname = strFilename 'filename 

ActiveWorkbook.SaveCopyAs Filename:=strFilename & ".xlsm" 
End Sub 

あらかじめありがとうございます。

+0

あなた 'strDefpath'が – 0m3r

+1

サイドノート正しくありません。それだけでエラーをミュートし、それは非常に悪い習慣ですので、私はほとんどお勧めしません(1)エラー再開Next'では'使用しないよう:[VBAグッドプラクティス - エラー処理] (http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/5411/error-handling)。 (2)すべての変数について、 'Dim strFilename、strPathname、strDefpath As String 'は最初の2文字を' Variant'として残すので、その型を指定する必要があります。最後のものだけが 'String'を使用します:' Dim strFilename As String、strPathname As String 、strDefpath As String' –

答えて

1

strDefpathstrDefpath = "C:\dxakmh\Desktop\TestMiljö\Prognosverktyg\Sektionsfil\Gruppfiler\NyStruktur"

.TextSheets("Graf").Range("G4").Text

Option Explicit 
Sub SparatillFolder() 
    Dim strFilename As String 
    Dim strDefpath As String 

    'New file name 
    strFilename = ThisWorkbook.Sheets("Graf").Range("G4").Text 
    strDefpath = "C:\dxakmh\Desktop\TestMiljö\Prognosverktyg\Sektionsfil\Gruppfiler\NyStruktur" 

    If IsEmpty(strFilename) Then Exit Sub 

    If Len(Dir(strDefpath, vbDirectory)) = 0 Then MkDir strDefpath 

    ActiveWorkbook.SaveCopyAs Filename:=strDefpath & "\" & strFilename & ".xlsm" 
End Sub 

Range.Text Property (Excel) 返すか、指定したオブジェクトのテキストを設定を使用しなければなりません。読み取り専用文字列。

+1

サイドノート:すべての変数について、 'Dim strFilename、strPathname、strDefpath As String 'は最初の2文字を' Variant'のままにしているので、その型を指定しなければなりません。最後のものだけが 'String'を使用します:' Dim strFilename文字列として、strPathnameとして文字列、strDefpathとして文字列 '代わりに。 –

+1

@Pehあなたの権利、私はそれについて完全に忘れていた、私はコーヒーブレークをつかむためのその時間と思う:-) – 0m3r

+0

完璧!ありがとうございます! – DL1

関連する問題