Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2012, 16:33   #1
K_Auditor
 
Регистрация: 02.06.2012
Сообщений: 8
По умолчанию Создание таблицы в word

Вопрос: Люди выручайте. Не могу разобраться, как при преобразовании данных из экселя в ворд (заполнение шаблона) программно реализовать таблицу с заданными параметрами в каждом из готовых документов. Гугл что-то не помогает.

Пояснение: (Макрос вытягивает данные из экселя с листа1 по наименованию предприятия создает вордовский документ и заполняет его соответствующими данными)

Дополнительно интересует (каким командами задаются границы таблицы: граничные линии, ширина колонки). Да и если не трудно ссылку на какой-нить хороший подробный источник по использованию VBA в ворде.

Спасибо

Option Explicit

Sub MakeMemos()
' Ñîçäàíèå çàìåòîê â Word ñ ïîìîùüþ àâòîìàòèçàöèè (ïîçäíåå ñâÿçûâàíèå)
Dim WordApp As Object
Dim Data As range, message As String
Dim Records As Integer, i As Integer
Dim bank As String, phone As String, address As String, responsible As String, periodstart As String, manager As String
Dim SaveAsName As String, periodend As String, client As String

' Çàïóñê Word è ñîçäàíèå îáúåêòà
Set WordApp = CreateObject("Word.Application")

' Èíôîðìàöèÿ ñ ðàáî÷åãî ëèñòà

Set Data = sheets("Лист1").range("A1")
'message = sheets("Лист1").Range("Message")

' Ïðîñìîòð çàïèñåé â Ëèñò1
Records = Application.CountA(sheets("Лист1"). range("A:A"))
For i = 2 To Records
' Îáíîâëåíèå ñîîáùåíèÿ â ñòðîêå ñîñòîÿíèÿ
Application.StatusBar = "Ñîçäàíèå ñîîáùåíèé " & i

' Addressing of variables
bank = Data.Cells(i, 1).Value
phone = Data.Cells(i, 2).Value
address = Data.Cells(i, 3).Value
client = "#####"
responsible = Data.Cells(i, 4).Value
manager = Data.Cells(2, 5).Value
periodstart = Data.Cells(2, 6).Value
periodend = Data.Cells(2, 7).Value

' Names setting
SaveAsName = ThisWorkbook.Path & "\" & bank & ".doc"

' transfering to Word
With WordApp
.documents.Add
With .Selection

..........

End With
.activedocument.SaveAs Filename:=SaveAsName
End With
Next i

' Removing
WordApp.Quit
Set WordApp = Nothing

' updating of status
Application.StatusBar = ""
MsgBox Records - 1 & " file(s) saved by the following reference " & ThisWorkbook.Path
End Sub
K_Auditor вне форума Ответить с цитированием
Старый 09.08.2012, 17:02   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Запишите в Ворде в макрос действия: создание таблицы, изменение границ и т.д.

А вообще, есть подозрение, что это все можно Слиянием в Ворде сделать, без макросов.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 09.08.2012, 17:24   #3
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

до чего ленивые авторы пошли
--структуру екселя еще можно предугалать
--формируется 1 ворд=1 строке ексель и пара ячеек из шапки

и все

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

--
простенький пример(и екселя и ворда) много даст прежде всего ЛИЧНО ВАМ

Примеров обработки закладок --десятки на всех ворд-форумах)
в первую очередь вы должны понять --что ВАМ надо получить
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 09.08.2012, 17:55   #4
K_Auditor
 
Регистрация: 02.06.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
до чего ленивые авторы пошли
--структуру екселя еще можно предугалать
--формируется 1 ворд=1 строке ексель и пара ячеек из шапки

и все

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

--
простенький пример(и екселя и ворда) много даст прежде всего ЛИЧНО ВАМ

Примеров обработки закладок --десятки на всех ворд-форумах)
в первую очередь вы должны понять --что ВАМ надо получить
Ну что ж начнем по порядку:

1) Вообще-то я не ленивый.
2) Структуру я сам сделаю, я думаю она не имеет принципиального значения для того чтобы вставить 1 таблицу в исходный код (нужна только "грамматика" команды) с остальным сам разберусь. Содержание вордовского документа я специально удалил, чтобы не перегружать программу. Документ, как видно из программного кода, создается пустой и заполняется в месте где стоит многоточие.
3) Если создается пустой документ - наверное в нем нет никаких таблиц, маркеров и прочей ерунды или я не прав?
4) Программное форматирование выполню сам если понадобится.
5) Насчет шаблона с закладками не совсем понял. В VBA MS WORD разбираюсь сегодня 2-й день без учебника. Excel в этом плане показался попроще, хотя может быть из-за того что была нормальная литература.

Обидеть никого не хотел, но как мне кажется задал конкретный вопрос. Хотя может из-за того, что я не прожженный программист, считаю все вышеописанные мелочи незначительными факторами в данной ситуации.

Вывод: Много критики - и ни одного полезного совета.

Чтож будем дальше искать тогда.
K_Auditor вне форума Ответить с цитированием
Старый 09.08.2012, 17:57   #5
K_Auditor
 
Регистрация: 02.06.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Запишите в Ворде в макрос действия: создание таблицы, изменение границ и т.д.

А вообще, есть подозрение, что это все можно Слиянием в Ворде сделать, без макросов.
Спасибо за совет. Слияние вещь - хорошая, но все-таки как этап своего обучения - я хотел реализовать это с помощью VBA. Recordom попробую.
K_Auditor вне форума Ответить с цитированием
Старый 09.08.2012, 22:24   #6
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,079
По умолчанию

это немного не тот пример, что я искала ---но работает
немного подогнала синтаксис под vba
не забудьте ссылку на ворд
Код:
Private Sub Button1_Click()
'ByVal sender As System.Object,       ByVal e As System.EventArgs) Handles Button1.Click

        Dim oWord As Word.Application
        Dim oDoc As Word.Document
        Dim oTable As Word.Table
        Dim oPara1 As Word.Paragraph, oPara2 As Word.Paragraph
        Dim oPara3 As Word.Paragraph, oPara4 As Word.Paragraph
        Dim oRng As Word.Range
        Dim oShape As Word.InlineShape
        Dim oChart As Object
        Dim Pos As Double

        'Start Word and open the document template.
        Set oWord = CreateObject("Word.Application")
        oWord.Visible = True
        Set oDoc = oWord.Documents.Add

        'Insert a paragraph at the beginning of the document.
        Set oPara1 = oDoc.Content.Paragraphs.Add
        oPara1.Range.Text = "Heading 1"
        oPara1.Range.Font.Bold = True
        oPara1.Format.SpaceAfter = 24    '24 pt spacing after paragraph.
        'oPara1.Range.InsertParagraphAfter()

        'Insert a paragraph at the end of the document.
        '** \endofdoc is a predefined bookmark.
        Set oPara2 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
        oPara2.Range.Text = "Heading 2"
        oPara2.Format.SpaceAfter = 6
        'oPara2.Range.InsertParagraphAfter()

        'Insert another paragraph.
        Set oPara3 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
        oPara3.Range.Text = "This is a sentence of normal text. Now here is a table:"
        oPara3.Range.Font.Bold = False
        oPara3.Format.SpaceAfter = 24
        'oPara3.Range.InsertParagraphAfter()

        'Insert a 3 x 5 table, fill it with data, and make the first row
        'bold and italic.
        Dim r As Integer, c As Integer
        Set oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\endofdoc").Range, 3, 5)
        oTable.Range.ParagraphFormat.SpaceAfter = 6
        For r = 1 To 3
            For c = 1 To 5
                oTable.Cell(r, c).Range.Text = "r" & r & "c" & c
            Next
        Next
        oTable.Rows.Item(1).Range.Font.Bold = True
        oTable.Rows.Item(1).Range.Font.Italic = True

        'Add some text after the table.
        'oTable.Range.InsertParagraphAfter()
        Set oPara4 = oDoc.Content.Paragraphs.Add(oDoc.Bookmarks.Item("\endofdoc").Range)
        'oPara4.Range.InsertParagraphBefore()
        oPara4.Range.Text = "And here's another table:"
        oPara4.Format.SpaceAfter = 24
        'oPara4.Range.InsertParagraphAfter()

        'Insert a 5 x 2 table, fill it with data, and change the column widths.
        Set oTable = oDoc.Tables.Add(oDoc.Bookmarks.Item("\endofdoc").Range, 5, 2)
        oTable.Range.ParagraphFormat.SpaceAfter = 6
        For r = 1 To 5
            For c = 1 To 2
                oTable.Cell(r, c).Range.Text = "r" & r & "c" & c
            Next
        Next
        oTable.Columns.Item(1).Width = oWord.InchesToPoints(2)   'Change width of columns 1 & 2
        oTable.Columns.Item(2).Width = oWord.InchesToPoints(3)

        'Keep inserting text. When you get to 7 inches from top of the
        'document, insert a hard page break.
        Pos = oWord.InchesToPoints(7)
        'oDoc.Bookmarks.Item("\endofdoc").Range.InsertParagraphAfter()
        Do
            Set oRng = oDoc.Bookmarks.Item("\endofdoc").Range
            oRng.ParagraphFormat.SpaceAfter = 6
            oRng.InsertAfter ("A line of text")
        '    oRng.InsertParagraphAfter()
        Loop While Pos >= oRng.Information(Word.WdInformation.wdVerticalPositionRelativeToPage)
        oRng.Collapse (Word.WdCollapseDirection.wdCollapseEnd)
        oRng.InsertBreak (Word.WdBreakType.wdPageBreak)
        oRng.Collapse (Word.WdCollapseDirection.wdCollapseEnd)
        oRng.InsertAfter ("We're now on page 2. Here's my chart:")
        'oRng.InsertParagraphAfter()

        'Insert a chart and change the chart.
        Set oShape = oDoc.Bookmarks.Item("\endofdoc").Range.InlineShapes.AddOLEObject( _
            ClassType:="MSGraph.Chart.8", FileName:="", LinkToFile:=False, DisplayAsIcon:=False)
        Set oChart = oShape.OLEFormat.Object
        oChart.charttype = 4 'xlLine = 4
        ''oChart.Application.Update()
        'oChart.Application.Quit()
        'If desired, you can proceed from here using the Microsoft Graph
        'Object model on the oChart object to make additional changes to the
        'chart.
        oShape.Width = oWord.InchesToPoints(6.25)
        oShape.Height = oWord.InchesToPoints(3.57)

        'Add text after the chart.
        Set oRng = oDoc.Bookmarks.Item("\endofdoc").Range
        ''oRng.InsertParagraphAfter()
        oRng.InsertAfter ("THE END.")

        'All done. Close this form.
        ''Me.Close()

    End Sub
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблицы в Word a_n_n_a Общие вопросы Delphi 3 19.07.2011 02:59
Таблицы в Word RazorBritva Софт 2 17.09.2010 14:42
MS Word таблицы Chudo4258 Помощь студентам 2 18.05.2010 07:26
Как вычислять значения вне таблицы WORD, с использованием данных из таблицы WORD prikolist Microsoft Office Word 6 21.11.2008 13:17
ТАблицы в WORD kirya_82 Microsoft Office Word 5 01.03.2007 11:44