Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - VB, закрытие открытого файла

Ответить
Настройки темы
VBA - VB, закрытие открытого файла

Пользователь


Сообщения: 61
Благодарности: 4

Профиль | Отправить PM | Цитировать


Мучаемся часть 2

Имеем открытие файла шаблона .dotx с заполнением bookmark'ов в нем заполненными в форме данными:

Код: Выделить весь код
        Dim wApp As Object = CreateObject("Word.Application")
        Dim wdocpath As String = IO.Path.Combine(System.Windows.Forms.Application.StartupPath, "data\pattern_01.dotx")
        FileCopy(wdocpath, Environ("temp") & "\pattern_temp.dotx")
        Dim wDoc As Object = wApp.Documents.Open(Environ("temp") & "\pattern_temp.dotx")
        wDoc.Bookmarks("company").Range.Text = CompanyBox.Text
        wApp.Visible = True
        wApp.ActiveDocument.SaveAs(Environ("userprofile") & "\Documents\" & CompanyBox.Text &  " Документ.docx")
Имена файлов присваиваются в зависимости от внесенного имени фирмы. Так вот, сгенерив на основе шаблона файл, лицезрим его, и ежели опять жамкнуть "ок" (запустить суб создания того же самого файла), то оно понятное дело не сохранит его с этим же самым именем, т.к. такой файл в данный момент открыт и занят. Закрывать файл по окончании нельзя - должен быть открыт.
Вопрос: как закрыть файл при попытке сохранить его (если имена будут совпадать?)

wApp.ActiveDocument.Close не спасает, ещё раз доказывая кривизну рук =(

Отправлено: 17:56, 21-02-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


meateron, очень непонятно изложено.

Отправлено: 19:09, 21-02-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 61
Благодарности: 4

Профиль | Отправить PM | Цитировать


ну.....окей, попроще:

1. имеется textbox, в него вносим значение "кошка", жамкаем на кнопку "ок"
2. создается(открывается из шаблона) файл ворда, сохраняется он "кошка.docx", файл кошка.dotx должен быть в конце открыт перед юзером для его печати/ознакомления
3. если ещё раз запустить создание документа не изменяя значение textbox'a, то откроется вордовский шаблон, не сохранив файл, т.к. он открыт в данный момент.

4(?) как закрыть документ, имя которого задано, учитывая значения в textbox, чтобы внести изменения (по факту в форме много полей для заполнения, имя присваивается пусть по одному полю) и сохранить его с таким же именем?

Отправлено: 23:05, 21-02-2013 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата meateron:
1. имеется textbox, »
Где имеется? На форме в каком-то другом документе?

Цитата meateron:
открывается из шаблона »
Из далее упомянутого шаблона «кошка.dotx»?

Цитата meateron:
файл кошка.dotx должен быть в конце открыт перед юзером для его печати/ознакомления »
Зачем? И откуда взялся открытый шаблон?

Или здесь описка и речь про документ «кошка.docx»?

Цитата meateron:
если ещё раз запустить создание документа не изменяя значение textbox'a, то откроется вордовский шаблон, не сохранив файл, т.к. он открыт в данный момент. »
Запретите создание нового документа до закрытия созданного (например, сделав недоступной кнопку для запуска процесса создания). Привяжитесь для этого к событию Quit созданного объекта Application.

Отправлено: 23:31, 21-02-2013 | #4


Пользователь


Сообщения: 61
Благодарности: 4

Профиль | Отправить PM | Цитировать


имеется на форме,
шаблон не кошка, шаблон пусть шаблон.dotx,
речь всё же уже про кошка.docx, описался %)

запретить создание документа до закрытия созданного.....иногда нужно меняя лишь один из textbox(который участвует в формировании имени файла), сделать несколько разных документов, что выполняется без закрытия получившихся файлов, открывая по новому экземпляру ворда.

VB умеет понимать имена открытых файлов? в autoit'e это всё решилось бы проверкой: а открыт ли файл с именем "$texbox1", если да, то завершить процесс и выполнить действие.

Отправлено: 08:07, 22-02-2013 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата meateron:
иногда нужно меняя лишь один из textbox(который участвует в формировании имени файла), сделать несколько разных документов, что выполняется без закрытия получившихся файлов, открывая по новому экземпляру ворда. »
Используйте коллекцию, следите за создаваемыми документами.

P.S. Создавать новые экземпляры Word'а необязательно.

Отправлено: 15:34, 22-02-2013 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - VB, закрытие открытого файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Доступ - [решено] 1006 0x03EE Том для открытого файла был изменен извне... qqwwaass Microsoft Windows 8 и 8.1 13 18-01-2013 13:29
Ошибка - Том для открытого файла был изменен извне snpru Microsoft Windows 2000/XP 1 05-05-2012 17:13
C/C++ - [решено] Открытие и закрытие файла на C++Builder 6. nip-tai Программирование и базы данных 5 05-05-2012 13:49
Ошибка "Том для открытого файла был изменен извне..." KEN1984 Программное обеспечение Windows 2 11-05-2008 19:57
Ошибка при открытии уже открытого файла Raistlin Программирование и базы данных 2 28-04-2007 14:13




 
Переход