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

Программирование на Visual Basic for Applications
Влад
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 04.09.2002 (Ср) 9:09
Откуда: Russia

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

Сообщение Влад » 16.04.2004 (Пт) 9:52

Добрый день всем!
Подскажите, как создать книгу с заданным именем.
Более конкретно - формируются отчеты за выбранные дни как отдельные книги, которые должны иметь разные имена (в которые включена дата). Какие из них сохранять как файлы, выбирает пользователь (такое требование), то есть Workbooks.open использовать не получается, так как создаются файлы на диске.
По Workbooks.Add (1) создаются книги с именем "Книга1","Книга2",...
При обходном варианте - временное создание файла-шаблона с произвольным именем и потом удалением этого шаблона

fname = "yyyy-mm-dd.xls"
Open fname For Random Access Read Write As #1
Close #1
Workbooks.Add fname
Kill fname

книга открывается с требуемым именем, но почему-то только для чтения (свойство .ReadOnly=True), а это свойство изменить нельзя.
При использовании как шаблона реальных файлов Excel - картина аналогичная, доступ к вновь открытой книге только по чтению.

Заранее благодарен за помощь.

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

Сообщение GSerg » 16.04.2004 (Пт) 10:03

Workbooks.Add.Windows(1).Caption = "yyyy-mm-dd.xls"
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Влад
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 04.09.2002 (Ср) 9:09
Откуда: Russia

Сообщение Влад » 16.04.2004 (Пт) 10:43

Спасибо!
Все в соответствии с примечанием, логотипом (не знаю, как назвать) Gserg-а:
"Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас"

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

Сообщение GSerg » 16.04.2004 (Пт) 10:48

Логотип :) Супер :)
Подпись это, она же сигнатура :wink:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Влад
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 04.09.2002 (Ср) 9:09
Откуда: Russia

Сообщение Влад » 16.04.2004 (Пт) 15:29

Sorry, оказалось, что это не все.
При попытке сохранения книги с установленным по
Workbooks.Add(1).Windows(1).Caption = "yyyy-mm-dd.xls"
оказывается, что она имеет имя "ЛистNN"
WorkBooks(i).Name="ЛистNN"
WorkBooks(i).FullName="ЛистNN"
а эти свойства Read Only и не изменяются.
Что можно сделать здесь?

Grerg-у. Насчет сигнатуры получилось, конечно, еще то.
Что поделать, эклер проклятый замучил, как у той бабки, которая пыталась купить два склероза.

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

Сообщение GSerg » 17.04.2004 (Сб) 6:45

Что сделать, что сделать - скушать эклер, что же ещё! :)
Код: Выделить всё
Sub sdfhsg()
  With Workbooks.Add
    .Windows(1).Caption = "yyyy-mm-dd.xls"
    .SaveAs "c:\windows\рабочий стол\" + .Windows(1).Caption
  End With
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Влад
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 04.09.2002 (Ср) 9:09
Откуда: Russia

Сообщение Влад » 19.04.2004 (Пн) 13:32

Спасибо, Gserg, но это несколько не то. Поставлено требование - формируются отчеты за выбранные дни как отдельные книги, которые должны иметь разные имена (в которые включена дата). Какие из них сохранять как файлы, выбирает пользователь, то есть надо установить имя книги без сохранения на диске.
Возможно ли это?
И еще один вопрос - пользователь должен иметь возможность создать, посмотреть и выбрать сгенерированные отчеты, что не получается при открытой форме. Это, пожалуй, отдельная тема.

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

Сообщение GSerg » 20.04.2004 (Вт) 9:32

Ну так это :) Типа того :) Я об этом как раз.
При создании книги пишешь ей название в caption. Но не сохраняешь. А если нужно сохранить, то имя для файла берёшь из caption.
Я просто две команды рядом дал.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Влад
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 04.09.2002 (Ср) 9:09
Откуда: Russia

Сообщение Влад » 21.04.2004 (Ср) 7:58

Gserg-y. Благодарю за внимание к теме, но это к сожалению, не :? Типа того :?.
Вот например, пользователь получил несколько отчетов за выбранные дни и ЗАКРЫЛ форму и книгу с формой (на что имеет полное право - результат-то уже получен). После этого посмотрел отчеты и решил, что надо сохранить вот такие, и что он увидит в имени файла при сохранении? - что-то вида "ЛистN"?
Форма уже не работает, книга с ней закрыта, так что saveAs здесь не проходит.

уырекун
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 04.05.2015 (Пн) 11:40

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

Сообщение уырекун » 04.05.2015 (Пн) 11:47

подниму тему, интересует как изменить имя файла в диалоге сохранения новой книги

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

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

Сообщение pronto » 04.05.2015 (Пн) 16:41

Код: Выделить всё
Application.Dialogs(xlDialogSaveAs).Show "Нужное_имя_при_сохранении.xls"

Есть константы для всех встроенных диалогов. Для каждого диалога свой набор аргументов. Если есть справка, то это находится в разделе
Microsoft Excel Visual Basic Reference > Collections > Dialogs Collection > ссылка Built-in Dialog Box Argument Lists
O, sancta simplicitas!

уырекун
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 04.05.2015 (Пн) 11:40

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

Сообщение уырекун » 04.05.2015 (Пн) 17:29

pronto писал(а):
Код: Выделить всё
Application.Dialogs(xlDialogSaveAs).Show "Нужное_имя_при_сохранении.xls"

Есть константы для всех встроенных диалогов. Для каждого диалога свой набор аргументов. Если есть справка, то это находится в разделе
Microsoft Excel Visual Basic Reference > Collections > Dialogs Collection > ссылка Built-in Dialog Box Argument Lists


Ваш код вызывает диалог, а можно ли программно задать это "имя файла", поясню, я программно создаю новую книгу, пользователь жмет в ней сохранить и уже в этом диалоге вместо "книга1" должно быть "Нужное_имя_при_сохранении"

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

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

Сообщение alibek » 04.05.2015 (Пн) 17:54

Задай имя книге.
Оно будет использоваться в качестве имени файла при первом сохранении.
Lasciate ogni speranza, voi ch'entrate.

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

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

Сообщение pronto » 04.05.2015 (Пн) 19:25

Во-первых, можно на «ты»... А ещё можно в книгу добавить событие _BeforeSave
Код: Выделить всё
Private Sub WB_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
   Cancel = True
   Application.FileDialog(msoFileDialogSaveAs).InitialFileName = "Нужное_имя.xls"
   Application.FileDialog(msoFileDialogSaveAs).Show
End Sub


PS: 2 alibek Как? Можно пример?
PPS: Забыл написать, что в секции (General) (Declarations) модуля «ЭтаКнига» нужно прописать Private WithEvents WB As Workbook, в любом месте создать новую книгу Set WB = Application.Workbooks.Add
O, sancta simplicitas!

уырекун
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 04.05.2015 (Пн) 11:40

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

Сообщение уырекун » 05.05.2015 (Вт) 9:42

alibek писал(а):Задай имя книге.
Оно будет использоваться в качестве имени файла при первом сохранении.


Где задается имя книге?

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

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

Сообщение alibek » 05.05.2015 (Вт) 9:55

Похоже перепутал с чем-то другим, свойство Name только для чтения.
В таком случае лучше использовать InitialFileName, если версия офиса позволяет.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в VBA

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

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

    TopList