2017-01-12 5 views
0

Я пытаюсь сохранить файл excel с помощью vba. Вот мой код:vba save excel файл как?

Sub Save() 
With ActiveWorkbook 
On Error GoTo message 
.SaveAs "G:\BUYING\Food Specials\2. Planning\6. Themes and Seasonal\Christmas\2017\Volume Planning\Volume overviews\SOSP\Ambient Volumes\#" & Range(C5).Value & " - " & Range(C6).Value & ".xls", FileFormat:=56 
message: 
MsgBox "There is an error" 
End With 
End Sub 

По какой-то причине код не будет сохранить файл и код по умолчанию для ошибок. Может кто-нибудь покажет мне, что я делаю неправильно?

EDIT:

Фактическая ошибка Эксел метод диапазон объекта глобального не удалось

ответ

0

Вам нужно настроить диапазоны с " и добавить Exit Sub предотвратить message: вызывается для отображения MsgBox, когда не требуется.

Sub Save() 
    With ActiveWorkbook 
     On Error GoTo message 
     .SaveAs "G:\BUYING\Food Specials\2. Planning\6. Themes and Seasonal\Christmas\2017\Volume Planning\Volume overviews\SOSP\Ambient Volumes\#" & Range("C5").Value & " - " & Range("C6").Value & ".xls", FileFormat:=56 
     Exit Sub 
     message: 
     MsgBox "There is an error" 
    End With 
End Sub 
0

ошибка вызвана тем, что вы написали c5 вместо «c5», поэтому он ищет диапазон назван значение c5, которое пусто, и нет диапазона, называемого пустым. Попробуйте это:

Sub Save() 
    ActiveWorkbook.SaveAs "G:\BUYING\Food Specials\2. Planning\6. Themes and Seasonal\Christmas\2017\Volume Planning\Volume overviews\SOSP\Ambient Volumes\#" & Range("C5").Value & " - " & Range("C6").Value & ".xls", FileFormat:=56 
End Sub 

Кроме того, вам не нужно сложную обработку ошибок здесь потому, что поведение по умолчанию так же, как вы просили: окно сообщения с некоторым описанием. Поэтому я тоже ее удалил. Если вы хотите сделать что-то еще для обработки ошибки, то, однако, вы должны написать Exit Sub перед меткой обработчика ошибок, иначе он покажет сообщение об ошибке, даже если оно будет успешным. И вы должны также восстановить обработку ошибок, например:

Sub Save() 
    On Error GoTo message 
    ActiveWorkbook.SaveAs "G:\BUYING\Food Specials\2. Planning\6. Themes and Seasonal\Christmas\2017\Volume Planning\Volume overviews\SOSP\Ambient Volumes\#" & Range("C5").Value & " - " & Range("C6").Value & ".xls", FileFormat:=56 
    On Error GoTo 0 
    Exit Sub 
message: 
    On Error GoTo 0 
    MsgBox "There is an error" 
End Sub 
+0

А также «C6» .. –

+0

@ z32a7ul можно сохранить книгу как копию? С помощью метода, который я использую, он переименовывает активную книгу в качестве нового имени файла, я не хочу этого? –

+0

@ z32a7ul, если я использую SaveCopyAs, он сообщает мне неправильное количество ошибок в аргументах –