powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос эспорта Excel в Word
10 сообщений из 10, страница 1 из 1
Макрос эспорта Excel в Word
    #37970363
The_Ivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток, нужна помощь в написании макроса!!!
В двух словах: в Excel есть большая таблица,в Excel параметры страницы сделаны так, чтоб колонки и строки не выходили за границы листа. Нужно экспортировать в Word так, чтоб параметры листа сохранились, и не приходилось танцевать с бубном, и подгонять таблицу, чтоб ничего не вылезало.
Специальная вставка не подойдет!

Пример таблицы и того, что хочется получить в итого прикрепляю.
...
Рейтинг: 0 / 0
Макрос эспорта Excel в Word
    #37970371
The_Ivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Макрос эспорта Excel в Word
    #37970488
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> The_Ivan,
> {skipped}
> Специальная вставка не подойдет!

Почему? Может Вы её готовить не умеете?
Со специальной вставкой всего-то пара копи-пастов + ещё некоторые "телодвижения"...
...
Рейтинг: 0 / 0
Макрос эспорта Excel в Word
    #37970570
The_Ivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища,

Пользоваться специальной вставкой я умею, просто ею пользоваться не так уже и удобно при больших таблицах, и при частых их изменениях в размере!
...
Рейтинг: 0 / 0
Макрос эспорта Excel в Word
    #37970572
The_Ivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буду признателен, если кто-то поможет по сути вопроса.
...
Рейтинг: 0 / 0
Макрос эспорта Excel в Word
    #37970600
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> The_Ivan
> Пользоваться специальной вставкой я умею, просто ею пользоваться не так уже и удобно при больших таблицах

Таблица, которую Вы выложили в примере, - большая ?


ЗЫ: Я как те корейские браконьеры, - не понимаю, что за проблема была у Басервилля. почему Вы так упорно отказываетесь от специальной вставки.
При сложном форматировании source-table специальная вставка (формат HTML) наименее трудоёмкий процесс "экспорта".
Делать ли этот копипаст "вручную" или посредством "макроса" - это уже второй вопрос.
...
Рейтинг: 0 / 0
Макрос эспорта Excel в Word
    #37970611
The_Ivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища,

ну в принципе не особо, 18 страниц, но это пример, есть гораздо больше
...
Рейтинг: 0 / 0
Макрос эспорта Excel в Word
    #37970952
The_Ivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища,

Хорошо, если можно с помощью макроса сделать специальную вставку, так чтоб и параметры страницы из Excel в Word экспортировались, то пожалуйста предложите, я в ВБА не силен.
Просто в ручную это делать долго.
...
Рейтинг: 0 / 0
Макрос эспорта Excel в Word
    #37971818
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Ivan,
примерный код с комментариями. Есть баги. Возможно социум подскажет, как их обойти.

Код: vbnet
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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
Option Explicit

' =============================================================================
' копирование таблицы с первого листа данной книги в новый документ word
' обработка примера http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=971576&msg=13214591
Sub copypast()
'баг1: таблица получается не на всю ширину страницы :(
'баг2: после вставки word, собако, подбирает ширину столбцов "по содержимому"
'
    Const wdCollapseStart = 1, wdCollapseEnd = 0
    
    Dim wd As Object, doc As Object
    Dim iTmpRow As Long, s As String
    
    'создать объект word, добавить новый документ
    Set wd = CreateObject("word.application")
    Set doc = wd.documents.Add
    
    With ThisWorkbook.Worksheets(1)
        With .PageSetup
            ' *** размер страницы
            ' (!) будет работать только для форматов А3,А4
            ' (!) для остальных форматов не проверял соответствие вордовских и экселевских констант
            'xlPaperA4= 9 wdPaperA4= 7
            'xlPaperA3= 8 wdPaperA3= 6
            doc.PageSetup.PaperSize = .PaperSize - 2
            
            ' *** ориентация страницы
            'xlLandscape= 2 wdOrientLandscape= 1
            'xlPortrait=  1  wdOrientPortrait= 0
            doc.PageSetup.Orientation = .Orientation - 1
            
            ' *** поля
            doc.PageSetup.TopMargin = .TopMargin
            doc.PageSetup.BottomMargin = .BottomMargin
            doc.PageSetup.LeftMargin = .LeftMargin
            doc.PageSetup.RightMargin = .RightMargin
            
            ' *** сквозная *строка*
            ' (!) не строкИ, т.к. WORD не даст задать более одной строки в качестве заголовка
            ' (!) таблицы, если в последней есть вертикальное объединение ячеек
            '
            '    если .PrintTitleRows = "" то сквозных строк нет
            s = .PrintTitleRows
            
        End With '.PageSetup
        
        With .UsedRange
            If Len(s) > 0 Then iTmpRow = .Range(s).Row
            
            If iTmpRow > 1 Then
                'добавляем абзац в начало документа (позже пригодится)
                wd.Selection.InsertParagraphBefore
                wd.Selection.collapse wdCollapseEnd
            Else
                iTmpRow = 1
            End If
                
            'копипастим часть экселевской таблицы от "сквозной" строки до конца
            .Rows(iTmpRow & ":" & .Rows.Count).Copy
            wd.Selection.PasteExcelTable False, False, False
            
            'если в экселевской таблице есть "сквозные" строки
            'назначить первую строку вордовской таблицы её "шапкой"
            If Len(s) > 0 Then
'баг3       ' *непонятно*
            ' если устанавливать это свойство программно - не рисует шапку
            ' на каждой странице, хотя в юзерфейсе ворда флажок <Заголовки>
            ' для данной таблицы устанавливается
                doc.tables(1).Rows.HeadingFormat = True
            End If
            
            ' если "сквозная" строка в экселевской таблице не первая
            If iTmpRow > 1 Then
                'смещаем Selection в начало документа
                wd.Selection.Start = 0
                wd.Selection.collapse wdCollapseStart
            
                'копипастим "шапку" экселевской таблицы (от начала до "сквозной строки")
                .Rows("1:" & (iTmpRow - 1)).Copy
                wd.Selection.PasteExcelTable False, False, False
                
                'уменьшпем величину шрифта "буферного" абзаца
                wd.Selection.Font.Size = 1
            End If
                
        End With '.UsedRange
    End With 'ThisWorkbook.Worksheets(1)
    
    'освободить буфер обмена
    Application.CutCopyMode = False
    
    
    Set doc = Nothing
    wd.Visible = True
    Set wd = Nothing

End Sub


...
Рейтинг: 0 / 0
Макрос эспорта Excel в Word
    #37971862
The_Ivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотища,

Спасибо большое, надеюсь что кто-то поможет довести до ума
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Макрос эспорта Excel в Word
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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