Помогите создать форму в ВБА

Feist

Новичок
Не могу создать кнопку, чтобы при нажатии она делала save as странички в определенную папку с имененм из одного из полей экселя
 

Manfred

Активный пользователь
Не могу создать кнопку, чтобы при нажатии она делала save as странички в определенную папку с имененм из одного из полей экселя

Работа с элементом управления CommonDialog


Окно диалога Save As


Для вызова окна диалодгa Save As необходимо свойство CommonDialog1.Action установить в 2 или применить метод ShowSave. Но, прежде необходимо назначить ряд свойств.
Установить начальную директорию, которая будет открываться при вызове CommonDialog1 - а.

CommonDialog1.InitDir = "C:\My Documents"
Если не установить этого свойства, то по умолчанию будет открыватья директория, которую Вы использовали в последний раз.

Установить тип файлов, которые будут отображать диалог Save As. Для этого объявляем строковую переменную strFileType и присваиваем ей необходимые значения.

Dim strFileType As String

strFileType = "All Files (*.*)|*.*|"
strFileType = strFileType & " Word Document ( *.doc )|*.doc|"
strFileType = strFileType & " Text Files (*.txt)|*.txt|"

Затем свойству Filter, CommonDialog1, присваиваем значение переменной strFileType.

CommonDialog1.Filter = strFileType

Примечание. Не включайте пробелы до и после разделителей, иначе Вы получите не те файлы, которые указали.

Устанавливаем фильтр по умолчанию, выбрав для него значение Word Document.

CommonDialog1.FilterIndex = 2


При открытии окна диалога Save As в текстовом окне "Save As ", у Вас отобразится надпись Word Document (*.doc).
И наконец, отображаем окно диалога Save As.

CommonDialog1.Action = 2

или же

CommonDialog1.ShowSave

Естественно, раз Вы вызвали окно диалога Save As, то его надо использовать по назначению, т.е. ввести в текстовое окно File Name имя файла для записи. При этом введенное Вами имя файла присваивается свойству CommonDialog.FileName.

Зная имя файла Вы можете производить его запись соответствующими методами. Теперь необходимо, как и при окне диалога Open уменьшить возможности возникновения ошибок.
Для этого свойству Flags присваиваем необходимую константу.

cdlOFNOverwritePrompt - заставляет диалоговое окно Save As генерировать блок сообщений, если выбранный файл уже существует, пользователь должен подтвердить, что бы записать новый файл поверх старго.

На окне диалога Save As находится флажек для включения опции "Open as read only" . Да, да это не опечатка и по этому добавим знакомую константу, которая уберет его с панели окна диалога.

cdlOFNHideReadOnly - делает невидимым переключатель Read Only.

И теперь свойство Flags будет выглядеть следующим образом.

CommonDialog1.Flags = cdlOFNOverwritePrompt or cdlOFNHideReadOnly

Т.к. обычно окно диалога Save As используют с окном диалога Open, то значить у Вас свойство CommonDialog1.CancelError уже установленно в True и присутствует обработчик ошибок. Если этого нет, сделайте так, как описанно в окне диалога Open.

Теперь скомпануем все выше описанное в упорядоченный код:

Private Sub mnuSaveAs_Click()

'Объявляем строковую переменную для назначения типов файлов
Dim strFileType As String

'Если возникнет ошибка, т.е.пользователь нажал на клавишу Cancel,
'отправится к обработчику ошибки - ErrorHandler
On Error GoTo ErrorHandler

'Обеспечиваем генерацию ошибки
CommonDialog1.CancelError = True

'Инициализируем переменную strFileName
strFileType = "All Files (*.*)|*.*|"
strFileType = StrFileType & " Word Documents ( *.doc )| *.doc |"
strFileType = StrFileType & " Text Files (*.txt)|*.txt|"

'Присваиваем ее свойству Filter
CommonDialog1.Filter = strFileType

'Устанавливаем необходимый индекс
CommonDialog1.FilterIndex = 2

'Присваиваем начальную директорию свойству InitDir
CommonDialog1.InitDir = "C:\DOCUMENTS"

'Обеспечиваем защиту от неправильно введенного файла или директории, а аткже скрываем флажек Read Only
CommonDialog1.Flags = cdlOFNOverwritePrompt or cdlOFNHideReadOnly

'Вызываем диалог Save As
CommonDialog1.Action = 2 'Или же CommonDialog1.ShowSave

Exit Sub

'Обработка перехватываемой ошибки
If Err.Number = 32755 Then

Exit Sub

End If

End Sub

Теперь диалог Save As полностью готов к работе. Удачи
 
Сверху