Создание книги с заданным именем

Программирование на Visual Basic for Applications
Wasup!
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 120
Зарегистрирован: 21.06.2005 (Вт) 11:09

Создание книги с заданным именем

Сообщение Wasup! » 28.10.2005 (Пт) 16:24

Сабдж, в продолжение старой темы.

http://bbs.vbstreets.ru/viewtopic.php?t ... D%C8%C3%C8

В ней, к сожалению, так и нет четкого ответа: возможно ли создать книгу Excel с именем отличным от "Книга1"? Таким образом, чтобы при нажатии "файл/сохранить" в поле имя файла было не "Книга1.xls", а "NewName_ddmmyy.xls"

Такой метод:
Workbooks.Add.Windows(1).Caption = "NewName_ddmmyy.xls" просто изменяет заголовок окна, ничего не делая с именем файла

А при создании на основе шаблона
Workbooks.Add ("c:\template.xls")
имя файла тоже будет неправильным - template1.xls

Есть какое-то решение этого вопроса :?:

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Создание книги с заданным именем

Сообщение KL » 30.10.2005 (Вс) 0:38

Как насчет:

Workbooks.Add.SaveAs ("c:\temp\test.xls")
Привет,
KL

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 31.10.2005 (Пн) 8:37

Ему не надо сохранять, ему надо, чтобы при сохранении автоматически подставлялось указанное имя.
Помоему, никак. Я тоже так пытался, так и не нашел способа.
Lasciate ogni speranza, voi ch'entrate.

Ig
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 30.04.2005 (Сб) 12:37
Откуда: Far East

Сообщение Ig » 31.10.2005 (Пн) 10:19

Процедура вызова диалогового окна "Сохранить, как", где, "Имя файла": "It is Me" :wink: (.xls - по умолчанию)

Код: Выделить всё
Sub WrkbSave()
Dim objFlDlg As Object
Dim strFlNm As String

Set objFlDlg = Application.FileDialog(msoFileDialogSaveAs)
strFlNm = "It is Me" ' имя нашей книги
With objFlDlg
.Title = "Выберите папку для сохранения"
.FilterIndex = 1 ' расширение ".xls"
.InitialFileName = strFlNm ' стоит уже наше имя
If .Show = -1 Then
  strFlNm = .SelectedItems(1)
  ActiveWorkbook.SaveAs strFlNm
End If
End With
End Sub



Не оно?.. :roll:
"Нормальные герои всегда идут в обход..."

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.10.2005 (Пн) 13:34

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

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 01.11.2005 (Вт) 2:16

Теоретически можно конечно поместить след. код в модуле ThisWorkbook, но уж очень как-то через одно место...

Private Sub Workbook_BeforeSave( _
ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
Application.EnableEvents = False
SaveFile
Application.EnableEvents = True
End Sub

Sub SaveFile()
Dim strName As String
strName = "Моя Книга.xls"
fileSaveName = Application.GetSaveAsFilename( _
strName, "Excel Files (*.xls), *.xls")
If fileSaveName <> False Then ActiveWorkbook.SaveAs _
fileSaveName
End Sub
Привет,
KL

Ig
Обычный пользователь
Обычный пользователь
 
Сообщения: 73
Зарегистрирован: 30.04.2005 (Сб) 12:37
Откуда: Far East

Сообщение Ig » 01.11.2005 (Вт) 5:44

GSerg писал(а):И что, если пользователь кликнет Сохранить - вылезет?..


Если он кликнет просто: "Сохранить", - то ничего :wink: :)
"Нормальные герои всегда идут в обход..."

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 01.11.2005 (Вт) 15:27

Ig писал(а):
GSerg писал(а):Если он кликнет просто: "Сохранить", - то ничего :wink: :)


С кодом, который я привел выше, что бы он ни кликнул, при попытке сохранить вылезет примерно то, что ты предложил ранее (исключения: макросы отключены, Application.EnableEvents=False)
Привет,
KL


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32

    TopList