powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Новая книга Excel с произвольным именем
17 сообщений из 17, страница 1 из 1
Новая книга Excel с произвольным именем
    #35229161
XNut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть уже кто-нибудь научисля создавать новую книгу Excel с именем отличным от КнигаXX?
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35231687
XNut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тогда предлагаю такой вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Function NewBook(name As String) As Workbook
  Dim s As String, b As Workbook
  s = "c:\temp\" & name
  Set b = Workbooks.Add 'Создаём шаблон во временной папке
  b.SaveAs s
  b.Close
  Set NewBook = Workbooks.Add(s) 'Новая книга откроется с именем шаблона
End Function

Пример использования:
Код: plaintext
1.
2.
Sub test()
  NewBook "НовоеИмя"
End Sub
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35231753
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор: XNut
Тогда предлагаю такой вариант:

Function NewBook(name As String) As Workbook
Dim s As String, b As Workbook
s = "c:\temp\" & name ' кстати у меня нет такой папки ;-) а если и есть у
пользователя может не быть прав на запись в эту папкуа ещё в этой папке
может быть файл с таким именем Set b = Workbooks.Add ' здесь создаем в
памяти, и не шаблон, а просто пустую книгу
b.SaveAs s 'Создаём не шаблон, а просто пустую книгу во временной папке
'b.Close ' закрывать необязательно, это лишние затраты
Set NewBook = b 'Workbooks.Add(s) 'Новая книга откроется с именем
шаблонаSet b = Nothing
End Function
Пример использования:

Sub test()
NewBook "НовоеИмя"
End Sub

А для чего эти телодвижения?
Да и ещё объявлять переменную b As Workbook не обязательно, можно
воспользоватся именем функции. Минус функции в том, что она сохраняет что-то
на диск, проверок на успешность операции не производится и может привести к
печальным последствиям.
Вообщем 3 с большим минусом за такой код ;)

Ну и тема для чего все это нужно не раскрыта :D

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35232555
XNut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос

А для чего эти телодвижения?
Да и ещё объявлять переменную b As Workbook не обязательно, можно
воспользоватся именем функции. Минус функции в том, что она сохраняет что-то
на диск, проверок на успешность операции не производится и может привести к
печальным последствиям.
Вообщем 3 с большим минусом за такой код ;)

Ну и тема для чего все это нужно не раскрыта :D

Posted via ActualForum NNTP Server 1.4

"телодвижения" для того, чтобы сформированный отчет назывался "Отчет_за_январь_2008_XX", а не "книга1"

Использование имени функции как переменной считаю плохим стилем программирования

Конечно, что-то сохраняется. Если вы умеете, по другому задать имя новой книге, то поделитесь

И вообще, не вам меня оценивать, и пост не об этом
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35233121
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: XNut
> Игорь Горбонос
> А для чего эти телодвижения?
> Да и ещё объявлять переменную b As Workbook не обязательно,
> можно
> воспользоватся именем функции. Минус функции в том, что она
> сохраняет что-то
> на диск, проверок на успешность операции не производится и
> может привести к
> печальным последствиям.
> Вообщем 3 с большим минусом за такой код ;)
>
> Ну и тема для чего все это нужно не раскрыта :D
>
> "телодвижения" для того, чтобы сформированный отчет назывался
> "Отчет_за_январь_2008_XX", а не "книга1"

Здесь я исповедую несколько другой подход. Сначала делаю отчет в свежую
книгу или созданую из шаблона, а после того как отчет готов, тогда показываю
пользователю и на его усмотрение, сохранять или нет этот отчет и он
придумывает название. Тогда сохраненный сохраненный отчет, это уже на
совести пользователя, и если он начнет "разбрасывать" эти отчеты где попало
это вопрос к нему, а если эти отчеты начнет разбрасывать программа - это
вопрос ко мне, почему я разбрасываю конфиденциальную информацию. ;)
>
> Использование имени функции как переменной считаю плохим стилем
> программирования

Ты не можешь вернуть из функции результат действия не присвоив результат
имени функции. Параметры по ссылке в данном случае не рассматриваем. В связи
с этим получается что использование функций плохой стиль? :)
В своем коде ты делаешь лишние действия, большое количество лишних действий
по итогу сказываются на производительности. Это к плохому стилю
програмирования вообще.
>
> Конечно, что-то сохраняется. Если вы умеете, по другому задать имя
> новой книге, то поделитесь
По другому ни как. Но это и не моя проблема. Пользователю нужен отчет для
просто посмотреть цифры. И все! Он закрывает Ексель и у него никто ничего не
спрашивает и отчет с конфиденциальной информацией остается на диске, где его
может взять кто угодно.


> И вообще, не вам меня оценивать,
Прошу прощения за оценку! И все же обращать внимание на смайлики ;)

> и пост не об этом
Ты привел код, я его покритиковал со своей точки зрения. Привел тебе
несколько условий прикоторых код не выполнит то, ради чего он писался.

З.Ы. Ещё раз приношу свои извинения, если чем-то задел. Это мое мнение и я
постарался изложить его.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35233256
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XNutИ вообще, не вам меня оцениватьНам, нам. Раз уж выложили на всеобщее обозрение, оценивать будут все, кому не лень. А Игорь в основном прав.
XNutИспользование имени функции как переменной считаю плохим стилем программированияТо есть всем, кроме себя, любимого, вы отказываете в праве на оценку?

Можно ведь вообще ничем не пользоваться.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Function NewBook(name As String, Optional TempPath as String = "c:\temp\") As Workbook
  On Error Goto errh
  With Workbooks.Add 'Создаём шаблон во временной папке
      .SaveAs TempPath & name
      .Close
  End With
  Set NewBook = Workbooks.Add(TempPath & name) 'Новая книга откроется с именем шаблона
errh:
End Function
Или так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Function NewBook(name As String, Optional TempPath as String = "c:\temp\") As Workbook
Dim b As Workbook
  On Error Goto errh
  Set b = Workbooks.Add 'Создаём шаблон во временной папке
  b.SaveAs TempPath & name
  Set NewBook = b 'и зачем, спрашивается, ее закрывать?..
errh:
End Function
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35233477
XNut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если функцию F можно вызвать не указав аргументы, то вы уверены, что при использовании ее имени не произойдет рекурсии? В этом можно быть уверенным только в операциях присвоения Let, Set. А что будет при F.Property , можно только гадать

Использование временой переменной на производительности не сказывается.
А использование With иногда (даже редко, например при использовании CurrentDb в MS Access) является ненадежным.
Еще почитайте примеры от Microsoft (Help, MSDN), там тоже все на 3 с минусом

И последнее. На диск сохраняется пустая книга! После чего на ее основе создается новая, которая и будет заполнятся "конфиденциальными" данными, но не будет сохраняться автоматически. Учитесь читать код
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35233606
AndreyArtemev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сказал бы спасибо. Указали на ошибки и привели более хороший пример
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35233631
XNut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Последний из приведенных примеров даже не относится к теме

И в чем ошибки?
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35233671
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: XNut
> Если функцию F можно вызвать не указав аргументы, то вы уверены, что
> при использовании ее имени не произойдет рекурсии? В этом можно быть
> уверенным только в операциях присвоения Let, Set. А что будет при
> F.Property, можно только гадать

Может в других языках это и приводит к таким последствиям, но за 7 лет
использования VB6 никогда не сталкивался с такой проблемой. Поэтому даже не
гадаю ;)

>
> Использование временой переменной на производительности не
> сказывается.

Ну, я не был бы таким категоричным, потому, что полно примеров как раз
ускорения работы при использовании временной переменной ;) например при
выброске отчета в Ексел для доступа к ячейке каждый раз писать не:
Код: plaintext
1.
2.
for i =  1  to  65000 
    ExApp.Workbooks("Name").Sheets("Name").Cells(i, 1 ).value = i
next i
а
Код: plaintext
1.
2.
3.
4.
Dim sh As WorkSheet
set sh = ExApp.Workbooks("Name").Sheets("Name")
for i =  1  to  65000 
    sh.Cells(i, 1 ).value = i
next i

> А использование With иногда (даже редко, например при использовании
> CurrentDb в MS Access) является ненадежным.

Здесь ничего не скажу, пока никаких проблем не было. И с акцесом вообще не
работал. :(
> Еще почитайте примеры от Microsoft (Help, MSDN), там тоже все на 3 с
> минусом

Примеры из Help и MSDN предназначены для объяснения принципа или особенности
работы чего-то и поэтому сделанны для чайника и для использования требуют
доводки напильником ;)
>
> И последнее. На диск сохраняется пустая книга!

Я хотел сказать, что в твоем случае, при закрытии Екселя с твоим отчетом
будет задан один вопрос: Книгу меняли! Сохранять или нет?
А в моем случае, даже если пользователь и нажмет Сохранять!( по ошибке или
из-за спешки ) появится ещё одно окно с просьбой ввести имя файла. И если и
после этого нажали Сохранить, то это уже полностью на совести пользователя.
Если он на два окна не среагировал как нужно, то встающие вопросы снова не
ко мне, а к пользователю.

> После чего на ее основе создается новая, которая и будет заполнятся
> "конфиденциальными" данными, но не будет сохраняться автоматически.

А вот здесь ты не прав! Книга может создаваться на основе шаблона. А в твоем
случае просто открывается СОХРАНЕННАЯ и ЗАКРЫТАЯ тобой книга. А это
расточительная операция. С точки зрения стиля программирования! Да она
пуста. Но книга уже сохранена! и все действия происходят в ФАЙЛОМ на диске,
если пользователя "выбъет" из Екселя при перезапуске Екселя он спросит Вы
работали с книгой и не сохранили её, Восстановить???
Есть ещё аргументы, но это уже специфика восстановления данных офисных
приложений :)

> Учитесь читать код
Вот в этом и проблема, что умею я читать код, и не только твой. А ты не
совсем понимаешь что будет делаться при выполнении твоего кода. Я пытаюсь
поделится с тобой своим опытом. Или ты думаешь что мне больше нечего делать?
Вообщем пословицу о том кто на чьих ошибках учится знаешь? :)

> Тема Ответить Сообщение
>

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35233684
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если функцию F можно вызвать не указав аргументы, то вы уверены, что при использовании ее имени не произойдет рекурсии? В этом можно быть уверенным только в операциях присвоения Let, Set. А что будет при F.Property, можно только гадатьЕсли бы да кабы, то во рту росли грибы. Нужно отдавать себе отчет, в том, что делаешь, и знать синтаксис не хуже интерпретатора, чтобы не гадать и не кодить ерунду.
А использование With иногда (даже редко, например при использовании CurrentDb в MS Access) является ненадежным.Это проблемы CurrentDb, а не With. Я вот натыкался на глюк For Each .. Next при работе с WMI. И что, теперь отказаться от For Each? Пока не увижу код без CurrentDb, подтверждающий ненадежность With, буду считать это чепухой. Потому что использую With очень активно и на его глюки ни разу в жизни не натыкался.
На диск сохраняется пустая книга! После чего на ее основе создается новая, которая и будет заполнятся "конфиденциальными" данными, но не будет сохраняться автоматически. Учитесь читать кодИ где же раньше было сказано, что нужно именно так, а не эдак? Учитесь писать ТЗ.
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35233739
XNut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
говоря "Использование временой переменной на производительности не сказывается" я имел ввиду, что это не ухудшает свойств программы, т.к. вы утвержадили, что это не оптимально

Игорь Горбонос
>
> И последнее. На диск сохраняется пустая книга!
> После чего на ее основе создается новая, которая и будет заполнятся
> "конфиденциальными" данными, но не будет сохраняться автоматически.

А вот здесь ты не прав! Книга может создаваться на основе шаблона. А в твоем
случае просто открывается СОХРАНЕННАЯ и ЗАКРЫТАЯ тобой книга. А это
расточительная операция. С точки зрения стиля программирования! Да она
пуста. Но книга уже сохранена! и все действия происходят в ФАЙЛОМ на диске,
если пользователя "выбъет" из Екселя при перезапуске Екселя он спросит Вы
работали с книгой и не сохранили её, Восстановить???
Есть ещё аргументы, но это уже специфика восстановления данных офисных
приложений :)


Это уже совсем смешно. Откройте Help, и почитайте о методе Add ! Вы путаете его с методом Open
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35233753
XNut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy
[quot ]На диск сохраняется пустая книга! После чего на ее основе создается новая, которая и будет заполнятся "конфиденциальными" данными, но не будет сохраняться автоматически. Учитесь читать кодИ где же раньше было сказано, что нужно именно так, а не эдак? Учитесь писать ТЗ.
Такова наша тема
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35233796
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XNutТакова наша темаНаша тема - Новая книга Excel с произвольным именем.
Код: plaintext
1.
2.
  Set b = Workbooks.Add
  b.SaveAs TempPath & name
  Set NewBook = b
Книга новая? Однозначно. Имя произвольное? Несомненно. Какое из условий не выполнено?
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35233799
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: XNut
> говоря "Использование временой переменной на производительности не
> сказывается" я имел ввиду, что это не ухудшает свойств программы, т.к. вы
> утвержадили, что это не оптимально

Ладно, набьёшь с моё шишек, поймешь :)

> Игорь Горбонос
>
> >
> > И последнее. На диск сохраняется пустая книга!
> > После чего на ее основе создается новая, которая и будет
> заполнятся
> > "конфиденциальными" данными, но не будет сохраняться
> автоматически.
>
> А вот здесь ты не прав! Книга может создаваться на основе
> шаблона. А в твоем
> случае просто открывается СОХРАНЕННАЯ и ЗАКРЫТАЯ тобой книга. А
> это
> расточительная операция. С точки зрения стиля программирования!
> Да она
> пуста. Но книга уже сохранена! и все действия происходят в
> ФАЙЛОМ на диске,
> если пользователя "выбъет" из Екселя при перезапуске Екселя он
> спросит Вы
> работали с книгой и не сохранили её, Восстановить???
> Есть ещё аргументы, но это уже специфика восстановления данных
> офисных
> приложений :)
>
> Это уже совсем смешно. Откройте Help, и почитайте о методе Add! Вы
> путаете его с методом Open

Открыл, почитал, провел следственный эксперимент! Признаю, был не прав :)
Тогда следующий "наезд" - почему не удаляешь сохраненный файл после создания
нужноименного? ;)

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35235763
XNut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос
Тогда следующий "наезд" - почему не удаляешь сохраненный файл после создания
нужноименного? ;)


Потому, что я предложил возможный способ решения моей задачи, и он меня устраивал
...
Рейтинг: 0 / 0
Новая книга Excel с произвольным именем
    #35235784
XNut
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сейчас я пользуюсь таким вариантом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Function NewBook(name As String) As Workbook
  Dim file As String, b As Workbook
  file = Environ("Temp") & "\" & name
  Set b = Workbooks.Add
  Application.DisplayAlerts = False
  b.SaveAs file
  Application.DisplayAlerts = True
  b.Close
  Set NewBook = Workbooks.Add(file)
End Function
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Новая книга Excel с произвольным именем
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]