Модераторы: mihanik

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Где можно посмотреть ссылку на источник данных. Данные из Excel в Word. 
:(
    Опции темы
Валк
Дата 22.8.2006, 07:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.5.2006

Репутация: нет
Всего: нет



Есть некая книга Excel. Данные из неё переносятся в документ Word. Естественно в документе Word где-то расположена ссылка на книгу Excel. Где это находится? Можно ли прописать её путь не полностью (в формате C:\Documents\Papka1\...\kniga.xls), а таким образом, чтобы источник был расположен в одной папке с документом (папка должна иметь возможность миграции)?
PM MAIL WWW   Вверх
ИгнатьевАлексей
Дата 22.8.2006, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 369
Регистрация: 18.11.2005

Репутация: 2
Всего: 3



Цитата

Есть некая книга Excel. Данные из неё переносятся в документ Word. Естественно в документе Word где-то расположена ссылка на книгу Excel


Тут не совсем понятно. Идет экспорт данных программным путем или используются стандартные оффисные приемы?



--------------------
Vingrad - FOREVER !!! 

"Как вы яхту назовете - так она и поплывет!" 
 Капитан Врунгель 
PM MAIL   Вверх
Валк
Дата 22.8.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.5.2006

Репутация: нет
Всего: нет



ИгнатьевАлексей
Идет экспорт данных программным путем или используются стандартные оффисные приемы?
Наверное используются стандарные офисные приёмы. Т. е. в Word'е на панели инструментов "Слияние" давится кнопка "Открыть источник данных", затем этот источник выбирается.
Как можно в документе Word где-то прописать этот источник, при условии, что это всегда книга с одним и тем же названием и находится в одной папке с этим документом?
PM MAIL WWW   Вверх
Staruha
Дата 22.8.2006, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

Репутация: 13
Всего: 27



Там в Worde есть вставить таблицу xl.Вставляешь и потом работаешь как с xlем  в смысле пишешь формулы.


--------------------
Возмездие настигнет
PM MAIL   Вверх
Валк
Дата 23.8.2006, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.5.2006

Репутация: нет
Всего: нет



Staruha
Там в Worde есть вставить таблицу xl.Вставляешь и потом работаешь как с xlем  в смысле пишешь формулы.
Это не совсем то. Я не могу вставить таблицу Excel в документ Word, т. к. книга из которой берутся данные содержит проект посредством которого формируются эти данные.
PM MAIL WWW   Вверх
ИгнатьевАлексей
Дата 23.8.2006, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 369
Регистрация: 18.11.2005

Репутация: 2
Всего: 3



У меня тоже не получилось найти место, где сидит данный линк. Но обрати внимание, что при копирывании линкованого Вордовского документа линк сам не копируется! Боюсь без программирывания не обойтись! Похоже создатель этого интересного метода рассчитавал, что юзер-непрограммист создаст один документ Ворда, свяжет его с необходимой таблицей и будет счастлив! Но иу тебя , похоже, есть острая необходимость плодить такие документы со своими собственнымы Екселевскими таблицами линков! Правильно я понял?


--------------------
Vingrad - FOREVER !!! 

"Как вы яхту назовете - так она и поплывет!" 
 Капитан Врунгель 
PM MAIL   Вверх
Валк
Дата 23.8.2006, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.5.2006

Репутация: нет
Всего: нет



ИгнатьевАлексей
у тебя , похоже, есть острая необходимость плодить такие документы со своими собственнымы Екселевскими таблицами линков! Правильно я понял?
Если рассматривать ситуацию в целом, то она изначально такая:
Существует книга Excel в которую заносятся данные для расчёта страховых премий. Эти данные, как и результаты расчёта в дальнейшем требуются при составлении договора страхования (документ Word). Я подумал, что тупо менеджерам сидеть и "копи-пастить" и решил слегка это дело автоматизировать.
Для этого я создал шаблон "РасчётИпотека.xlt" аналогичный первоначальной книге, в нем создал проект посредством которого на отдельном листе книги формируются данные для договора страхования. Также я создал документ Word "Кредитный договор.doc" в котором посредством панели инструментов "Слияние", кнопка "Открыть источник данных" разместил ссылки на необходимые мне данные из получаемой посредством шаблона книги "РасчётИпотека1.xls".
Но т. к. договоров будет много и их надо как-то сортировать получается что эту "сладкую парочку" ("РасчётИпотека1.xls" и "Кредитный договор.doc") надо будет переместить в какую-то папку (имя папки заранее не известно).
Надо сделать так, чтобы документ "Кредитный договор.doc" не потерял связи со своей книгой "РасчётИпотека1.xls". Я хотел это сделать методом правки пути к книге "РасчётИпотека1.xls" (т. е. вместо C:\Documents\Papka1\...\РасчётИпотека1.xls просто прописать РасчётИпотека1.xls, чтобы "Кредитный договор.doc" обращался к РасчётИпотека1.xls, расположенному в этой же папке).
Если этот метод сделать нереально, то, пожалуйста, подскажите как мне сделать чтобы связь между "РасчётИпотека1.xls" и "Кредитный договор.doc" не терялась при перемещению их по разным папкам (возможно по разным дискам, а то и разным компьютерам).
PM MAIL WWW   Вверх
ИгнатьевАлексей
Дата 23.8.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 369
Регистрация: 18.11.2005

Репутация: 2
Всего: 3



Спасибо за обстоятельное описание твоей задачи!
В принципе, эту связь можно установить не вручную, а программно. Далее назначить установку данного линка по открытию Вордовского документа.
Цитата

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

Ты это программно делал, если да, то в VBA?


--------------------
Vingrad - FOREVER !!! 

"Как вы яхту назовете - так она и поплывет!" 
 Капитан Врунгель 
PM MAIL   Вверх
Валк
Дата 24.8.2006, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.5.2006

Репутация: нет
Всего: нет



ИгнатьевАлексей
Спасибо за обстоятельное описание твоей задачи!
Учитывая, что это важнее мне, чем тебе, то не за что user posted image

эту связь можно установить не вручную, а программно. Далее назначить установку данного линка по открытию Вордовского документа.
А как?

Ты это программно делал, если да, то в VBA?
Формирование данных происходит как програмно в VBA, так и при помощи формул Excel.
Вообще, на отдельном листе "Сводка данных" формируется таблица (хотя "таблица", немного громко сказано, в принципе, всего одна строка). Часть ячеек заполняется простыми ссылками, типа: =ВВОД!B12 (Лист "ВВОД" - лист ввода первичной информации), часть простейшими формулами: =ТЕКСТ(ВВОД!B13;"[$-FC19]«ДД» ММММ ГГГГ;@") (преобразование даты из вида 08/24/2006 в «24» августа 2006). другая часть формируется при помощи проекта VBA. Там запускается форма с текстовыми полями (в основном, Ф. И. О. и паспортные данные), которую менеджер заполняет и в конце давит кнопку "Сформировать договор". Введённые данные преобразуются и заносятся в таблицу на листе "Сводка данных".
Я пробовал делать также автоматический запуск "Кредитный договор.doc", чтобы все совсем красиво было, но что-то не получается smile

Маленькое дополнение, всё это должно работать в Microsoft Office 2000.
PM MAIL WWW   Вверх
ИгнатьевАлексей
Дата 24.8.2006, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 369
Регистрация: 18.11.2005

Репутация: 2
Всего: 3



Валк
Ну вот и чудненько!
Открой Ворд, включи ручную запись макроса, проделай ручное линкование, отключи ручную запись, открой и просмотри то, что получилось. Учти, что при ручной записи макросов, т.е. при автоматической генерации кода записывается много лишнего, т.е. то, что при обычном программирывании программером опускается(принимается значение по умолчанию). Скорее всего, в коде можно много выбросить - сам поймешь, а можно и так оставить. Тем не менее, это избавит тебя от изучения объектной модели Ворда, тем паче, что выполняешь ты свою задачу своеобразно и семплы найти трудно будет. 
Когда запишешь этот макрос, проверь его на выполнение, т.е. линкует ли он так, как ты вручную линкуешь.
Если получится (то можешь за пивком сбегать на радостях), и сам дальше не догадаешься что делать, то я помогу. Пиши.

И еще! Совсем не хочу тебя критиковать, потому что я сам непрофессиональный кодер, но тем не менее... Не усложняешь ли ты сам себе задачу используя инструмент рассылок? Ведь это придумано, как я понимаю, чисто для непрограммистов. Сам видишь - никакой гибкости, чуть в сторону - и тупик..... smile  Я бы сам программно создавал документ Ворда на базе темпелейта, редактировал его как надо и помещал куда мне надо.....и никакие линки меня бы не замарачивали....Я по работе решал подобные задачи, т.е. по генерации документов на основе Екселевских таблиц, но только сами документы были также Екселевскими. Но я уверен, объектная модель Ворда (с которой я вообще не сталкивался) позволит это.  Вот я не поленился, книжку открыл Гарнаева Андрея и сразу нашел инструмент "закладок" в Ворде, который как раз и предназначен для программного заполнения Вордовских документов. Так ты красивее все намного для своих любимых юзеров сделаешь, потомы что все в ТВОИХ руках будет, а не в руках парня из Майкрософта.   smile 

Это сообщение отредактировал(а) ИгнатьевАлексей - 24.8.2006, 08:56


--------------------
Vingrad - FOREVER !!! 

"Как вы яхту назовете - так она и поплывет!" 
 Капитан Врунгель 
PM MAIL   Вверх
Валк
Дата 24.8.2006, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.5.2006

Репутация: нет
Всего: нет



ИгнатьевАлексей
Открой Ворд, включи ручную запись макроса, проделай ручное линкование, отключи ручную запись, открой и просмотри то, что получилось.
Ты только не сердись и громко не смейся, я не знаю как сделать линкование в Microsoft Office 2000.
В Microsoft Office ХР я проделал все необходимые телодвижения и у меня получилось следующее:
Код
Sub Макрос1()
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        "F:\Valk\Ипотека\Расчёт и Договор\РасчётИпотека1.xls", ConfirmConversions _
        :=False, ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
        WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
        Connection:= _
        "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=F:\Valk\Ипотека\Расчёт и Договор\РасчётИпотека1.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password=" _
        , SQLStatement:="SELECT * FROM `'Сводка данных$'`", SQLStatement1:="", _
        SubType:=wdMergeSubTypeAccess
    ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
    WordBasic.MailMergeShadeFields
End Sub

Этот код я чуть-чуть переделал:
Код
Sub ИнтеграцияДанных()
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        "РасчётИпотека1.xls", ConfirmConversions _
        :=False, ReadOnly:=False, LinkToSource:=True, AddToRecentFiles:=False, _
        PasswordDocument:="", PasswordTemplate:="", WritePasswordDocument:="", _
        WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
        Connection:= _
        "Provider=Microsoft.Jet.OLEDB.4.0;Password="""";User ID=Admin;Data Source=РасчётИпотека1.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Database Password=" _
        , SQLStatement:="SELECT * FROM `'Сводка данных$'`", SQLStatement1:="", _
        SubType:=wdMergeSubTypeAccess
    ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
    WordBasic.MailMergeShadeFields
End Sub

Только тут сразу возникает несколько затыков:
1. Этот код, насколько я понимаю, надо разместить в Project (ДоговорСтрахования)/Microsoft Word Objects/ThisDocument, чтобы он стартовал при запуске документа.
2. "Название" этого кода не должно быть: "Sub ИнтеграцияДанных()". Название должно быть типа "Private Sub Open_Document" или какое-то иное (я не знаю какое, пишу просто по аналогии с Excel). Тогда точно этот код будет отрабатываться при открытии документа "ДоговорСтрахования.doc".
3. Если удалить начало пути размещения (F:\Valk\Ипотека\Расчёт и Договор\), то код будет искать книгу РасчётИпотека1.xls в папке по умолчанию (Мои документы). Это самые простые, на мой взгляд, грабли, т. к. путь, в принципе, вычисляем. Надо только каким-то образом суметь из источника данных "выдернуть" Ф. И. О. и создавать папку с таким же названием.
4. При попытке открыть документ в Microsoft Office 2000 у меня вылетает ошибка: "The macros in this project are disabled. Please refer to the online help or documentation of the host application to determine how to enable macros." Выходит, что код VBA для Microsoft Office 2000 другой, нежели чем код VBA для Microsoft Office ХР smile

Совсем не хочу тебя критиковать, потому что я сам непрофессиональный кодер, но тем не менее...
Я вообще к программированию отношения не имею. Я системный администратор. С VBA впервые столкнулся в мае этого года, так что не парься в эту тему, я широко принимаю любую критику, лишь бы делу подмога.

Не усложняешь ли ты сам себе задачу используя инструмент рассылок?
"Инструмент рассылок" - это, как я понял, то, что я называю "источник данных"?

Я бы сам программно создавал документ Ворда на базе темпелейта, редактировал его как надо и помещал куда мне надо.....и никакие линки меня бы не замарачивали....Я по работе решал подобные задачи, т.е. по генерации документов на основе Екселевских таблиц, но только сами документы были также Екселевскими. Но я уверен, объектная модель Ворда (с которой я вообще не сталкивался) позволит это.
Путей по решению задачи много и я уверен, что выбрал не самый оптимальный, а может и вовсе, самый неоптимальный. Просто те знания, которыми я обладаю, позволяют мне работать в каких-то узких рамках.
У меня была мысль создавать договор страхования прямо внутри книги Excel. Основным препятствием было то, что я не представляю как можно в Excel что-либо отфоматировать. Также я думал интегрировать в книгу лист Word, но мне это тоже показалось не реализуемо (по крайней мере мною).
Если ты знаешь и умеешь решить эту проблему (интеграция уже полученных мною данных в шаблон договора, всего 26 уникальных значений), то, пожалуйста, подскажи мне как это сделать, я попробую.
PM MAIL WWW   Вверх
ИгнатьевАлексей
Дата 24.8.2006, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 369
Регистрация: 18.11.2005

Репутация: 2
Всего: 3



Валк, давай так поступим! Дуй в книжный магазин или на книжный рынок. Купи замечательный литературный шедевр для новичков в VBA - Андрей Гарнаев "VBA". С помощью этой книженки ты сделаешь своих юзеров довольными по горло. На форуме всякие мелочи тебе не будут подсказывать каждый раз. И не жалей 400-500 р. на эту книжку(200-300 р. на рынке) - окупишь сполна! Кстати поищи - может и скачать где-нибудь можно, но лучше купи!
Возвращаясь к нашей задаче. Раз надо работать в 2000 Офисе, то забываем про  "источник данных". Без него лучше сделаем! Выбирай главный документ и пиши в нем программку. 
Цитата

Существует книга Excel в которую заносятся данные для расчёта страховых премий.

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

Dim fileString As String
fileString = ThisWorkbook.Path & "\" & "DDDDD.xls"   'получил путь к нужному файлу


По книге все поймешь как делать. Если нет, то подскажу разделы, где прочитать.


--------------------
Vingrad - FOREVER !!! 

"Как вы яхту назовете - так она и поплывет!" 
 Капитан Врунгель 
PM MAIL   Вверх
Валк
Дата 25.8.2006, 07:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 25.5.2006

Репутация: нет
Всего: нет



ИгнатьевАлексей
Купи замечательный литературный шедевр для новичков в VBA - Андрей Гарнаев "VBA". С помощью этой книженки ты сделаешь своих юзеров довольными по горло. На форуме всякие мелочи тебе не будут подсказывать каждый раз.
Спасибо, за подсказанную книгу. Мне руководительница обещала, что купит мне книжек на 1 000 (Одну тысячу рублей) как только я доделаю этот проект. Мне уже третью книжку подсказывают, будет что повыбирать.
Кстати, кажется у меня получилось запустить проект в Office 2000. Теперь надо только как-то кодом закидывать файлы шаблона расчёта и договора в отдельную папку. Ну да ладно, поищу в другом месте как это делать. Как сделаю, сообщу user posted image
PM MAIL WWW   Вверх
ИгнатьевАлексей
Дата 25.8.2006, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 369
Регистрация: 18.11.2005

Репутация: 2
Всего: 3



Ну что-ж! Если вопрос стоит - "Литература после программы", а не "Программа после литературы", то опиши задачку - дам тебе код(если смогу , конечно).   smile 
Кстати, в плане книг, мои работодатели ни разу не отказали мне, а точнее - нашей группе, ни в одной книжке, прекрасно понимая, что развитие своих работников стоит намного дороже, чем цена на книжку  smile 


--------------------
Vingrad - FOREVER !!! 

"Как вы яхту назовете - так она и поплывет!" 
 Капитан Врунгель 
PM MAIL   Вверх
likhobory
Дата 25.8.2006, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 466
Регистрация: 17.5.2005
Где: Москва

Репутация: 10
Всего: 20



Цитата(Валк @  25.8.2006,  08:02 Найти цитируемый пост)
Мне руководительница обещала

 smile мда, весьма странный подход, мягко говоря...



--------------------
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0911 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.