VBA и WORD

Программирование на Visual Basic for Applications
baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

VBA и WORD

Сообщение baranich » 29.08.2005 (Пн) 10:35

такая проблема,
надо в word сделать так
имеется рамка, внутри неё несколько. например 4 textbox, которые должны заполняться из другого word или excel файла.
Этих рамок на листе А4 должно быть 20 штук.
Эту задачу реально сделать?

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

word и textbox

Сообщение baranich » 29.08.2005 (Пн) 14:28

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

Shurrik
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 20.05.2004 (Чт) 5:35
Откуда: Керчь, Крым

Сообщение Shurrik » 30.08.2005 (Вт) 7:01

TextBox1 на документе, а TextBox2 на форме.

Private Sub TextBox2_Change()
ThisDocument.TextBox1.Text = TextBox2.Text
End Sub
Колесо: Хочешь жить? Умей вертеться.

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 01.09.2005 (Чт) 10:52

а как сделать такое, при нажатие на кнопку у меня данные из Textbox2 переносяться в Textbox1 и VBA выгружается, но надо чтоб форма закрывалась и мы оставались в WORD, а не возвращались в VBA

Al Khamid
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 01.09.2005 (Чт) 11:33

Последний раз редактировалось Al Khamid 04.12.2007 (Вт) 9:42, всего редактировалось 1 раз.

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 01.09.2005 (Чт) 12:05

Мне надо чтоб форма загружалась при открытие документа?
Или как сделать кнопочку на панели?

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 01.09.2005 (Чт) 13:29

Да и ещё как сделать, чтоб в один word-документ перенести шаблон, который находиться в др. word-документе

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 01.09.2005 (Чт) 14:40

как прочитать текст из одного word-документ и передать его в другой

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 06.09.2005 (Вт) 11:27

Такой вопросик.
У меня в txt-файле, есть строка, на документе в word есть 15 textboxов и надо сделать чтоб при чтение txt-файла эта строка переносилась во все эти textboxы.

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 06.09.2005 (Вт) 11:54

вот читаю я это и думаю: давно бы уже сделал нормальную прогу на vb и не парился с формами в ворде

для чего тебе вообще нужны эти тексбоксы?

Мне надо чтоб форма загружалась при открытие документа?


Код: Выделить всё

Sub Auto_Open()
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

K.Sergey
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 11.10.2004 (Пн) 0:42
Откуда: Санкт-Петербург

Сообщение K.Sergey » 06.09.2005 (Вт) 12:30

baranich писал(а):Такой вопросик.
У меня в txt-файле, есть строка, на документе в word есть 15 textboxов и надо сделать чтоб при чтение txt-файла эта строка переносилась во все эти textboxы.


Держи. Функция возращает текст файла. Процедура заполняет этим текстом все текстбоксы в активном документе.
Код: Выделить всё

Sub FillFields()
Dim MyText As String
MyText = GetMyText("c:\TextFile.txt") 'Измени имя файла на свое.
If ActiveDocument.FormFields.Count > 0 Then
    For Each mf In ActiveDocument.FormFields
         If mf.Type = wdFieldFormTextInput Then mf.Result = MyText
    Next mf
End If
End Sub


Function GetMyText(Path As String)
' Path - полный путь к файлу, например: "c:\testfile.txt",
    Const ForReading = 1, ForWriting = 2, ForAppending = 3
    Dim fs, f
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile(Path, ForReading, TristateFalse)
    GetMyText = f.ReadAll
    f.Close
End Function
Последний раз редактировалось K.Sergey 07.09.2005 (Ср) 12:40, всего редактировалось 1 раз.
Life is what happens to us when we are planning to do something else...

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 06.09.2005 (Вт) 14:37

а если у меня выборочные textboxы, т.е в документе их 50 штук, а мне надо чтоб информация из файла попадала в 10 textboxов, например в TextBox47-TextBox57. Тогда как, ведь массивы в wordе не делаются.

K.Sergey
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 11.10.2004 (Пн) 0:42
Откуда: Санкт-Петербург

Сообщение K.Sergey » 06.09.2005 (Вт) 14:45

baranich писал(а):а если у меня выборочные textboxы, т.е в документе их 50 штук, а мне надо чтоб информация из файла попадала в 10 textboxов, например в TextBox47-TextBox57. Тогда как, ведь массивы в wordе не делаются.

Тогда можно так:
Код: Выделить всё

Sub FillFields()
Dim MyText As String
MyText = GetMyText("c:\TextFile.txt") 'Измени имя файла на свое.
If ActiveDocument.FormFields.Count > 0 Then
   For Each mf In ActiveDocument.FormFields
       If mf.Type = wdFieldFormTextInput Then
          For i = 47 to 57
               if mf.Name = "TextBox" & i then mf.Result = MyText
          Next i
       End if
   Next mf
End If
End Sub
Последний раз редактировалось K.Sergey 07.09.2005 (Ср) 12:39, всего редактировалось 1 раз.
Life is what happens to us when we are planning to do something else...

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 07.09.2005 (Ср) 8:38

Вот ещё вопросик,
есть папка, в которой лежит еще несколько папок и txt-файл, в котором будут прописаны названия этих папок, можно ли сделать так чтоб на VBA прописать код с помощью которого читался бы этот txt-файл и прочитав первую строку с названием папки направлялся бы в неё и читал её содержимое(в этой папке тоже будет справочный файл, но уже с названиями word-документов)

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 07.09.2005 (Ср) 8:43

baranich писал(а):Вот ещё вопросик,
есть папка, в которой лежит еще несколько папок и txt-файл, в котором будут прописаны названия этих папок, можно ли сделать так чтоб на VBA прописать код с помощью которого читался бы этот txt-файл и прочитав первую строку с названием папки направлялся бы в неё и читал её содержимое(в этой папке тоже будет справочный файл, но уже с названиями word-документов)


поиск в хелпе - dir
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 07.09.2005 (Ср) 12:16

Sub Auto_Open()


Эта процедура не проходит, т.е при открытие документа никаких действий, которые там прописаны, не происходят. Почему???

K.Sergey
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 11.10.2004 (Пн) 0:42
Откуда: Санкт-Петербург

Сообщение K.Sergey » 07.09.2005 (Ср) 12:30

Для того, чтобы форма загружалась при открытии книги, в МОДУЛЕ РАБОЧЕЙ КНИГИ вставь (вместо UserForm1 - имя своей формы):
Код: Выделить всё
Private Sub Workbook_Open()
UserForm1.Show
End Sub
Life is what happens to us when we are planning to do something else...

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 07.09.2005 (Ср) 12:43

У меня WORD и форма пока называется UserForm1

т.е код
[/code]
Private Sub Auto_Open()
UserForm1.Show
End Sub
Код: Выделить всё
не работает

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 07.09.2005 (Ср) 12:45

пордон нет так написала

Код: Выделить всё
Private Sub Auto_Open()
UserForm1.Show
End Sub



для word
вот этот код не работает.[/quote]

K.Sergey
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 11.10.2004 (Пн) 0:42
Откуда: Санкт-Петербург

Сообщение K.Sergey » 07.09.2005 (Ср) 12:50

baranich писал(а):У меня WORD и форма пока называется UserForm1

Сорри, тогда:
Код: Выделить всё
Private Sub Document_Open()
UserForm1.Show
End Sub
Life is what happens to us when we are planning to do something else...

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 07.09.2005 (Ср) 12:59

большое спасибо.
заработало

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 08.09.2005 (Чт) 8:38

Вопросик на засыпку, почему у меня Listbox на форме не дает вписывать информацию при загрузке формы, т.е открыли форму и я хочу вписать информацию, разве нельзя?Я идиот! Убейте меня, кто-нибудь!? :?:

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 08.09.2005 (Чт) 8:49

а потамучта листбокс еще не успел подгрузится, поэтому и выдает ошибку
пользуйся Form_Initialize()
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 08.09.2005 (Чт) 10:20

нет это понятно, но у меня вопросик был в чём, форма загрузилась и я кликаю мышкой и хочу внести сама туда данные, а у меня не получается. Почему?

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 08.09.2005 (Чт) 10:22

additem не пробовала?
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 08.09.2005 (Чт) 10:38

additem не пробовала?


нет. а что она даёт

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 08.09.2005 (Чт) 10:58

функция additem не подходит, а что-нибудь ещё

baranich
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 123
Зарегистрирован: 23.08.2005 (Вт) 9:00

Сообщение baranich » 08.09.2005 (Чт) 11:03

в ComboBox можно вводить списком? я ввела одну строку, а на вторую он не переходит, это можно сделать и кстати можно такое же сделать с textbox?( я ввожу не спомощью кода, а в ручную)

K.Sergey
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 11.10.2004 (Пн) 0:42
Откуда: Санкт-Петербург

Сообщение K.Sergey » 08.09.2005 (Чт) 11:15

baranich писал(а):и кстати можно такое же сделать с textbox?( я ввожу не спомощью кода, а в ручную)

Код: Выделить всё
Private Sub UserForm_Initialize()
TextBox1.MultiLine = True
End Sub

Либо в ручную в свойствах формы установи MultiLine = True
Life is what happens to us when we are planning to do something else...

K.Sergey
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 11.10.2004 (Пн) 0:42
Откуда: Санкт-Петербург

Сообщение K.Sergey » 08.09.2005 (Чт) 11:23

baranich писал(а):в ComboBox можно вводить списком? я ввела одну строку, а на вторую он не переходит( я ввожу не спомощью кода, а в ручную)

Комбобокс предназначен для того, чтобы выбирать из существующего списка нужный элемент (+ позволяет его непосредственно ввести). А ты его пытаешься использовать не по назначению - составлять списки.
Life is what happens to us when we are planning to do something else...

След.

Вернуться в VBA

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

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

    TopList