Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Вывод в Word (SaveAs)  [new]
miv32
Member

Откуда:
Сообщений: 306
Добрый день!

Создаю документ на основании шаблона.

	thisform.loWord = CREATEOBJECT('Word.Application')
	oDoc=thisform.loWord.Documents.Add(FULLPATH(lcNameShab))


В поля документа попадают данные из базы данных. Документ потом редактируется.

При "Сохранить как..." документа хочу в диалоговом окне получить <имя файла (12345)>

Решается

 oDoc.SaveAs(<имя файла (12345))


Но вот беда - в диалоговое окно нужное имя попадает, но при этом файл УЖЕ создается на диске по пути, прописанном в Word
по умолчанию. А он мне там совершенно не нужен.

Как из шаблона сразу создавать файл с нужным мне именем или может есть свойство. в котором имя файла в создаваемом мной объекте Word задается по умолчанию?
19 фев 16, 17:07    [18842341]     Ответить | Цитировать Сообщить модератору
 Re: Вывод в Word (SaveAs)  [new]
правильный проходящий.
Guest
miv32
Решается

 oDoc.SaveAs(<имя файла (12345))


Но вот беда - в диалоговое окно нужное имя попадает, но при этом файл УЖЕ создается на диске по пути, прописанном в Word
по умолчанию. А он мне там совершенно не нужен.

Как из шаблона сразу создавать файл с нужным мне именем или может есть свойство. в котором имя файла в создаваемом мной объекте Word задается по умолчанию?
Детсад, штаны на лямках... А кто-то запрещает имя файла указывать полностью, вместе с полным путём?
19 фев 16, 17:43    [18842569]     Ответить | Цитировать Сообщить модератору
 Re: Вывод в Word (SaveAs)  [new]
miv32
Member

Откуда:
Сообщений: 306
Исходный шаблон lcNameShab = 'qqqqq.docx'. Он один для всех юзеров.
Юзеры работают с базой. У каждой записи свой ID-шник.
В каждой записи естественно свой набор данных.
Надо распечатать документ. Но в документе приходится что-то править.

Через .Add(FULLPATH(lcNameShab)) открываем.
Что-то в нем правим.

Надо чтобы в диалоговом окне, которое предлагает ворд при Сохранить как... было qqqqq (ID-шник).
Т.е. надо чтобы этот (ID-шник) уже предлагался в имени файла. Как так сделать?

Один юзер сам выбирает папку \1000\ и правит имя на ему нужное не меняя значение в скобках.
Другой юзер сам выбирает папку \2000\ и правит имя на ему нужное не меняя значение в скобках.

Если использовать SaveAs("имя"), собирая "имя" через конкатенацию 'qqqqq (' + transform(ID) + ')'
то все работает, но как я сказал ранее - валится мусор вида qqqqq (ID-шник).docx в папку ворда по умолчанию,
который создает SaveAs.
19 фев 16, 19:40    [18842971]     Ответить | Цитировать Сообщить модератору
 Re: Вывод в Word (SaveAs)  [new]
правильный проходящий.
Guest
miv32
Если использовать SaveAs("имя"), собирая "имя" через конкатенацию 'qqqqq (' + transform(ID) + ')'
то все работает, но как я сказал ранее - валится мусор вида qqqqq (ID-шник).docx в папку ворда по умолчанию,
который создает SaveAs.
Какая еще "папка ворда по умолчанию"? Что мешает сочинить имя фала и спросить паку для сохранения ДО вывода в ворд и подсунуть ворду в SaveAs() ПОЛНОЕ имя с путём?
20 фев 16, 14:01    [18846005]     Ответить | Цитировать Сообщить модератору
 Re: Вывод в Word (SaveAs)  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Если поискать на просторах интернета (вопрос ОЧЕНЬ старый и часто задавался), то предлагаются два решения:

1. Перехватываешь вызов SaveAs в самом Excel и подсовываешь ему сформированное имя файла, как имя по умолчанию. Но это надо писать макрос Excel. Как это делается, легко найдешь в поисковиках

2. Формируешь шаблон с нужным именем и уже его открываешь

* Формирую шаблон с нужным именем
COPY FILE "Исходный шаблон" TO "Шаблон с нужным именем"

thisform.loWord = CREATEOBJECT('Word.Application')
oDoc=thisform.loWord.Documents.Add("Шаблон с нужным именем")

* Удаляю уже не нужный шаблон
DELETE FILE "Шаблон с нужным именем"


Единственный недостаток, это дополнительная цифра 1 в конце имени, присваиваемая Excel автоматически, как номер версии файла
20 фев 16, 14:21    [18846131]     Ответить | Цитировать Сообщить модератору
 Re: Вывод в Word (SaveAs)  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Да, перепутал Word и Excel. Но, думаю, в данном случае это без разницы
20 фев 16, 14:24    [18846153]     Ответить | Цитировать Сообщить модератору
 Re: Вывод в Word (SaveAs)  [new]
miv32
Member

Откуда:
Сообщений: 306
Вариант с удалением ненужного файла был очевиден, но хотелось добраться до переменной.
Ок, спасибо.
20 фев 16, 14:55    [18846343]     Ответить | Цитировать Сообщить модератору
 Re: Вывод в Word (SaveAs)  [new]
miv32
Member

Откуда:
Сообщений: 306
Теперь другая беда
Во первых:

oDoc=thisform.loWord.Documents.Add("Шаблон с нужным именем")


Не работает. Создает не "Шаблон с нужным именем" (у меня Документ1)

Заменил на

oDoc=thisform.loWord.Documents.Open("Шаблон с нужным именем")


Это работает. Сформировал документ, при Сохранить как... предложил нужное мне имя.
Сохраняю, допустим в c:\1

Формирую новый документ, но Word для сохранения опять предлагает папку, где лежит "Шаблон с нужным именем",
а не c:\1 игнорируя свои же собственные настройки.

Беда...
20 фев 16, 18:06    [18847226]     Ответить | Цитировать Сообщить модератору
 Re: Вывод в Word (SaveAs)  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
На всякий случай уточню. Под термином "шаблон" я понимаю файл с расширением XLT или XLTX. Для их получения надо при использовании SaveAs задать тип файла "Шаблон Excel (*.xltx)"

Если Вы используете файлы с расширением XLS или XLSX, то это НЕ шаблоны в терминах Excel. Это обычные рабочие книги Excel. И для них действуют немного другие правила. Чем и объясняется "глюк" использования Add()

Насколько я понимаю, однажды выбранный путь для сохранения файла будет сохранен в рамках одной "сессии" Excel. Т.е. до тех пор, пока экземпляр Excel не будет закрыт. Обратите внимание, не файл (рабочая книга), а сам экземпляр Excel
24 фев 16, 18:22    [18859003]     Ответить | Цитировать Сообщить модератору
 Re: Вывод в Word (SaveAs)  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Опять сбился на Excel

Для Word шаблон имеет расширение DOT или DOTX, в отличие от документов с расширением DOC или DOCX
24 фев 16, 18:30    [18859045]     Ответить | Цитировать Сообщить модератору
 Re: Вывод в Word (SaveAs)  [new]
miv32
Member

Откуда:
Сообщений: 306
Оговорочки по Фрейду. :)

Пожалуй да, не совсем шаблон в терминологии Word.
Под шаблоном я подразумеваю заготовку формата *.docx в котором набран некий текст и есть
несколько полей, вставленных через "Разработчик", в которые процедурой я загоняю данные из базы.

Таких заготовок несколько в выпадающем меню.

В принципе при использовании SaveAs скапливающийся "мусор" ложиться в папку по умолчанию, которая
прописана в настройках Ворда. Народ потом чистит периодически. Но зато запоминается своя папка, куда юзер
сохраняет уже скорректированный документ.

Но вот с COPY - увы... "Мусора" нет, но и каждый раз выбирать из каталога нужный путь, да он еще по сети...
Вижу как вариант запоминать путь к папке где-нибудь. (в свойстве, переменной, базе)
24 фев 16, 19:58    [18859365]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить