powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
11 сообщений из 11, страница 1 из 1
как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
    #36830139
VLA91MIR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пришла идея: открыть ворд, вставить три экселевские таблицы. В первой таблице в ячейки А1 написать "1", во второй таблице в ячейке А1 написать "1", а в третей таблице в ячейке А1 получить сумму, сколько будет? интересует код, спасибо)
...
Рейтинг: 0 / 0
как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
    #36830216
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VLA91MIRпришла идея: открыть ворд, вставить три экселевские таблицы. В первой таблице в ячейки А1 написать "1", во второй таблице в ячейке А1 написать "1", а в третей таблице в ячейке А1 получить сумму, сколько будет? интересует код, спасибо)

а если оставить ввод данных и расчеты в екселе с формированием выходной формы в формате НТМ прямо из екселя
-с выбором произвольных столбцов
-в произвольном порядке столбцов
-вставкой пустых строк/столбцов

-результат просматривается начальством в НТМ
-распечатка вордом с автоподгонкой ширины листа
-каждая таблица с нового листа с автошапкой
-подгонка хвостика таблицы(чтобы влезла в лист) -правда вручную

второй вариант- связанный объект при вставке екселя в ворд. при этом никакой гибкости, наглядности и шапок на страницах
...
Рейтинг: 0 / 0
как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
    #36830234
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
'Reference to Microsoft Excel #.# Object Library
Sub test()
    Dim XLObj As Excel.Workbook
    Set XLObj = ActiveDocument.InlineShapes.AddOLEObject(ClassType:="Excel.Sheet.8").OLEFormat.Object
    XLObj.Worksheets( 1 ).Range("A1") = "Hello World!"
    MsgBox XLObj.Worksheets( 1 ).Range("A1")
End Sub
...
Рейтинг: 0 / 0
как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
    #36830496
VLA91MIR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KL (XL), спасибо за ответ, но у меня выскакивает такое сообщение:
Compile error: User-defined type not defined
...
Рейтинг: 0 / 0
как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
    #36830618
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VLA91MIRKL (XL), спасибо за ответ, но у меня выскакивает такое сообщение:
Compile error: User-defined type not defined
В начале кода есть комментарий: ссылка на Microsoft Excel #.# Object Library, т.е. вам нужно установить ссылку на соответствующую библиотеку в Редаторе VBE в меню Сервис>Ссылки...

Но вообще должен предупредить о том, что впоследствии будет как минимум 3 проблемы:

1. в VBA длч Word, похоже, нет метода для выхода из режима редактирования OLEObjects, т.ч. вероятно придется использовать SendKeys по окончании кода, а "сие не есть хорошо"
2. все редактирование будет происходить на глазах у пользователя со скаканием изображения по той же причине
3. у меня метод AddOLEObject создает скрытую инстанцию Excel, и процесс не завершается по окончании исполнения кода, а "сие есть просто дизастр" :-)

Код: plaintext
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.
'Reference to Microsoft Excel #.# Object Library
Sub test()
    Dim XLWb As Excel.Workbook
    
    Application.ScreenUpdating = False
    Set XLWb = ActiveDocument.InlineShapes.AddOLEObject( _
        ClassType:="Excel.Sheet.8").OLEFormat.Object
    
    With XLWb
        .Application.ScreenUpdating = False
        With .Sheets( 1 )
            .Name = "Test2"
            .Range("A1") =  1 
        End With
        With .Sheets.Add(After:=.Sheets(.Sheets.Count))
            .Name = "Test3"
            .Range("A1") =  2 
        End With
        With .Sheets.Add(After:=.Sheets(.Sheets.Count))
            .Name = "Main"
            .Range("A1").Formula = "=SUM('Test2:Test3'!A1)"
        End With
        .Application.ScreenUpdating = True
    End With
    
    SendKeys "{ESC}", True
    Selection.MoveRight
    
    Set XLWb = Nothing
    Application.ScreenUpdating = True
End Sub
...
Рейтинг: 0 / 0
как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
    #36830624
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предвижу вопрос: А почему не сделать так?

Код: plaintext
1.
2.
3.
4.
5.
6.
    With XLWb
        .Application.ScreenUpdating = False
        ...
        .Application.ScreenUpdating = True
        .Close False
        .Application.Quit
    End With

Отвечаю: на .Close выскакивает ошибка, а на .Application.Quit не реагирует
...
Рейтинг: 0 / 0
как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
    #36830640
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Положим, 3-я проблема решаема :-)

Код: plaintext
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.
'Reference to Microsoft Excel #.# Object Library
Sub test()
    Dim XLApp As Excel.Application
    Dim XLWb As Excel.Workbook
    
    Set XLWb = ActiveDocument.InlineShapes.AddOLEObject(ClassType:="Excel.Sheet" & _
        strVersion & "").OLEFormat.Object
    
    With XLWb
        .Application.ScreenUpdating = False
        With .Sheets( 1 )
            .Name = "Test2"
            .Range("A1") =  1 
        End With
        With .Sheets.Add(After:=.Sheets(.Sheets.Count))
            .Name = "Test3"
            .Range("A1") =  2 
        End With
        With .Sheets.Add(After:=.Sheets(.Sheets.Count))
            .Name = "Main"
            .Range("A1").Formula = "=SUM('Test2:Test3'!A1)"
        End With
        .Application.ScreenUpdating = True
    End With
    
    SendKeys "{ESC}", True
    Selection.MoveRight
    
    Set XLApp = GetObject(, "Excel.Application")
    XLApp.Workbooks(XLWb.Name).Close
    Set XLWb = Nothing
    
    If XLApp.Workbooks.Count =  0  Then
        XLApp.Quit
    End If
    Set XLApp = Nothing
End Sub
...
Рейтинг: 0 / 0
как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
    #36830641
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Жаль редактировать нельзя :-) Буду признателен если модераторы удалят предыдущий пост.

Если код запускать из окна VBE, то не там сработает SendKeys и будет ошибка с закрытием книги.

Код: plaintext
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.
'Reference to Microsoft Excel #.# Object Library
Sub test()
    Dim XLApp As Excel.Application
    Dim XLWb As Excel.Workbook
    
    Set XLWb = ActiveDocument.InlineShapes.AddOLEObject( _
            ClassType:="Excel.Sheet").OLEFormat.Object
    
    With XLWb
        .Application.ScreenUpdating = False
        With .Sheets( 1 )
            .Name = "Test2"
            .Range("A1") =  1 
        End With
        With .Sheets.Add(After:=.Sheets(.Sheets.Count))
            .Name = "Test3"
            .Range("A1") =  2 
        End With
        With .Sheets.Add(After:=.Sheets(.Sheets.Count))
            .Name = "Main"
            .Range("A1").Formula = "=SUM('Test2:Test3'!A1)"
        End With
        .Application.ScreenUpdating = True
    End With
    
    SendKeys "{ESC}", True
    Selection.MoveRight
    
    Set XLApp = GetObject(, "Excel.Application")
    XLApp.Workbooks(XLWb.Name).Close
    Set XLWb = Nothing
    
    If XLApp.Workbooks.Count =  0  Then
        XLApp.Quit
    End If
    Set XLApp = Nothing
End Sub
...
Рейтинг: 0 / 0
как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
    #36830668
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VLA91MIRпришла идея: открыть ворд, вставить три экселевские таблицы. В первой таблице в ячейки А1 написать "1", во второй таблице в ячейке А1 написать "1", а в третей таблице в ячейке А1 получить сумму, сколько будет? интересует код, спасибо)

а ведь в задании не указано

таблицы из одной книги или нескольких
...
Рейтинг: 0 / 0
как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
    #36830672
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПЕНСИОНЕРКАVLA91MIRпришла идея: открыть ворд, вставить три экселевские таблицы. В первой таблице в ячейки А1 написать "1", во второй таблице в ячейке А1 написать "1", а в третей таблице в ячейке А1 получить сумму, сколько будет? интересует код, спасибо)

а ведь в задании не указано

таблицы из одной книги или нескольких
А еще там не сказано таблицы на одном листе или на нескольких ;)

Я это сделал из спортивного интереса, а автору останется лишь решить, хочет ли он идти по этому пути, и, если да, адаптировать код по необходимости, т.к. там есть все элементы для претворения в жизнь всех трех гипотез:

1 книга - 1 лист - 3 таблицы
1 книга - 3 листа - 3 таблицы
3 книги - 3 листа - 3 таблицы
...
Рейтинг: 0 / 0
как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
    #37406576
VLA91MIR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KL (XL) большое спасибо
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / как в ворд поместить несколько таблиц экселя и производить по ним счет, программно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]