143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
1

WORD tables (Autowrap стиль)

15.07.2015, 14:34. Показов 1724. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть вот такой вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
Variant vApp = CreateOleObject("Word.Application");
  vApp.OlePropertySet("Visible", true);
  Variant vVarDocs = vApp.OlePropertyGet("Documents");
  vVarDocs.OleProcedure("Add");
  Variant vDoc = vVarDocs.OleFunction("Item", 1);
  Variant vVarPars = vDoc.OlePropertyGet("Paragraphs");
  vVarPars.OleProcedure("Add");    // Добавляем параграф:
  Variant vPar = vVarPars.OleFunction("Item",1); // Работаем с первым параграфом:
  Variant vRan = vPar.OlePropertyGet("Range");
  vDoc.OlePropertyGet("Tables").OleProcedure("Add", vRan, 34, 15, 1, 1);
  Variant vTab = vDoc.OlePropertyGet("Tables").OleFunction("Item",1);
  Variant vCell = vTab.OleFunction("Cell", 1, 1);
Я использую немного другой подход, каждую функцию я обрабатываю через Autowrap:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
IDispatch *pWTables;
    {
        VARIANT result;
        VariantInit(&result);
        AutoWrap(DISPATCH_PROPERTYGET, &result, pWActiveDoc, L"Tables", 0);
        pWTables=result.pdispVal;
    }
IDispatch *pWRng;
    {
        VARIANT result;
        VariantInit(&result);
        AutoWrap(DISPATCH_PROPERTYGET, &result, pSel, L"Range", 0);
        pWRng = result.pdispVal;
    }
В общем возникла проблема в строке:
C++
1
vDoc.OlePropertyGet("Tables").OleProcedure("Add", vRan, 34, 15, 1, 1);
Поидее она должна в моём варианте выглядеть примерно так:
C++
1
2
3
4
5
6
7
8
9
10
{
        VARIANT ct[2];
                ct[0].vt = VT_I4;
        ct[0].lVal = 2;
        ct[1].vt = VT_I4;
        ct[1].lVal = 4;
        AutoWrap(DISPATCH_METHOD, NULL, pWTables, L"Add", 3, pWRng , ct[0], ct[1]);
        VariantClear(&ct[0]);
        VariantClear(&ct[1]);
    }
Но не работает, и я подозреваю что из за того что pWRng в виде аргумента не правильно подаётся, т.е. по сути наверно должно быть тоже через вариант, но не понятно как это сделать..

*Кстати, как видно у меня в примере 3 аргумента, а в другом их 5, пробовал и так и так, не работает. И в интернете тоже по разному пишут, где 3 аргумента, а где 5..

Помогите плз)

Добавлено через 12 минут
Нашёл вариантный тип, но тоже не пашет..
C++
1
2
ct[0].vt = VT_DISPATCH;
ct[0].pdispVal = pWRng;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2015, 14:34
Ответы с готовыми решениями:

Vba word tables
Народ помогите с такой задачей, в доке есть таблицы, мне надо удалить из каждой таблицы по 1...

Как в Word 2013 создать программно стиль "Абзаца", а не стиль "Связанный (абзац и знак)"
Как в Word 2013 создать программно стиль "Абзаца", а не стиль "Связанный (абзац и знак)". По...

Чем отличается DataSet.Tables(0).Rows(0).item("Name") от DataSet.Tables(0).Rows(0).ItemArray(i)?
В программе неожиданно перестала работать такая строка:...

Как удалить стиль в MS Word 2013?
Доброго время суток. Столкнулся со следующей проблемой. Создал в Word 3 своих стиля и сохранил...

0
15.07.2015, 14:34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.07.2015, 14:34
Помогаю со студенческими работами здесь

MS WORD - изменить цвет текста и его стиль
Создать программный продукт средствами языка VBA в MS WORD который позволяет: 1. Менять цвет (5...

Как в Word создать свой собственный стиль оглавления?
Доброго времени суток форумчане, подскажите кто знает как в word создать свой собственный стиль...

Как узнать стиль выделенного участка текста, загруженного из Word'a ?
Здравствуйте! Подскажите как можно узнать стиль (жирный, курсив или подчеркнутый) выделенного...

Как создать стиль в программе "Word"
Как создать стиль в программе "Word" средствами VBA? Проблема При создании стиля таким...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru