Перейти из форума на сайт.


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 27 28 29 30 31 32 33 34 35 36 37 38 39

Открыть новую тему     Написать ответ в эту тему

Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Anatolij2005
Вот так покатит?
Код:
Sub Макрос2()
  Dim strNew As String
  Dim intCount As Integer
  Dim i As Integer
   
  With ActiveDocument.Tables(1) ' .Tables(1)
    intCount = .Rows.Count
     
    For i = 1 To intCount
      strNew = Mid(.Cell(i, 2).Range.Text, 1, Len(.Cell(i, 2).Range.Text) - 2)
      ActiveDocument.FormFields(i).TextInput.EditType Type:=wdRegularText, Default:=strNew, Format:=""
    Next i
  End With
 
End Sub

 
 
Добавлено:
Макрос перебирает все ячейки второго столбца таблицы 1 и присваивает их содержимое свойству текст по умолчанию текстовых полей, имеющих индекс, равный номеру текущей строки.

----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 794 | Зарегистр. 13-12-2003 | Отправлено: 20:44 22-02-2006
Anatolij2005

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
С праздником. Пробовал макрос, не работает, на первом месте оказалось пустое текстовое поле. А другие поля остались на месте.Может что делаю не так?Взял кусок текста с полями и таблицу в которую вписал новые и старые значения, запустил макрос.

Всего записей: 26 | Зарегистр. 04-10-2005 | Отправлено: 10:05 23-02-2006
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Anatolij2005
А в документе есть еще таблицы? Были? Таблица о которой идет речь (со значениями) добавлялась первой? В ней есть шапка? Она состоит только из двух столбцов - в первом старые значения, во втором - новые? Порядок добавления полей в документ был тот же, что и порядок следования соответствующих им строк таблицы?
 
В тестовом документе у меня все работает.
http://rapidshare.de/files/13925005/doc.zip.html
Проверь а у тебя заработает?

----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 794 | Зарегистр. 13-12-2003 | Отправлено: 10:46 23-02-2006
Anatolij2005

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как работать с этим сайтом подскажи пожалуйста, а то с английским не очень дружу.

Всего записей: 26 | Зарегистр. 04-10-2005 | Отправлено: 10:55 23-02-2006
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Anatolij2005
Жмешь на открывшейся странице кнопку "Free".
На следующей странице (возможно придется секунд несколько подождать) введешь в текстовое поле буквенно-цифровой код, который на картинке изображен, и нажмешь кнопочку "Download" - пойдет закачка.

----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 794 | Зарегистр. 13-12-2003 | Отправлено: 11:19 23-02-2006 | Исправлено: Troitsky, 11:21 23-02-2006
Anatolij2005

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо все открылось. У меня стоял флешгет и с него почемуто не закачивалось, а експлорером без проблем.
В твоем файле макрос работает безупречно. Я думаю наверное лучше сделать чтобы таблица с новыми и старими значениями была в отдельном файле.В документе еще есть таблицы. Я могу в таблице обойтись и без шапки. Да она состоит только из двух столбцов - в первом старые значения, во втором - новые.Порядок добавления полей в документ был тот же, что и порядок следования соответствующих им строк таблицы.

Всего записей: 26 | Зарегистр. 04-10-2005 | Отправлено: 13:33 23-02-2006
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Anatolij2005
Тогда созавай новый документ вставляй в него таблицу со значениями и сохраняй.
В документ с полями вставляй макрос
Код:
Sub Макрос1()
  Dim strNew As String
  Dim intCount As Integer
  Dim i As Integer
   
  Documents.Open FileName:="D:\Документ с таблицей.doc", ReadOnly:=True, Visible:=False
     
  With Documents("D:\Документ с таблицей.doc").Tables(1)
    intCount = .Rows.Count
     
    For i = 1 To intCount
      strNew = Mid(.Cell(i, 2).Range.Text, 1, Len(.Cell(i, 2).Range.Text) - 2)
      Documents("D:\Документ с полями.doc").FormFields(i).TextInput.EditType Type:=wdRegularText, Default:=strNew, Format:=""
    Next i
  End With
 
  Documents("D:\Документ с таблицей.doc").Close savechanges:=False
 
End Sub
и запускай его. Должно работать нормально.
 
Примеры файлов тут:
http://rapidshare.de/files/13933749/docs.zip.html

----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 794 | Зарегистр. 13-12-2003 | Отправлено: 14:09 23-02-2006
Anatolij2005

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Огромное спасибо все работает

Всего записей: 26 | Зарегистр. 04-10-2005 | Отправлено: 16:09 28-02-2006
Anatolij2005

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В дополнение к решению прошлой проблемы с полями формы, могу озадичить следующим.Подскажите какой можно написать макрос в VBA Word, что бы при удалении текстовых полей в большом тексте, происходило обновление закладки.Например была номерация Текстовое поле1, Текстовое поле2,Текстовое поле3
а после удаления поля, Текстовое поле1, Текстовое поле3 нужно чтобы было Текстовое поле1, Текстовое поле2 тоесть они должны идти подряд.
 Попогите пожалуйста а то у меня пока опыта маловато.
 

Всего записей: 26 | Зарегистр. 04-10-2005 | Отправлено: 15:09 01-03-2006
Mbus



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня достаточно простая задача.  
Есть подпись-факсимиле = картинка в формате Png с прозрачным фоном.  
Мне нужна кнопка, по нажатию которой вставлялась бы подпись в нужное место. Это все без проблем не сложно, но вот одна фигня вылезла, что мне не нравится.  
 
В документах используются штампы - это по сути таблица со строго заданными размерами. Когда в нее (в ячейку) вставляешь картинку, эта картинка сразу принимает масштаб ячейки, при чем даже если ячейки объеденены, картинка всеравно вставится размером как в одну ячейку.  
 
Подписи бывают разные, у некоторых оч. выперают закорючки. И поэтому подпись, вписанная в ячеку становится оч. мелкой..... хочется правдоподобия.  
А к в реальности бывает? подпись может слегка выходить своими закорючками за поля.  
 
Я не знаю как сделать так, чтобы подпись вставлялась с определенным масштабом и св-вом, например, перед текстом. Потомучто иначе если подпись растягивать, она всеравно за границы ячейки не вылазит, просто что уместилось в ячейке, то видно, что дальше - скрыто.  
 
Добавлено:  
Во, сама и сделала..... теперь вставляет со свойством = перед текстом  и масштаб в два раза меньше реального  
 

Код:
 
    With ActiveDocument.Shapes.AddPicture(Anchor:=Selection.Range, filename:= _  
                                                               "D:\g.png", LinkToFile:=False, _  
                                                                SaveWithDocument:=True)  
                                                                .Select  
    End With  
    Selection.ShapeRange.ScaleWidth 0.5, msoFalse  
    Selection.ShapeRange.ScaleHeight 0.5, msoFalse  
 
 
 
Теперь другие два вопроса:
1. при такой вставке картинки, она улетает в начало строки, а не остается на том месте где ее вставили
2. проблема которая впринципе и была
Есть у нас в колонтитуле штамп = таблица со строго заданными размерами.
Вставляем в ее ячейку картинку через Вставка-Рисунок-Из файла
Потом щелкаем по нему два раза и меняем полодение на = перед текстом (или любое другое) и эта картинка куда-то вылетает...не видно ее....
При вставке макросом теже самое  
Это именно со свойством связано, может кто-то знает ответ на этот вопрос? Хотя вроде если вставлять просто в чистый колонтитул так все нормально....

Всего записей: 655 | Зарегистр. 04-06-2003 | Отправлено: 07:44 07-04-2006
Archimed



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Никак не могу решить такую задачу. В UserForms есть 32 Combobox-са (ВВод). Все тексты из них надо переписать в массив М(1 То 32). Сделать это в ЦИКЛЕ по I.
М(1) = Ввод1.Text, М(2) = Ввод2.Text и т.д. У меня проблема с перебором текстовых полей Ввод1-32. Как задать ВводI.Text. Не хочу писать 32 строки вместо 2-3. Тем более еще придется как-то обрабатывать текст, выбрасывать пустышки и т.п.

Всего записей: 728 | Зарегистр. 25-10-2002 | Отправлено: 20:34 09-04-2006
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Archimed
По идее, нужен массив элементов ComboBox, а не 32 отдельных штуки, тогда перебрать можно было бы по индексам. В твоей ситуации можно только попробовать осуществить перебор с помощью инструкции For Each ... Next. Другого выхода не вижу.

----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 794 | Зарегистр. 13-12-2003 | Отправлено: 23:20 09-04-2006 | Исправлено: Troitsky, 23:21 09-04-2006
mrdime



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, возникла такая проблема:
Импортирую (руками) таблицы из IE в Word. Все таблицы имеют обьемные границы, которые в Word-е выглядят просто ужасно. Посему написал небольшой макрос. Который меняет тип и ширину границ.  

Цитата:
Sub TableEdit()
 
For Each aTable In ActiveDocument.Tables
    aTable.Borders.OutsideLineStyle = wdLineStyleSingle
    aTable.Borders.OutsideLineWidth = wdLineWidth025pt
    aTable.Borders.InsideLineStyle = wdLineStyleSingle
    aTable.Borders.OutsideLineWidth = wdLineWidth025pt
    aTable.Spacing = 0
    aTable.AllowPageBreaks = True
    aTable.AllowAutoFit = True
     
Next aTable
 
End Sub

Но остается параметр Spacing, даже принудительное присваивание ему значения "0" не дает возможности от него полностью избавиться. Между линиями остаются небольшие зазоры. Приходится для каждой таблицы руками в Свойствах таблицы - Таблица - Параметры убирать галку с "Интервалы между ячейками". Подскажите как избавиться от этой гадости, как это сделать на VBA?

Всего записей: 2568 | Зарегистр. 04-01-2005 | Отправлено: 02:20 11-04-2006 | Исправлено: mrdime, 02:23 11-04-2006
Archimed



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Troitsky
Массив элементов ComboBox тоже надо как-то заполнить. Попытался для 3-х
Dim M(3) As String
For Each I In M
M(I) = ВводI.Text
Next I
Никак не прокатывает. Неверное свойство или метод. Может кто подскажет другое, или я не так делаю.

Всего записей: 728 | Зарегистр. 25-10-2002 | Отправлено: 19:36 11-04-2006
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Archimed
Осекся я немного. В ВБА некоторые трудности с массивами элементов управления
 
Можно что-то типа такого попробовать:
Код:
  Dim MyCombo As ComboBox
  Dim M() As String
  Dim i As Integer
   
  i = -1
   
  For Each MyCombo In UserForm1.Controls
    i = i + 1
    ReDim Preserve M(i)
    M(i) = MyCombo.Text
  Next

 
Добавлено:
Или точнее, вот так лцчше будет:
Код:
  Dim anyControl As Control
  Dim M() As String
  Dim i As Integer
   
  i = -1
   
  For Each anyControl In UserForm1.Controls
    If (TypeOf anyControl Is ComboBox) Then
      i = i + 1
      ReDim Preserve M(i)
      M(i) = anyControl.Text
    End If
  Next

 
Добавлено:
Вот тут была в чем-то похожая проблема.

----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 794 | Зарегистр. 13-12-2003 | Отправлено: 20:23 11-04-2006 | Исправлено: Troitsky, 20:42 11-04-2006
Fr1end

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто подскажет, как макросом создавать формулу в Ворде?

Всего записей: 159 | Зарегистр. 13-05-2005 | Отправлено: 16:52 12-04-2006
Mbus



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ВОПРОС
 
Вот делаю так  
1. пишу макрос
2. вытаскиваю его на панельку
 
А можно ли как-нить написать макрос так, чтобы он сам формировал панель или меню?
 
 
 
Добавлено:
Вот написала так:
 

Код:
 
Sub menu()
 
Set MainMenu = CommandBars("Menu Bar").Controls.Add (Type:=msoControlPopup, Temporary:=True)
MainMenu.Caption = "MAIN"
 
Set SubMenu = MainMenu.CommandBar.Controls.Add(Type:=msoControlButton, ID:=1)
With SubMenu
.Caption = "Вставить картинку"
.OnAction = "img"
End With  
 
 
End Sub
 
Sub img(fio)
 
Selection.InlineShapes.AddPicture filename:="D:\img\" + fio + "_g.png", _
LinkToFile:=False, SaveWithDocument:=True
 
End Sub
 
 
 
 
В результате выполнения макроса формируется меню MAIN с подменю ВСТАВИТЬ КАРТИНКУ
 
Если щелкнуть по кнопке, то должна выполнится функция IMG
Если она без параметров, то работает в таком варианте, но если есть параметр (FIO в данном случае), то я не знаю как его передать...что-тов се на синтаксическую ошибку жалуется, т.е. надо правильно написать строку , выделенную красным шрифтом

Всего записей: 655 | Зарегистр. 04-06-2003 | Отправлено: 11:57 18-04-2006 | Исправлено: Mbus, 14:19 18-04-2006
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mbus
А как ты себе представляешь работу макроса?
Ну жмешь "ВСТАВИТЬ КАРТИНКУ" и должен выполнится макрос. И что в него передается? Откуда берется параметр fio? Или он с каждым вызовом макроса остается постоянным? Меняется?
Если, допустим, это строковая переменная, которая содержит выделенный текст, не проще ли будет так это в макросе и отразить не изобретая никаких параметров?

----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 794 | Зарегистр. 13-12-2003 | Отправлено: 20:05 18-04-2006
Mbus



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Troitsky
я конкретный ворос задала как передать параметр, остальное не важно...
вот мне подсказали два способа
один из них так записать .OnAction = "'img ""Фамилия""'"
другой с использованием .Parameter = "Фамилия" и в самой функции img обратиться к нему

Всего записей: 655 | Зарегистр. 04-06-2003 | Отправлено: 09:12 19-04-2006
Troitsky



Водник Водкин
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Mbus

Цитата:
вот мне подсказали
и работают?
 
Мне кажется, в лучшем случае получится передать параметр, который нельзя будет изменить, постоянный.
Кстати, не могу найти ни одного аналога среди существующих стандартных объектов CommandBar. М.б. отсюда и недопонимание задачи?
 
Можно конечно сделать "каскадом":
Код:
Sub img()
  img2 "Фамилия"
End Sub
 
Sub img2(fio)
  Selection.InlineShapes.AddPicture FileName:="D:\img\" + fio + "_g.png", _
  LinkToFile:=False, SaveWithDocument:=True
End Sub
Но наверняка все гораздо проще и использование параметра не обязательно.


----------
Мы в хорошем настроении гуляем по лесам.
Кто обидеть нас захочет – сам получит по усам.
Сам полу- получит по усам. Сам полу- получит по усам!

Всего записей: 794 | Зарегистр. 13-12-2003 | Отправлено: 18:22 19-04-2006
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 27 28 29 30 31 32 33 34 35 36 37 38 39

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Word VBA

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2018

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru