Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Word VBA

Автор: Troitsky
Дата сообщения: 12.11.2006 13:58
OrlangurStep
Добавить его в шаблон всех документов (Normal.dot). Например,
Код: Private Sub Document_Open()
MsgBox "Привет"
End Sub
Автор: OrlangurStep
Дата сообщения: 12.11.2006 17:36
TЕсть ще вопрос - как проверить иня текущего дока на соответствие шаболону ????TMP.rtf ?
Автор: Troitsky
Дата сообщения: 12.11.2006 19:13
OrlangurStep

Цитата:
TЕсть ще вопрос - как проверить иня текущего дока на соответствие шаболону ????TMP.rtf ?

Без регулярных выражений, не универсально
Код: If Len("????TMP.rtf") = Len(ActiveDocument.Name) Then
If StrComp(Right(ActiveDocument.Name, Len("TMP.rtf")), "TMP.rtf", 1) = 0 Then
MsgBox "Соответствует шаблону"
End If
End If
Автор: Phelicks
Дата сообщения: 23.11.2006 21:00
Народ. Может кто поможет.

Есть таблица. Внутрь вставляю поле. Нужно чтобы при попытке Worda расширить таблицу по высоте, если текст не вписывается, уменьшить шрифт на 1 пт. И так пока не станет все пучком.

Помогите плз. !!!! Можно в приципе за webmoney или пива
Автор: Archimed
Дата сообщения: 23.12.2006 13:04
Опять прошу помощи. В Userform добавляю новый Controls как Forms.Label.1. Как изменить размер и тип шрифта в добавленной метке. ...NewControls.Font ="Arial" не прокатывает. Короче, надпись не помещается в выделенное под нее поле. нужно уменьшить шрифт. Расширить Width не предлагать.
Вопрос снят. Нашел в Helpe как это можно сделать.
Автор: zeroandruxa
Дата сообщения: 28.12.2006 12:55
Народ как програмно добраться до филдов (вставить поле в меню вставка), добавлять их заменять значениями в тексте?
Автор: VicFrag
Дата сообщения: 04.01.2007 19:13
Вот, казалось бы,типичная задача. Хочу написать что-либо типа Wizard для формирования документа пользователем. Программа строит документ и периодически предлагает пользователю заполнить конкретным содержимым отдельные блоки: шапочку, таблички и т.д.. В эти блоки юзер может вставлять всё что душе угодно: графику, текст, формулы, OLE объекты. Казалось бы, выкинул пользователю пустую страничку и говори заполняй, как закончишь нажми такую-то кнопочку или комбинацию клавиш. Макрос всё это подсосёт и продолжит работу. Типичная задача. А вот решения не вижу. В своё время писал макрос для интерактивного построения сложных многоуровневых диаграмм. И там содержимое отдельных блоков должно было быть любым(см. выще). По ходу работы макроса пользователь строил диаграмму(выбирал тип: ветвление, цикл, условие), а для заполнения содержимого текущего блока выбрасывался пустой документ и он туда пихал всё что-нужно. Нажимал кнопарь и поехали дальше. Подобная задача была решена в WordBasic(был такой) при помощи жуткого извращения. В VBA я не вижу подобного решения. Word либо исполняет макрос, либо работает с пользователем. Может у кого есть решение этой в общем то типичной проблеммы?
Автор: SGavrish
Дата сообщения: 12.03.2007 11:38
Если создать в Excel-е встроенный объект (несвязанный), например документ Word, то при его открытии в меню word-а нет команды "Сохранить", вместо нее "Обновить", изменены ряд других команд меню, заголовок окна, Document.Path="", и др. То есть word "знает", что документ был создан OLE-следствами, и соответственно им манипулирует. А вот как мне включить такой режим? Мне нужно создать документ из 1С v8, и сохранить его в 1С-ой базе. Как это сделать через временный файл понятно, а вот можно ли обойтись без файла? Куда word-у сохранять его по команде пользователя "Обновить"? Не понятен принцип такой работы, и описаловки нигде не могу найти
Подскажите пожалуйста.
Автор: TashaA
Дата сообщения: 05.04.2007 06:12
Уважаемые! HELPните, плиз!
Как скопировать данные таблицы Excel и вставить их в таблицу Wordа?
т.е. полностью таблицу, а не одну ячейку.
Автор: apexfmm
Дата сообщения: 06.04.2007 02:34
TashaA
только через импорт данных Excel
Автор: amnil
Дата сообщения: 11.04.2007 23:08
помогите пожалуста...как ссделать вот такую задачу:
y=lnx если 2a+b<0
y=tg(ax-b^2) если 2a+b=0
y=arctg(2x) если 2a+b>0
Автор: apexfmm
Дата сообщения: 12.04.2007 10:58
amnil
Это тема по макросам для WORD!
Автор: amnil
Дата сообщения: 12.04.2007 22:17
ДА.....а препод сказал по VBA-)))
можно еще вопросик...можешь подсказать как это хоть делать...
Автор: SERGE_BLIZNUK
Дата сообщения: 13.04.2007 08:21
amnil
Цитата:
а препод сказал по VBA
VBA - Basic, он же разный... Вы бы уточнили у препода или у других студентов, в ЧЁМ Вам нужно сделать данную работу. Или, методичку попробуйте почитать... ;-))
ну в Word/Excel "Редактор Visual Basic" открывается через меню "Макрос" или Alt-F11
если не выясните, что конкретно Вам нужно, то я бы рекомендовал это сделать макросом в Excel - топик Excel VBA (там проще и нагляднее задать ваши исходные данные и отобразить результат).

p.s. кстати, господа, буду очень признателен, если кто-то приведёт пример макроса на VBA для Word, который:
1) считает две числовые переменные, заданные на листе документа Word
2) что нибудь с ними сделает (ну, например, перемножит) и результат поместит в документ в определённое место.
Это возможно?
Автор: jONES1979
Дата сообщения: 13.04.2007 08:42
SERGE_BLIZNUK
как раз вчера смотрел хелп по "полям", тем что вставляются по ctrl+F9, а по Alt+F9 делают своё визибл/инвизибл. Вроде они поддерживают базовые вычисления и даже инструкции типа if можно в теле "поля" прописать...
Сейчас занимаюсь практическими изысканиями
Автор: SERGE_BLIZNUK
Дата сообщения: 13.04.2007 09:31
jONES1979

Цитата:
как раз вчера смотрел хелп по "полям", тем что вставляются по ctrl+F9, а по Alt+F9 делают своё визибл/инвизибл.

ну, там точно можно вычислять (тут был пример получения последнего числа месяца).
Но я спрашивал, как к этим полям (или к другим элементам - например, к ячейке таблицы!) можно обратиться из макроса на VBA...
Автор: jONES1979
Дата сообщения: 13.04.2007 10:06
SERGE_BLIZNUK по имени! не удивлен?
ну то есть как обычно в ворде, смотри его объектную модель.
вот к примеру вывод "кодов" всех полей


Код:
Public Sub ShowFields()
Dim wa As Application
Dim wd As Document
Dim curF As Field

Set wa = Application
Set wd = ActiveDocument

For Each curF In wd.Fields
Debug.Print curF.Code
Next
End Sub
Автор: sadmn
Дата сообщения: 13.04.2007 20:19
Подскажите, есть ли решение:
создаю новый файл, в нём пишу макрос, назначаю его кнопочке на панели.
И макрос, и панель с кнопкой сохраняются в данном файле. Сам файл сохраняется как шаблон в папке
C:\Program Files\Microsoft Office\OFFICE11\STARTUP

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

Можно ли сделать так, чтобы выбранная безопасность касаемо макросов не распространялась на файлы, находящиеся в вышеназванной папке? Общий уровень менять не хотелось бы.

Заранее спасибо.
Автор: apexfmm
Дата сообщения: 14.04.2007 09:05
sadmn


Цитата:
Общий уровень менять не хотелось бы.

Отключи совершенно спокойно. За последние 5 лет макровирус в документах WORD видел 1 раз, да и то не из сети, а принесенный ламером на дискете
Автор: sadmn
Дата сообщения: 14.04.2007 11:05
apexfmm
Проблема не в макровирусах, а просто в желании узнать, когда открываю документ с макросами - что автор к ним ещё какой-то "прибамбас" сделал ))

В настройках безопасности есть "Надёжные издатели" - нельзя ли самому себе выписать бессрочный сертификат?

Пока ограничился редактированием Normal.dot - в него можно хоть что добавить и никто слова не скажет )
Автор: AndVGri
Дата сообщения: 16.04.2007 09:33
sadmn
Прикрепии к шаблону цифровой сертификат VBA, генератор его входит в Office. Одни раз ответишь, что доверяешь сам себе и далее вопросов не будет (Правда, сам не делал подобного только читал, так что совет требует доизучения)
Автор: sadmn
Дата сообщения: 17.04.2007 14:05
AndVGri
Спасибо за указание, в какую сторону двигаться!
Именно это я сначала и хотел сделать, просто не знал как ))
Автор: slech
Дата сообщения: 03.05.2007 16:50
Всем привет.

Есть такая программа
1.Dekart Secrets Keeper - платная
и
2.AxCrypt - бесплатная

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

Заранее спасибо.
Автор: AndVGri
Дата сообщения: 03.05.2007 17:49
slech
Х-м, а как делает бесплатная, в плане

Цитата:
сохранить документ и зашифровать и открыть

А так чтобы запустить бесплатную кнопочкой, добавляешь кнопку и навешиваешь на неё следующий макрос
Public Sub RunAxCrypt()
Dim pShell As Object

Set pShell = CreateObject("WScript.Shell")
pShell.Run("d:\path\AxCrypt.exe")
End Sub

Автор: slech
Дата сообщения: 03.05.2007 20:36
AndVGri
невыходит чёто
вот рисунки 1 2
Автор: SERGE_BLIZNUK
Дата сообщения: 03.05.2007 21:35
slech
извините, что влезу не в свой разговор.
1) у вас оба рисунка 1 и 2 - одна и та же ссылка (т.е. рисунок один)
2) ошибка при выполнении строчки pShell.Run("d:\path\AxCrypt.exe")
надеюсь, что вы вместо "d:\path\" написали правильный путь к вашей AxCrypt.exe?..

Автор: popkov
Дата сообщения: 05.05.2007 08:36
Хочу написать макрос, автоматически удаляющий в текущем документе коды всех полей, созданных программой EndNote.
Нашёл в Интернете клёвый пример такого макроса, модифицировал его, чтобы он искал коды только полей типа wdFieldAddin и выполнял для них команду Unlink. Работает замечательно, но почему-то не удаляет поля EndNote, расположенные в сносках внизу страницы.
Коды этих полей, так же как и коды полей в основном тексте, начинаются с

Цитата:
{ADDIN EN.CITE

Вот код макроса:

Код: Sub RemoveAddin_FieldCodes ()
Dim doc As Document
Dim fld As Field
Set doc = ActiveDocument
For Each fld In doc.Fields
fld.Select
If fld.Type = wdFieldAddin Then
fld.Unlink
End If
Next
Set fld = Nothing
Set doc = Nothing
End Sub
Автор: popkov
Дата сообщения: 05.05.2007 11:30
Этот макрос удаляет коды полей типа ADDIN, расположенных: в основном тексте (в т.ч. рамках и таблицах), сносках (концевых и внизу страницы), надписях и сгруппированных надписях (расположенных на полотне или вне его).

[more=Вот получившийся код:]

Код: Sub RemoveAddin_FieldCodes()
nResult = VBA.Interaction.MsgBox("Вы уверены, хотите удалить все коды полей типа ADDIN?", vbOKCancel, "Действие необратимо!")
If nResult = vbOK Then
Dim doc As Document
Dim fld As Field
Dim ftnt As Footnote
Dim endnt As Endnote
Dim shp As Shape
Dim shp2 As Shape
Dim shp3 As Shape
Set doc = ActiveDocument
ActiveDocument.ActiveWindow.View.ShowFieldCodes = False
For Each fld In doc.Fields
' fld.Result.Select
If fld.Type = wdFieldAddin Then
fld.Unlink
End If
Next fld
For Each ftnt In doc.Footnotes
For Each fld In ftnt.Range.Fields
' fld.Result.Select
If fld.Type = wdFieldAddin Then
fld.Unlink
End If
Next fld
Next ftnt
For Each endnt In doc.Endnotes
For Each fld In endnt.Range.Fields
' fld.Result.Select
If fld.Type = wdFieldAddin Then
fld.Unlink
End If
Next fld
Next endnt
For Each shp In doc.Shapes
If shp.Type = msoTextBox Then
For Each fld In shp.TextFrame.TextRange.Fields
' fld.Result.Select
If fld.Type = wdFieldAddin Then
fld.Unlink
End If
Next fld
End If
If shp.Type = msoGroup Then
For Each shp2 In shp.GroupItems
If shp2.Type = msoTextBox Then
For Each fld In shp2.TextFrame.TextRange.Fields
' fld.Result.Select
If fld.Type = wdFieldAddin Then
fld.Unlink
End If
Next fld
End If
Next shp2
End If
If shp.Type = msoCanvas Then
For Each shp2 In shp.CanvasItems
If shp2.Type = msoTextBox Then
For Each fld In shp2.TextFrame.TextRange.Fields
' fld.Result.Select
If fld.Type = wdFieldAddin Then
fld.Unlink
End If
Next fld
End If
If shp2.Type = msoGroup Then
For Each shp3 In shp2.GroupItems
If shp3.Type = msoTextBox Then
For Each fld In shp3.TextFrame.TextRange.Fields
' fld.Result.Select
If fld.Type = wdFieldAddin Then
fld.Unlink
End If
Next fld
End If
Next shp3
End If
Next shp2
End If
Next shp
Set fld = Nothing
Set ftnt = Nothing
Set doc = Nothing
Set shp = Nothing
Set shp2 = Nothing
Set shp3 = Nothing
End If
End Sub
Автор: popkov
Дата сообщения: 09.05.2007 01:11
2ALL
Подскажите, пожалуйста, а то замучался уже!
Есть ли опция Find, позволяющая отменить поиск по всему документу, ограничив его конкретным Range или, на худой конец, Selection?
Автор: AndVGri
Дата сообщения: 09.05.2007 02:59
popkov

Цитата:
Есть ли опция Find, позволяющая отменить поиск по всему документу

Собственно

Код:
Public Sub TestFind()
Dim pRange As Range

Set pRange = ActiveDocument.Range(1, 10)
If pRange.Find.Execute(FindText:="8") Then
MsgBox pRange.Find.Text
Else
MsgBox "Not Found"
End If
End Sub

Страницы: 1234567891011121314151617181920212223242526

Предыдущая тема: Кластеризация изображений


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.