2011-07-26 19 views
1

特定のワークシートのすべての情報をコピーして新しいブックにコピーするExcelマクロがあります。コードは次のとおりです。Excelマクロ:なぜこれは正しいディレクトリに保存されませんか?

Option Explicit 

Sub TwoSheetsAndYourOut() 
Dim NewName As String 
Dim nm As Name 
Dim ws As Worksheet 

If MsgBox("Copy specific sheets to a new workbook" & vbCr & _ 
"New sheets will be pasted as values, named ranges removed" _ 
, vbYesNo, "New Copy") = vbNo Then Exit Sub 

With Application 
    .ScreenUpdating = False 

    On Error GoTo ErrCatcher 
    Sheets("Input").Copy 
    On Error GoTo 0 

    For Each ws In ActiveWorkbook.Worksheets 
     ws.Cells.Copy 
     ws.[A1].PasteSpecial Paste:=xlValues 
     ws.Cells.Hyperlinks.Delete 
     Application.CutCopyMode = False 
     Cells(1, 1).Select 
     ws.Activate 
    Next ws 
    Cells(1, 1).Select 

    For Each nm In ActiveWorkbook.Names 
     nm.Delete 
    Next nm 

    NewName = InputBox("Please specify the name of your new workbook", "New Copy", "input") 

    Dim sPath As String 
    sPath = ThisWorkbook.Path 
    ActiveWorkbook.SaveCopyAs sPath & NewName + ".xls" 
    ActiveWorkbook.Close SaveChanges:=False 

    .ScreenUpdating = True 
End With 
Exit Sub 

ErrCatcher: 
    MsgBox "Specified sheets do not exist within this workbook" 
End Sub 

ただし、新しいExcelファイルは正しいディレクトリに保存されません。元のExcelファイル、マクロが含まれている1は、(Macの場合)次のディレクトリにあります。

/アプリケーション/ WORDNET/

をPROJECTSしかし、私はマクロを実行するたびに、それは新しいが保存されますプロジェクトフォルダの代わりにWORDNETフォルダのExcelファイルを開きます。

コードを修正して正しい場所に保存するにはどうすればよいですか?なぜ元のExcelファイルと同じディレクトリに保存されませんか?

答えて

1
sPath = ThisWorkbook.Path 

sPath(少なくとも、Windows上で)最後に区切り文字のない道であるので、あなたのスクリプトで1を追加する必要があります。

ActiveWorkbook.SaveCopyAs sPath & "/" & NewName + ".xls" 

Windowsの場合:

ActiveWorkbook.SaveCopyAs sPath & "\" & NewName + ".xls" 
あなたのケースでは、ファイルは、名前 "PROJECTS" & NewName

のUnixで/Applications/WORDNETに保存されます

関連する問題