Страница 1 из 2

Люди добрые помогите с VBA Exel

Добавлено: 30 янв 2009, 13:44
Dark
Есть документ с формой!!
При нажатии на кнопку CommandButton1 выполняется ряд действий и в конце файл должен предложить сохранение.
Использую функцию Application.Dialogs (xldialogSaveAs)
Все замечательно сохраняется, но хотелось бы чтобы в именя файла бралось из ячейки B2 на Листе1 (пусть называется "ВВОД"), а так же прописать путь для сохранения, например так "C:\Documents and Settings\1\Мои документы\1\" .
Пробывал простым сохранением, т.е. функцией Save, а не Save as. Все получается, но сохранение происходит сразу, а в большенстве случаем мне нужно иметь возможность изменение имени сохраняемого файла (ячейка B2) , т.к. в ячейку B2 вбивается еще сторонняя информация.
Привиду пример:
В ячейки B 2 имеем данные Иванов А.А.,Петров Б.В. нажимаем кнопку, высвечивается форма Сохранить как... в имени файла автоматически прописывается Иванов А.А.,Петров Б.В. и путь "C:\Documents and Settings\1\Мои документы\1\".
Я стираю ненужную инфу из названия файла предположим оставляю Иванов А.А. и дописываю путь.
Простите если вопрос достаточно глупый, просто мучился функцией ChDir, помогает только в совокупе c Save, a не с Save As

Если что, то вот код:
Private Sub CommandButton1_Click()
Unload Me
Sheets("1").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=2
Sheets("2").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Sheets("ВВОД").Select
Range("B2").Select
Application.Dialogs(xlDialogSaveAs).Show
End Sub

Заранее примногоблагодарен!!! :)

P.S.
Просто в save выглядит так
ActiveWorkbook.SaveAs Filename:=Range("B2").Value
как прописать для функции Save As то же самое не докумекал

Re: Люди добрые помогите с VBA Exel

Добавлено: 30 янв 2009, 17:07
Naeel Maqsudov

Код: Выделить всё

  With ActiveWorkbook
    fname = InputBox("Измените расположение файла или просто нажмите OK.", "Сохранение", .Path)
    If fname <> "" Then
      fname = fname & "\" & InputBox("Измените имя или просто нажмите OK.", "Сохранение", [b2])
      If fname <> "\" Then .SaveAs fname
    End If
  End With


Re: Люди добрые помогите с VBA Exel

Добавлено: 01 фев 2009, 12:05
Dark
Нет, немного не так,я имел в виду что при выполнении макроса должна высвечиваться форма Сохранить как..., и в ней в имени файла должны вставать данные из ячейки B2 А так жк прописываться частичный путь например я должен сохранить данный файл в C:\Documents and Settings\1\Мои документы\2009 год\, но так же еще и по месяцам. Я выполняю макрос он высвечивает мне путь C:\Documents and Settings\1\Мои документы\2009 год\, а месяц я уже выбираю сам из тех, что есть в папке 2009 год.
Надеюсь не очень запутанно!!

Re: Люди добрые помогите с VBA Exel

Добавлено: 02 фев 2009, 01:24
Naeel Maqsudov
Application.Dialogs(xlDialogSaveAs).Show [b2]

А вот с папками сложнее... надо подумать...

Re: Люди добрые помогите с VBA Exel

Добавлено: 02 фев 2009, 09:04
SAS888
А что, метод Application.Dialogs(xlDialogSaveAs) обязательно нужно использовать?
Можно, например, так:

Код: Выделить всё

Dim FPath As String, FName As String
    FPath = "C:\Documents and Settings\1\Мои документы\2009 год\"
    FName = [B2]
    FName = Application.GetSaveAsFilename(InitialFileName:=FPath & FName, _
        FileFilter:="Excel Files (*.xls), *.xls")
    If FName <> "" Then If FName <> "False" Then ActiveWorkbook.SaveAs Filename:=FName

Re: Люди добрые помогите с VBA Exel

Добавлено: 02 фев 2009, 17:42
Naeel Maqsudov
Да, можно по-всякому, но автору вопроса хочется чтобы появлялось стандартное окно сохранения, если я правильно понял...

Re: Люди добрые помогите с VBA Exel

Добавлено: 02 фев 2009, 20:13
Teslenko_EA
Здравствуйте Dark.
Если на форме разместить CommonDialog из библиотеки COMDLG32.OCX, с выбором каталога проблем не будет, реализовать можно так:

Код: Выделить всё

Private Sub CommandButton1_Click()
Dim s$
With CommonDialog1
    .Filename = Cells(4, 2)
    .InitDir = Cells(2, 2)
    .Filter = "*.xls|*.xls"
    .ShowSave
    s = .Filename
    ' Save ...
End With
End Sub
Евгений.

Re: Люди добрые помогите с VBA Exel

Добавлено: 03 фев 2009, 07:22
SAS888
автору вопроса хочется чтобы появлялось стандартное окно сохранения, если я правильно понял...
Метод GetSaveAsFilename, предложенный в посте №5 вызывает стандартное окно для сохранения. Не пойму, что не так?

Re: Люди добрые помогите с VBA Exel

Добавлено: 03 фев 2009, 09:58
Dark
Спасибо Naeel Maqsudov практически все сделал как хотел!! Единственное возник вопрос, использовал метод указанный вами в посте № 4 прописал Application.Dialogs(xlDialogSaveAs).Show [b2]. Решил подтянуть еще одну ячейку, почему-то не получилось.
Код был следующим: Application.Dialogs(xlDialogSaveAs).Show [b2], [f2]. В форме Сохранить как... в имени файла высвечивается пустое окно. Пробывал прописать Application.Dialogs(xlDialogSaveAs).Show [f2], получил набор цифр. Дело в том что ячейка f2 содержит дату, отличную от текущей, но в форму Сохранить как она почему-то не встает, тем более в связке с ячейкой B2. Подскажите пожалуйста в чем проблемма??

Re: Люди добрые помогите с VBA Exel

Добавлено: 03 фев 2009, 13:27
Dark
Вот ссылка на то что я хочу получить http://www.rapidshare.ru/913701, только еще один вопрос при использовании функции Application.Dialogs(xlDialogSaveAs).Show [b2] в форме сохранить как... имя файла высвечивается в ковычках от них можно как-то избавиться?И сохранение должно начинаться не с Рабочего стола, а с Моих документов\.....\.....
Надеюсь так будет нагляднее.
Заранее благодарю всех за помощь!