Войти

Показать полную графическую версию : Помогите написать макрос в Excel, экспорт данных из Excel в Word.


E.v.g
22-06-2010, 15:40
Добрый день, помогите пожалуйста написать макрос , который бы экспортировал определенные данные из таблицы (например ячейку 3 столбца 1, столбца 3 и столбца 5, вместе с заголовками) Excel в Word в абсолютно том же формате, т.е вставлял бы в Word фаил строку из таблицы с тем же шрифтом, размером ячеек, толщиной границ таблицы и т.д. Сложность еще заключается в том, что критерием для выбора определенной строки из всего объема таблицы должен служить отмеченный напротив нужной строки флажок (элемент управления формы).
Как это приблизительно должно выглядеть показано в приложенной таблице.
Может быть у кого-нибудь есть макросы для решения похожей задачи. Сам только начинаю изучать VBA так что для мне эта задача кажется фантастически сложной.
Буду очень признателен за любую помощь.
С уважением, Евгений.

Delirium
23-06-2010, 17:18
E.v.g, как срочно необходимо сделать макрос?

E.v.g
24-06-2010, 13:54
Добрый день Delirium, oсобой спешки нет, планировал закончить таблицу к концу этого месяца.

Delirium
19-08-2010, 05:07
должен служить отмеченный напротив нужной строки флажок (элемент управления формы). »
А обязательно флажок? Почему нельзя использовать другой способ отметки, например, писать 1 или 0?

Сложность в том, что флажки никоим образом не привязаны к линиям сетки. Если, конечно, количество строк и флажков строго фиксированно, то можно каждому флагу назначить свою ячейку(через свойства объекта). Если же количество произвольно, то тут никак не получится.(ну, или, точнее, я не пойму, как это сделать :) )

Delirium
19-08-2010, 06:16
Что мы имеем:
Назначив с свойствах флажка зависимую ячейку(в нее выводится true или false, в зависимости от состояния кнопки), и написав следующий макрос, получили экспорт в Word диапазона в зависимости от состояния флажка:

Dim AppWord As Word.Application

Set AppWord = CreateObject("Word.Application")
AppWord.Visible = True

AppWord.Documents.Add

Range("A5:F5").Copy 'Копируем и вставляем заголовок с листа
AppWord.Selection.Paste

For i = 6 To 36 ' Цикл по строкам до 36-ой строки

If Cells(i, 16) = True Then '16 столбец - столбец, в котором привязаны флажки и ячейки(см. вложение)


Cells(i, 1).Copy' копируем ячейку и вставляем
AppWord.Selection.Paste


End If

Next

Application.CutCopyMode = False
Set AppWord = Nothing
После вставки кода идем в Tools - Preferences и выставляем там галку напротив Microsoft Word Object Library. Тестируем :)
Во вложении - рабочий пример.

Delirium
19-08-2010, 06:17
Столбец с состояниями можно скрыть и будет совсем чудно. В примере на флажки назначено только 5 верхних флажков. Остальные не охота было прощелкивать :)

E.v.g
19-08-2010, 11:16
Добрый день, спасибо огромное. Да наверное с 1 и 0 будет проще чем с флажками.
Единственное что, сейчас копируются выделенные ячейки только первого столбца, подскажите пожалуйста как можно расширить этот диапазон? И еще, как сделать так что бы заголовки таблицы и данные из таблицы брались не из всего диапазона таблицы, а выборочно,
скажем из диапазона А:C, F:I и т.д и выводились в Word.
Заранее спасибо.

diii63
03-05-2018, 22:18
для вывода диапазона столбиков:

вместо
Cells(i, 1).Copy
поставить
Range(Cells(i, 1), Cells(i, 6)).Copy




© OSzone.net 2001-2012