Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.65/103: Рейтинг темы: голосов - 103, средняя оценка - 4.65
1 / 1 / 0
Регистрация: 22.03.2011
Сообщений: 45

TextBox VB Word 2007

22.03.2011, 14:08. Показов 20854. Ответов 94
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Подскажите пожалуйста я создала пользовательскую форму в которой есть TextBox и присвоила переменной текстовое значение из него:
strFIOText = TextBox1.Text

А вот как теперь вставить текск из переменной strFIOText в документ? И желательно задать поле для вставки так как данную переменную нужно вставить в 5-6 документов =(

У меня Microsoft Office Word 2007.

С уважением!

Добавлено через 44 минуты
Нашла такое:

создаю поле в документе в В окне "Параменты текстового поля" -> "Параменты поля/Закладка:" ввожу MyTextField1 -> ОК

в VBA прописываю:
ThisDocument.FormFields.Item("MyTextFiel d1").Range.Text = TextBox1.Text

Но после запуска выдает ошибку 5941 =( и открывает отладчик, его закрываю крестиком и в поле присутствует мое значение.

Как подправить что бы ошибки не возникало?

Добавлено через 15 минут
Всем огромное спасибо!

Заменила:
ThisDocument.FormFields.Item("MyTextFiel d1").Range.Text = TextBox1.Text
на
ThisDocument.FormFields.Item("MyTextFiel d1").Result = TextBox1.Text и ошибка пропала =)

Но возник сразу другой вопрос как заменить сразу в двух документах данное поле?

Пример в двух документах ворд 2007 имеем ФИО с помощью пользовательской формы нужно заменить ФИО в двух - семи документах и сохранить их.

Добавлено через 51 минуту
подскажите как можно обратиться к другому документу?

То есть внести изменение не в текущий документ а в тот который открываем макросом
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.03.2011, 14:08
Ответы с готовыми решениями:

Макрос в Word 2007
Нужна ваша помощ по созданию макроса!!! 1) Удаление лишних пробелов. 2) Удаление лишних знаков абзацев. 3) Выравнивание по ширине. ...

Апостроф " в Word 2007
Пытаюсь заменить в документе символ ~ на ". Всегда работал код WordBasic.EditReplace Find:="~", Replace:=Chr(34),...

Ширина таблицы в WORD 2007
При проходе по таблицам ворда With Selection.Tables(1) .PreferredWidthType = 2 'wdPreferredWidthPercent ...

94
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
29.03.2011, 11:28
Студворк — интернет-сервис помощи студентам
так а в чём проблема??
0
1 / 1 / 0
Регистрация: 22.03.2011
Сообщений: 45
29.03.2011, 11:43  [ТС]
=)))))
Проблема в том что плодим топики =)))

А серьезно если то мне нужно открыть 5 файлов внести изменения и закрыть с сохранением вот делаю цикл на открытие двух файлов с разными именами:
паспорт.doc и сопроводительное.doc

объявляю переменные:
Visual Basic
1
2
3
file1 = "паспорт"
file2 = "сопроводительное"
a=1 'счетчик для переменных
теперь делаю цикл через For и пишу тело цикла на открытие документа:
Visual Basic
1
2
3
4
5
6
7
i=1
For i =1 to 3
Set WordApp = New Word.Application
WordApp.Visible = True
Set DocWord = WordApp.Documents.Open("D:\Distrib\otchet\" & file & ".doc")
a=a+1
next i
а перед циклом пытаюсь определить переменную file:
Visual Basic
1
file = "file" & a
и проблема что ее в Open("D:\Distrib\otchet\" & file & ".doc") подставляет как "file1" а не значение из объявленных переменных
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
29.03.2011, 11:53
вопрос на засыпку
если а = 3
то после
file = "file" & a
file чему равна??
0
1 / 1 / 0
Регистрация: 22.03.2011
Сообщений: 45
29.03.2011, 11:56  [ТС]
"file3"
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
29.03.2011, 12:02
всё верно, честно сказать в Вашу проблему я вникнуть не могу, есть ещё совет именам давайте такие имена, чтобы не спутать руские буквы или англ. то есть s никогда не спутаете, а то
а русс
и
а англ
можно спутать

Добавлено через 3 минуты
Цитата Сообщение от Синкела Посмотреть сообщение
мне нужно открыть 5 файлов
может сделали бы без цикла, 5 не так уж много
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
29.03.2011, 12:16
Попробуй так(только массив не забудь объвить)
Visual Basic
1
2
3
4
file(1) = "паспорт"
file(2) = "сопроводительное"
For i =1 to 3
fillle = file(a)
Да и переменные надо что бы были не с одинаковыми именами
1
1 / 1 / 0
Регистрация: 22.03.2011
Сообщений: 45
29.03.2011, 12:39  [ТС]
Alex77755 прям цены тебе нет =) не знаю уж как и благодарить тебя!
0
1 / 1 / 0
Регистрация: 22.03.2011
Сообщений: 45
05.04.2011, 10:09  [ТС]
Снова вопрос =) почему один вариант работает а второй нет?
Смысл такой: Открываю документ 4.doc и меняю в нем фамилию через "найти-заменить"

Это работает:

Visual Basic
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
Sub Макрос5()
'
' Макрос5 Макрос
'
    ChangeFileOpenDirectory "D:\Distrib\otchet\"
    Documents.Open FileName:="4.doc", ConfirmConversions:=False, ReadOnly:= _
        False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _
        "", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
        Format:=wdOpenFormatAuto, XMLTransform:=""
 
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "Подоленчук"
        .Replacement.Text = "Петров"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub
а этот не работает =( как починить?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Макрос6()
'
' Макрос6 Макрос
'
Set WordApp = New Word.Application 'создаём  новый экземпляр Word-a
WordApp.Visible = True
Set DocWord = WordApp.Documents.Open("D:\Distrib\otchet\4.doc") 'открыть имеющийся документ
DocWord.Activate 'активируем его
 
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "Подоленчук"
        .Replacement.Text = "Петров"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
меняется только принцип открытия документа сама замена одинакова.
Но первый работает а вот второй вариант не работает =( и можно как то улучшить?
0
1713 / 580 / 76
Регистрация: 10.04.2009
Сообщений: 9,337
05.04.2011, 10:22
второй код строки с 10-24 вместо Селектион пробуйте DocWord
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
05.04.2011, 10:33
Синкела,
вы работаете с Word из другой программы (например, Excel)?
0
1 / 1 / 0
Регистрация: 22.03.2011
Сообщений: 45
05.04.2011, 10:49  [ТС]
Busine2009
Нет работаю с Word из Word только открываю другие документы Word и в них вношу изменения в первом форма для заполнения пользователем

Ципихович Эндрю
если пишу вместо Selection это DocWord или это DocWord.Selection выдает:
Ошибка 438
Object doesn't support this property or method
Вы попытались обратиться к методу или свойству, которые не поддерживаются объектом.
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
05.04.2011, 10:51
Цитата Сообщение от Синкела Посмотреть сообщение
Set WordApp = New Word.Application 'создаём новый экземпляр Word-a
а с какой целью это делаете или неосознано?

Вот мой вариант:
Visual Basic
1
2
3
4
5
6
7
8
9
Sub P1()
Dim Документ As Word.Document
Set Документ = Application.Documents.Open("D:\Distrib\otchet\4.doc")
With Документ.Range.Find
    .Text = "Подоленчук"
    .Replacement.Text = "Петров"
    .Execute Replace:=wdReplaceAll
End With
End Sub
1
1 / 1 / 0
Регистрация: 22.03.2011
Сообщений: 45
05.04.2011, 11:18  [ТС]
Огромное спасибо =) но есть нюанс =)

Мне как бы еще нужно что бы документ открываемый 4.doc стал активным и пользователь его увидел, а первый документ с формой ушел на задний план под 4.doc.
То есть открываемый стал активным документом =)

Если делаю так то все получается и 4.doc активный документ

Visual Basic
1
2
3
4
5
6
7
8
9
10
Set WordApp = New Word.Application 'создаём  новый экземпляр Word-a
WordApp.Visible = True 
Set DocWord = WordApp.Documents.Open("D:\Distrib\otchet\4.doc") 'открыть имеющийся документ
DocWord.Activate 'активируем его
 
With DocWord.Range.Find
    .Text = "Подоленчук"
    .Replacement.Text = "Петров"
    .Execute Replace:=wdReplaceAll
End With
а в твоем коде можно добавить строчку что бы его активным сделать? =)
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
05.04.2011, 11:19
Цитата Сообщение от Синкела Посмотреть сообщение
Set WordApp = New Word.Application 'создаём новый экземпляр Word-a
а это зачем делаете? Мне просто интересно (я ничего против не имею, просто никогда такого ещё не делал)?
Я протестировал - в моём коде открываемый документ становится активным. Зачем что-то ещё добавлять.
0
1 / 1 / 0
Регистрация: 22.03.2011
Сообщений: 45
05.04.2011, 11:24  [ТС]
я не знаю точно но методом тыка:
если так Set DocWord = Application.Documents.Open("D:\Distrib\o tchet\4.doc") то документ открывается но активным остается документ с формой

а если с этим: Set WordApp = New Word.Application то он активным делает открываемый документ

а мне как бы это и нужно =) вот и пользуюсь =)

у меня активной остается у тебя документ с формой =( Но все равно огромное спасибо =) главное заменять стал =)
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
05.04.2011, 11:27
Синкела,
понятно, тогда вот это добавьте в мой код:
Visual Basic
1
Документ.Activate
1
1 / 1 / 0
Регистрация: 22.03.2011
Сообщений: 45
05.04.2011, 11:31  [ТС]
пробовала Документ.Activate не помогает +( ладно буду через это открывать Set WordApp = New Word.Application

Спасибо! это уже мелочи главное что в код вставила ваш код и он все поменял как нужно =)
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
05.04.2011, 11:33
Синкела,
а что за форма у вас? Документ с полями (элементами управления) или пользовательская форма, сделанная в VBA?
0
1 / 1 / 0
Регистрация: 22.03.2011
Сообщений: 45
05.04.2011, 11:51  [ТС]
пользовательская в VBA сама делала там:
TextBox и ComboBox ну и Label + две кнопки ОК и отмена =)
0
2309 / 1541 / 115
Регистрация: 13.06.2009
Сообщений: 5,575
05.04.2011, 11:53
Синкела,
тогда, действительно, нужно использовать то, что вы используете. Точки на "и" расставлены.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2011, 11:53

Word VBA 2007 Фоновая форма
Доброго времени суток. Проблема: Нужно сделать форму, которая бы не занимала MS Word 2007, а просто висела внизу (как бы в отдельном...

Word 2007: Удалить строки в ячейке таблицы
Здравствуйте, как можно средствами VBA удалить во втором столбце таблицы строки, оставив только две, в начале каждой ячейки.

Word 2007: Как заменить количество пробелов по условию
Добрый день, как с помощью макроса заменить все пробелы число которых больше трех но меньше десяти, допустим на 10 пробелов?

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

Создание макроса по поиску и замене текста в Word 2007
Помогите пожалуйста написать макрос, который будет в тексте, состоящем из статей, имеющих постоянную «шапку». Например Никто не может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru