Помогите разобраться с Bookmark в Word

Программирование на Visual Basic for Applications
SDSamyo
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 23.02.2007 (Пт) 23:50

Помогите разобраться с Bookmark в Word

Сообщение SDSamyo » 24.02.2007 (Сб) 10:48

Надо из ячейки в Excel втавить данные в существующий документ в Word в место указанное заранее созданой закладкой, посрадствам скрипта в Excel.
Пробовал искаль по форуму, не нашол, либо решения не сработали.
Подскажите как это реализовать, либо где можно почитать на данную тему.
Заранее спасибо.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.02.2007 (Сб) 11:07

Итак, для примера воспользуемся поиском...
http://bbs.vbstreets.ru/viewtopic.php?p=31410#31410
http://bbs.vbstreets.ru/viewtopic.php?p=32875#32875
http://bbs.vbstreets.ru/viewtopic.php?p=6590858#6590858

Странно, правда?
Ни одного работающего результата.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SDSamyo
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 23.02.2007 (Пт) 23:50

Сообщение SDSamyo » 24.02.2007 (Сб) 11:41

Сделал так:

Range("A1").Select
Dim A As Variant
A = ActiveCell
Dim WordApp As Object
Set WordApp = CreateObject("Word.Application")
WordApp.Documents.Open ("D:\1.docx")
Set Doc = WordApp.ActiveDocument
Doc.Bookmarks("Âñòàâêà").Range.Text = A
WordApp.Visible = True

Всё заработало, спасибо!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.02.2007 (Сб) 12:01

Отходи от привычки делать select, когда он не нужен.
И форматируй код.

Код: Выделить всё
Dim WordApp As Object, Doc as Object
Set WordApp = CreateObject("Word.Application")
Set Doc = WordApp.Documents.Open("D:\1.docx")
Doc.Bookmarks("фывапр").Range.Text = Range("A1").Value 
WordApp.Visible = True
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SDSamyo
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 23.02.2007 (Пт) 23:50

Сообщение SDSamyo » 25.02.2007 (Вс) 23:48

Спасибо, советы очень помогли, но я никак не могу вставить посредствам Excel-евского скрипта данные из буфера обмена в Word на место закладки, закладка заранее определена.
Пробовал примеры с форума, не помогает, может из-за офиса 2007(который я использую).
Подробнее: есть таблица в Excel-е, из которой по определённым критериям происходит выборка (с выборкой я разобрался), после чего происходит копирование в буфер нужных строк таблицы и вставляется в Word на определённое место (я создал шаблон и определяю места закладками). При использовании следующего скрипта ругается на вторую строчку:
Код: Выделить всё

    With WordApp.Selection
        .GoTo What:=wdGoToBookmark, Name:="Таблица"
        .Paste
    End With

В Word-е таблица получается динамическая и заранее не известно сколько в ней будет строчек.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.02.2007 (Вс) 23:54

SDSamyo, я же тебе писал...
GSerg писал(а):Отходи от привычки делать select, когда он не нужен.


Код: Выделить всё
Doc.bookmarks("Таблица").range.paste
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SDSamyo
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 23.02.2007 (Пт) 23:50

Сообщение SDSamyo » 26.02.2007 (Пн) 0:00

Спасибо огромное, помогло
Я пока мало знаю про VBA так что пользуюсь тем, что нахожу...
Надеюсь в будующем вопросов будет меньше :D

DJScalpel
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 19
Зарегистрирован: 19.12.2006 (Вт) 18:28
Откуда: Сами мы не местные, отстали от поезда

Сообщение DJScalpel » 02.10.2007 (Вт) 12:26

кто знает, почему такая конструкция не всегда работает?

Doc.Bookmarks("фывапр").Range.Text = мое_значение

например у меня в Ворде порядка 20 закладок, часть из них по подобной схеме работает, часть только через

Doc.Bookmarks("фывапр").select
Doc.Application.Selection.Text = мое_значение

почему?


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 72

    TopList