Здравствуйте. Подскажите, пожалуйста, как использовать этот код VBA на PB. Об этом нигде не написано(
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
27
28
29
30
31
32
33
34
35
| With ListGalleries(wdNumberGallery).ListTemplates(2).ListLevels(1)
.NumberFormat = "%1)"
.TrailingCharacter = wdTrailingTab
.NumberStyle = wdListNumberStyleArabic
.NumberPosition = CentimetersToPoints(0.63)
.Alignment = wdListLevelAlignLeft
.TextPosition = CentimetersToPoints(1.27)
.TabPosition = CentimetersToPoints(1.27)
.ResetOnHigher = 0
.StartAt = 1
With .Font
.Bold = wdUndefined
.Italic = wdUndefined
.StrikeThrough = wdUndefined
.Subscript = wdUndefined
.Superscript = wdUndefined
.Shadow = wdUndefined
.Outline = wdUndefined
.Emboss = wdUndefined
.Engrave = wdUndefined
.AllCaps = wdUndefined
.Hidden = wdUndefined
.Underline = wdUndefined
.Color = wdUndefined
.Size = wdUndefined
.Animation = wdUndefined
.DoubleStrikeThrough = wdUndefined
.Name = ""
End With
.LinkedStyle = ""
End With
ListGalleries(wdNumberGallery).ListTemplates(2).Name = ""
Selection.Range.ListFormat.ApplyListTemplate ListTemplate:=ListGalleries( _
wdNumberGallery).ListTemplates(2), ContinuePreviousList:=False, ApplyTo:= _
wdListApplyToWholeList, DefaultListBehavior:=wdWord10ListBehavior |
|
Добавлено через 6 часов 58 минут
Поэкспериментировав получилось следующее(оно выделено звездочками):
PureBasic |
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
| XIncludeFile "COMatePLUS.pbi"
Define WordApplication.COMateObject
Define lsg.COMateObject
inputDoc$ = "D:\Work\1.docx"
outputDoc$ = "D:\Work\2.docx"
WordApplication = COMate_CreateObject("Word.Application")
If WordApplication
If WordApplication\Invoke("Documents\Open('" + inputDoc$ + "')") = #S_OK
;*****************
lsg = WordApplication\GetObjectProperty("ListGalleries(2)\ListTemplates")
Debug lsg
;*****************
WordApplication\Invoke("ActiveDocument\SaveAs('" + outputDoc$ + "')")
;WordApplication\Invoke("Quit(0)")
Else
MessageRequester("COMate -search and replace text in word document!", "Couldn't load the document!")
EndIf
WordApplication\Release()
Else
MessageRequester("COMate -search and replace text in word document!", "Couldn't create the application object!")
EndIf |
|
Как я понял из справки, метод GetObjectProperty возвращает структуру.
И командой "ListGalleries(2)\ListTemplates" в переменную lsg заносится структура. Но как оттуда достать то что мне нужно? Не понятно.
Нет никакой нормальной инфы по библиотеке, а ей уже больше 4 лет. Всё это печально.
Как быть, товарищи профессионалы?
Пытаюсь повторить код:
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
27
28
29
| 'Основные переменные документа Word, описывающие соответственно
'приложение, документ и диапазон в документе.
Dim app As Word.Application, doc As Word.Document, rng As Word.Range
'Переменные, необходимые для работы со списками.
Dim lsg As Word.ListGallery 'Галерея шаблонов списков.
Dim lst As Word.ListTemplate 'Шаблон списка.
'Получаем доступ к приложению Word.
Set app = GetObject(, "Word.Application")
'Получаем доступ к активному документу в этом приложении.
Set doc = app.ActiveDocument
'Получаем галерею шаблонов нумерованных списков.
Set lsg = app.ListGalleries(2) 'Всего есть 3 галереи:
'1-я - маркированные списки.
'2-я - нумерованные списки.
'3-я - многоуровневые списки.
'Из множества шаблонов нумерованных списков выбираем тот,
'который с арабскими цифрами и скобкой ")".
For Each lst In lsg.ListTemplates
With lst.ListLevels(1)
If Right(.NumberFormat, 1) = ")" And .NumberStyle = 0 Then Exit For
End With
Next lst
'Получаем ссылку на диапазон всего документа.
Set rng = doc.Range
rng.Delete
'Вставляем в документ текст, к которому будет применяться список.
rng.Text = "пункт 1" & vbCrLf & "пункт 2" & vbCrLf & "пункт 3"
'Определяем формат списка с помощью шаблона lst.
rng.ListFormat.ApplyListTemplate lst |
|
Он намного проще для понимания чем в первом посте.
Код написан модератором Аксима, спасибо ему.