SaveAs в текущую папку

Программирование на Visual Basic for Applications
PoorJorik
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 5
Зарегистрирован: 01.11.2005 (Вт) 18:18

SaveAs в текущую папку

Сообщение PoorJorik » 03.11.2005 (Чт) 15:48

Необходимо сделать следующее:
Открытый документ пересохранить в туже папку, откуда и открыт текущий.
Вот мой код, но он ошибочный, формирует имя по ФИО (знчения ячеек) и прибовляет к нему путь к текущей книге. Однако сохраняет в мои документы.
Sub click01()
a1 = [Ïåðåìåííûå!B21]
a2 = [Ïåðåìåííûå!C21]
a3 = [Ïåðåìåííûå!D21]
d = ThisWorkbook.Path
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs d & a1 & " " & a2 & " " & a3 & ".xls"
Application.DisplayAlerts = True
End Sub

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 03.11.2005 (Чт) 16:07

1) Разницу между ThisWorkbook и ActiveWorkbook знаешь?

2) У тебя открытый документ - это сохраненная книга, или новая, еще ни разу не сохраненная?

3) Сделай Debug.Print ThisWorkbook.Path

С вероятностью 50% поможет замена ThisWorkbook на ActiveWorkbook.
Быть... или не быть. Вот. В чём вопрос?

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 03.11.2005 (Чт) 17:36

А по-моему, там не хватает Application.PathSeparator в имени нового файла. (d & Application.PathSeparator & …)

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 03.11.2005 (Чт) 17:59

Ага, наверное. Даж почти наверняка.

Вот, есть такая функция, от GSerg'а, если не ошибаюсь:

Код: Выделить всё
function EnsureSlash(s as string) as string
if right$(s,1)="\" then ensureslash=s else ensureslash=s & "\"
end function


Написать вместо d=ThisWorkbook.Path - d=EnsureSlash(ActiveWorkbook.Path).
Быть... или не быть. Вот. В чём вопрос?

PoorJorik
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 5
Зарегистрирован: 01.11.2005 (Вт) 18:18

Сообщение PoorJorik » 07.11.2005 (Пн) 14:38

У меня открытый сохраненный раннее документ - бланк.
Его заполняют (данные о человеке в формы) потом жмут на кнопку сохранить и сохраняют заполненный бланк под иенем которое задают переменные в туже папку что и бланк а бланк заурывают и удалют.

PoorJorik
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 5
Зарегистрирован: 01.11.2005 (Вт) 18:18

Сообщение PoorJorik » 07.11.2005 (Пн) 14:55

РАботает!
Сапаисбо UHM !!!
огромное

PoorJorik
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 5
Зарегистрирован: 01.11.2005 (Вт) 18:18

Сообщение PoorJorik » 07.11.2005 (Пн) 14:58

Теперь пожалуйста скажите как закрыть отрытый бланк и удалить его из текущей папки....

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 08.11.2005 (Вт) 10:40

Если ты использовал "Сохранить как", то у тебя книга с бланком уже закрыта, открытой остается только книга с новым именем.

Я при работе с файлами обычно использую FileSystemObject (FSO), хотя, кажется, есть и другие методы. Код примерно такой:

Код: Выделить всё
Set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile название_файла_с_путем


Советую читать справку по VBA - на такие вопросы там легко найти ответ.
Быть... или не быть. Вот. В чём вопрос?

PoorJorik
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 5
Зарегистрирован: 01.11.2005 (Вт) 18:18

Сообщение PoorJorik » 11.11.2005 (Пт) 13:43

Ну все, сенкс.
Все довольны все счастливы на фирме.=)
По идее я должен BEER но думаю сочтемся простым СПАСИБО.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 91

    TopList  
cron