|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
Задача такая, нужно прописать в новый документ экселя путь к файлу, куда документ должен быть сохранён, но не сохранять его. Моя программа формирует отчёт в файле экселя, и нужно упростить пользователю процесс его сохранения, т.е. убрать процесс длительного ввода имени файла. Например, надо, чтобы файл был сохранён "c:\ddd,xls" я создаю документ экселя, куда-то записываю этот путь. Если документ закрыть, то ничего не будет, и файл не сохранится, если документ сохранить, то он сохранится под именем "c:\ddd,xls" Подскажите куда нужно прописать путь к файлу и имя файла? К сожалению, имею только общие представления об АПИ экселя... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2013, 22:12 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
макс_гость, Лучшее, что могу предложить сделать вот так: Код: vbnet 1.
Но имя файлы так не задать. Чтобы еще и имя файла поменять, можно либо создать код в excel при помощи VBE, либо создать template с аналогичным кодом. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 00:19 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
lbppbмакс_гость, Лучшее, что могу предложить сделать вот так: Код: vbnet 1.
Но имя файлы так не задать. Чтобы еще и имя файла поменять, можно либо создать код в excel при помощи VBE, либо создать template с аналогичным кодом. Т.е. это будет что-то типа в документе будет кнопка "Сохранить", по нажатию на которую документ сохраниться в место, которое я из своей программы запишу в какую-либо ячейку документа? Или можно перехватить само сохранение (ctrl+s) и подставить опять же путь к файлу, который я могу положить в какую-либо ячейку? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 12:56 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
max_alusТ.е. это будет что-то типа в документе будет кнопка "Сохранить", по нажатию на которую документ сохраниться в место, которое я из своей программы запишу в какую-либо ячейку документа? Или можно перехватить само сохранение (ctrl+s) и подставить опять же путь к файлу, который я могу положить в какую-либо ячейку? я имею ввиду, что при нажатии на "Сохранить" выполнится макрос, который сохранит, или макрос повесить на какое-либо события типа OnSave (если конечно такое там это возможно), который выполнится при возникновении этого события? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 13:02 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
max_alus, В качестве примера я написал вот такую процедурку: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Новый путь для сохранения вы задаете при создании вашего отчета в Excel. Когда пользователь нажимает на Сохранить или Сохранить как, то путь по умолчанию тот, что вы указали при создании. Если же нужно, чтобы при этом и имя файла задавалось свое, то как я уже указал раньше, потребуется либо создать код в самом Excel отчете при помощи VBE при его создании, либо создать Excel template/add-in с аналогичным кодом. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 13:36 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
Спасибо огромное! Есть непонятный момент - кто должен скрипт запускать? Пользователь или он запустится автоматом при каком-то событии? В данный момент не могу проверить ничего, смогу только завтра. Возможно, проблемы сразу уйдут. lbppbmax_alus, В качестве примера я написал вот такую процедурку: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Новый путь для сохранения вы задаете при создании вашего отчета в Excel. Когда пользователь нажимает на Сохранить или Сохранить как, то путь по умолчанию тот, что вы указали при создании. Если же нужно, чтобы при этом и имя файла задавалось свое, то как я уже указал раньше, потребуется либо создать код в самом Excel отчете при помощи VBE при его создании, либо создать Excel template/add-in с аналогичным кодом. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:13 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
max_alusСпасибо огромное! Есть непонятный момент - кто должен скрипт запускать? Пользователь или он запустится автоматом при каком-то событии? В данный момент не могу проверить ничего, смогу только завтра. Возможно, проблемы сразу уйдут. lbppbmax_alus, В качестве примера я написал вот такую процедурку: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Новый путь для сохранения вы задаете при создании вашего отчета в Excel. Когда пользователь нажимает на Сохранить или Сохранить как, то путь по умолчанию тот, что вы указали при создании. Если же нужно, чтобы при этом и имя файла задавалось свое, то как я уже указал раньше, потребуется либо создать код в самом Excel отчете при помощи VBE при его создании, либо создать Excel template/add-in с аналогичным кодом. Я же написал, что путь задаете при создании отчета. Каким образом вы создаете отчет? Какая программа его создает? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:20 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
lbppb, Про путь я понял, сейчас меня интересует имя файла. Я должен написать скрипт, который при сохранении файла перехватит сохранение и сохранит под нужным мне именем или это будет отдельная кнопка в документе, которая вызывает скрипт сохранения и которую пользователь должен будет нажать? Т.е. меня в данный момент интересует общий вопрос. Программа моя, написанная на с++. Она работает с экселем через КОМ, т.е. что-то типа: Код: plaintext 1. 2.
Но по идее, это не важно. Файл экселя создаётся на основе шаблона, который я могу сделать как мне нужно. Т.е. сейчас я хочу понять как мне делать, а делать я буду на следующей неделе. Но в принципе, даже установка каталога сохранения уже жизнь упростит. Но хотелось бы и имя файла задать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:31 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
max_aluslbppb, Про путь я понял, сейчас меня интересует имя файла. Я должен написать скрипт, который при сохранении файла перехватит сохранение и сохранит под нужным мне именем или это будет отдельная кнопка в документе, которая вызывает скрипт сохранения и которую пользователь должен будет нажать? Т.е. меня в данный момент интересует общий вопрос. Программа моя, написанная на с++. Она работает с экселем через КОМ, т.е. что-то типа: Код: plaintext 1. 2.
Но по идее, это не важно. Файл экселя создаётся на основе шаблона, который я могу сделать как мне нужно. Т.е. сейчас я хочу понять как мне делать, а делать я буду на следующей неделе. Но в принципе, даже установка каталога сохранения уже жизнь упростит. Но хотелось бы и имя файла задать. Тогда проще всего при создании отчета создать в нем код и повесить его на событие before_save, который и будет перехватывать Save As. Там уже можно будет и имя файла и путь и вообще свое диалоговое окно, но это естесственно потребует разрешения на использование макросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:40 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
lbppbТогда проще всего при создании отчета создать в нем код и повесить его на событие before_save, который и будет перехватывать Save As. Там уже можно будет и имя файла и путь и вообще свое диалоговое окно, но это естесственно потребует разрешения на использование макросов. Теперь понял. Сделать можно только с помощью макроса. Как вариант, перехватить событие before_save. Разрешение на использование скриптов будет. Спасибо ещё раз!:) Удачи ВАМ! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.02.2013, 14:45 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
Написал скрипт обрабатывающий событие BeforeSave. Всё работает так: Моя программа открывает шаблон, делает свои дела с ним, записывает в ячейку А1 на странице config__for__file_name требуемый полный путь к файлу. При выборе пользователем "Сохранить", возникает событие BeforeSave и запускается мой скрипт, который открывает диалог "сохранить как", с именем файла, в который нужно сохранить данные. Если данные сохранены, т.е. переменная Path не пуста, этот диалог не открывается. Подскажите плс, я всё правильно сделал? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 02:19 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
max_alus MsgBox prompt:="Îøèáêà ñîõðàíåíèÿ ôàéëà: " & EnteredFileName, Buttons:=vbCritical [/src] Странно как-то вставилось. Там было написано "Ошибка сохранения файла" и выведено имя файла. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 02:23 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
max_alus Написал скрипт обрабатывающий событие BeforeSave. Всё работает так: Моя программа открывает шаблон, делает свои дела с ним, записывает в ячейку А1 на странице config__for__file_name требуемый полный путь к файлу. При выборе пользователем "Сохранить", возникает событие BeforeSave и запускается мой скрипт, который открывает диалог "сохранить как", с именем файла, в который нужно сохранить данные. Если данные сохранены, т.е. переменная Path не пуста, этот диалог не открывается. Подскажите плс, я всё правильно сделал? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Ну если все работает как и задумывалось, то правильно, а если нет, то соответственно нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 15:09 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
lbppbНу если все работает как и задумывалось, то правильно, а если нет, то соответственно нет. Вопрос спорный:) Оно может в одном случае работать, в другом нет. Вот засаду увидел, что если по какой-либо причине будет глюк сохранением по .SaveAs, допустим не понравится расширение и т.п., то никак сохраниться не получится, т.к. из обработчика ошибок выход всегда с установкой "cancel". Наверное, в обработчик ошибки, нужно добавить что-то типа "Хотите вызвать диалог сохранения по умолчанию?". Но это нужно подумать. В основном всё работает. Вылезало сообщение про "не могу сохранить файл с макросом в книге без макросов" пришлось поменять тип файлов на xlsm, ещё вылезало "пересчёт формул в новой версии книги" пришлось перейти на формат новой версии. Но в целом всё работает именно как хотелось. Жаль, что это именно макросом делается. В принципе, я вычитал, что имя файла по умолчанию берётся из Workbook.Name, т.е. теоретически, можно было бы это нэйм менять, и устанавливать имя каталога, как вы предложили. Но мне не понравилось, что при этом меняется имя каталога по умолчанию для всех файлов экселя. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 16:36 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
max_alus, Ну это уже все отладка. Глюки почти всегда вылезают, все зависит от степени тестирования. Если я правильно помню из справки, то предложенным мною способом имя каталога меняется для данного Excel приложения на данную сессию. На счет Workbook.Name, очень хотелось бы верить. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 18:50 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
lbppbmax_alus, Ну это уже все отладка. Глюки почти всегда вылезают, все зависит от степени тестирования. Если я правильно помню из справки, то предложенным мною способом имя каталога меняется для данного Excel приложения на данную сессию. На счет Workbook.Name, очень хотелось бы верить. Ну если на данную сессию, то это хорошо:) Но у меня получилось, что поменялось вообще. Хотя сейчас уже думаю, "А вдруг я ошибаюсь", т.к. конечно лучше обойтись без макроса...) Попробую на днях. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 20:54 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
Попробовал... 1. DefaultFilePath - сохраняется не только в этой сесии, а вообще для всех документов. 2. Name - r/o) Вот...) ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2013, 22:15 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
max_alusПопробовал... 1. DefaultFilePath - сохраняется не только в этой сесии, а вообще для всех документов. 2. Name - r/o) Вот...) Печально. Тогда лучшее, что могу предложить: Код: vbnet 1.
Но пользователю придется каждый раз отказываться от сохранения. Либо возиться с WinAPI, чтобы выловить открытие окна... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 01:48 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
Так и сделано в макросе, по сути вопрос решён. Но вот бы отказаться от макроса...) Макрос не сильно мешает, просто дополнительные действия в случае обновления и нестандартное поведение приложения, т.е. как бы не не совсем "прозрачно"). Есть мысль для всех отчётов (а их много), положить этот макрос в отдельную книгу с макросами а в шаблонах отчётов просто прописать вызов этого макроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 13:24 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
max_alusТак и сделано в макросе, по сути вопрос решён. Я как раз без макроса предлагаю. Событие сохранения вызывается при создании отчета, а потом WinAPI вылавливает открытие окна и не показывая его, нажимает Esc. Если вы в C++ пишете, то это не должно быть так уж сложно. max_alusЕсть мысль для всех отчётов (а их много), положить этот макрос в отдельную книгу с макросами а в шаблонах отчётов просто прописать вызов этого макроса. Тогда уж лучше add-in. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 17:13 |
|
Excel установка имени файла без сохранеия самого файла
|
|||
---|---|---|---|
#18+
lbppbЯ как раз без макроса предлагаю. Событие сохранения вызывается при создании отчета, а потом WinAPI вылавливает открытие окна и не показывая его, нажимает Esc. Если вы в C++ пишете, то это не должно быть так уж сложно. Я могу сразу сохранить файл с заданным именем через ОЛЕ, но нужно, чтобы сохранялось только когда пользователь нажал "сохранить". И я не понял как можно обойтись тут без макроса. Проблем с отловом окна нет, но я не понял самой идеи:( Вообще, чтобы там ни было, ловить открытие окна мне не хотелось бы, т.к. это всё же несколько узкое решение. Хотя, конечно я вопрос не изучал. lbppbчше add-in. Не знал, что такое бывает. Изучу вопрос. Пасип) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2013, 18:26 |
|
|
start [/forum/topic.php?fid=61&msg=38151018&tid=2174987]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 333ms |
total: | 468ms |
0 / 0 |