Макрос Excel: почему это не сохранить в правильном каталоге? - PullRequest
1 голос
/ 26 июля 2011

У меня есть макрос 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, содержащий макрос, находится в следующем каталоге (на Mac):

/ Applications / WORDNET / PROJECTS

Однако каждый раз, когда я запускаю макрос,он сохраняет новый файл Excel в папке WORDNET, а не в папке ПРОЕКТЫ.

Как изменить код, чтобы он сохранялся в правильном месте?И почему он не сохраняется в том же каталоге, что и исходный файл Excel?

1 Ответ

1 голос
/ 26 июля 2011
sPath = ThisWorkbook.Path

sPath - это путь без разделителя в конце (по крайней мере, в Windows), поэтому вы должны добавить его в свой скрипт. В вашем случае файлы будут сохранены в /Applications/WORDNET с именем "PROJECTS" & NewName

Unix:

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

Windows

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