Создать таблицу в Word и заполнить её данными из массива - VBA

Узнай цену своей работы

Формулировка задачи:

Добрый день, товарищи! Возникла задача - не могу решить.. Прошу помощи.. Есть массив arr(6;i) - 7 столбцов, и минимум 1 строка, максимум 1000. Эти данные я обрабатываю в Excel. Теперь мне нужно данные из этого массива вывести в таблицу в Word. Как лучше это сделать? Как записывать данные в конкретную таблицу? Сейчас я вывожу данные из другого массива в Word через текстовые поля и закладки

Решение задачи: «Создать таблицу в Word и заполнить её данными из массива»

textual
Листинг программы
  1. Public Sub zBookmarks()
  2. Dim arr As Variant, x1, x1k, nstr
  3. Dim C1, C2, C3, C4, C5, C6, C7 As String
  4. Dim path
  5. Dim wd As Object
  6. 'Word.Application
  7. Dim doc As Object
  8. 'Word.Document
  9. Dim tbl As Object
  10. 'Word.Table
  11. '------------------------------------------------'
  12. arr = Worksheets("Лист1").Range("A1:G7").Value   ' Для примера
  13. '------------------------------------------------'
  14. x1 = LBound(arr, 1)
  15. x1k = UBound(arr, 1) - 1
  16.  
  17. path = ThisWorkbook.path
  18. Set wd = CreateObject("Word.Application")
  19. wd.Visible = True 'Поменять потом на False
  20. wd.Documents.Open Filename:=path & "" & "WORD.dotm"
  21. ''wd.Documents.Open Filename:=path & "" & "EXRD111.dotm"
  22. Set doc = wd.ActiveDocument
  23. Set tbl = doc.tables(1)
  24. x1 = 0
  25. Do While x1 < x1k
  26. x1 = x1 + 1
  27. Debug.Print x1;
  28. If x1 > 1 Then
  29.  
  30. tbl.Cell(x1 + 2, 1).Select
  31. wd.Selection.InsertRowsBelow 1
  32. End If
  33. With tbl
  34. ''    .Cells(x1 + 2, 1).Range.Text = arr(x1, 1)
  35.  
  36. tbl.Cell(x1 + 2, 1).Range = arr(x1, 1)
  37. tbl.Cell(x1 + 2, 2).Range = arr(x1, 2)
  38. tbl.Cell(x1 + 2, 3).Range = arr(x1, 3)
  39. tbl.Cell(x1 + 2, 4).Range = arr(x1, 4)
  40. tbl.Cell(x1 + 2, 5).Range = arr(x1, 5)
  41. tbl.Cell(x1 + 2, 6).Range = arr(x1, 6)
  42. tbl.Cell(x1 + 2, 7).Range = arr(x1, 7)
  43. End With
  44.  
  45. Loop
  46. wd.ActiveDocument.SaveAs2 Filename:=path & "" & "EXRD1.doc"
  47. wd.ActiveDocument.Close
  48. wd.Quit
  49. Set wd = Nothing
  50. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут