С Новым годом! Форум программистов, компьютерный форум, киберфорум
Pure Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
35 / 35 / 15
Регистрация: 06.01.2014
Сообщений: 707
1

Как использовать этот код VBA на PB?

29.08.2014, 20:02. Показов 1822. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Подскажите, пожалуйста, как использовать этот код 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
Он намного проще для понимания чем в первом посте.
Код написан модератором Аксима, спасибо ему.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Блог
29.08.2014, 20:02
Ответы с готовыми решениями:

Как использовать этот код?
Привет всем новичкам и экспертам в С++ (экспертам в особенности :p )! Я совсем не разбираюсь в С++,...

как этот код перевести в VBA ?
program arctangens; Var x, xn, xk, dx, y,znam, slag, e, k :real; znak, mn:integer; begin...

Как этот код перевести в VBA ?
program aaa; Var a:array of integer; {ИсХоДнЫй МаСсИв} s:arrayof integer; {МаСсИв ХаРаКтЕрИсТиК...

как этот код из паскаля перевести в VBA ?
program zadacha2; Type mas=array of integer; Var a:mas ; j, sum,k, fl: integer; function...

0
29.08.2014, 20:02
cpp_developer
Эксперт
20123 / 5690 / 417
Регистрация: 09.04.2010
Сообщений: 12,546
Блог
29.08.2014, 20:02
Помогаю со студенческими работами здесь

Где и как использовать этот код в Hugs 98 Делаю лабу
Вот у меня есть лаба 1 по Haskell делаю её. Не знаю у кого спросить. Читаю и немножко дошел до...

Как правильно использовать класс на VBA, чтобы не повторять один и тот же код?
Люди добры подскажите правильно использовать класс на VBA что бы не повторять один и тот же...

Очередной код с возможным вирусом. Как думаете этот код опасен?
<?php // no direct access defined('_JEXEC') or die('Restricted access'); ?> <ul...

Как перевести этот код на код Delphi
uses crt; const nmax=100; var a:arrayof integer; n,i,k,j,x:integer; begin clrscr;...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru