165 / 104 / 30
Регистрация: 19.01.2013
Сообщений: 822
1

Запустить код VBA для создания таблицы из WORD

10.10.2017, 21:10. Показов 429. Ответов 0
Метки нет (Все метки)

Есть код:
Visual Basic
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
Public Sub CreateTables()
   Dim cat As ADOX.Catalog, tbldb As ADOX.Table, nametbl As String
   Dim ind As ADOX.Index, varind As Variant
   Dim rst As ADODB.Recordset, fld As Field, fd As FileDialog, Itemfile As Variant
   Dim filname As String, n As Integer, m As Integer, zag() As Variant
   Dim obWord As Object, obDoc As Object, obTbl As Object
 
   Set fd = Application.FileDialog(msoFileDialogFilePicker)
   If fd.Show = -1 Then
      For Each selectfile In fd.SelectedItems
         filname = selectfile
      Next
   End If
   
   ' ñîçäàíèå òàáëèöû Word
   Set obWord = New Word.Application
   Set obDoc = GetObject(filname)
   If obDoc.Tables.Count = 0 Then MsgBox "Âûáðàííûé ôàéë íå ñîäåðæèò òàáëèöû ñ äàííûìè! ", 64:  Exit Sub
   Set obTbl = obDoc.Tables(1)
   n = obTbl.Rows.Count
   m = obTbl.Columns.Count
   ReDim zag(m)
   For i = 1 To m
       zag(i) = obTbl.Cell(1, i).Range.Text       ' çàïîìèíàíèå çàãîëîâêîâ ñîëáöîâ òàáëèöû Word
       zag(i) = Left(zag(i), Len(zag(i)) - 2)
   Next i
   
  ' ñîçäàíèå òàáëèöû ÁÄ
    Set cat = New ADOX.Catalog
    Set tbldb = New Table
    Set ind = New ADOX.Index
    cat.ActiveConnection = CurrentProject.Connection
   
    nametbl = InputBox("Èìÿ òàáëèöû áàçû äàííûõ? ")
    tbldb.Name = nametbl
 
    tbldb.Columns.Append "ID", adInteger
    With tbldb.Columns("ID")                                    '  ñîçäàíèå ïîëÿ-ñ÷åò÷èêà
       .ParentCatalog = cat
       .Properties("AutoIncrement") = True
    End With
    '  ñîçäàíèå ïåðâè÷íîãî êëþ÷à
    ind.Name = "Index"
    ind.PrimaryKey = True
    ind.Unique = True
    ind.Columns.Append "ID", adInteger
    tbldb.Indexes.Append ind
 
    For i = 1 To m
         tbldb.Columns.Append zag(i), adVarWChar, 50    ' äîáàâëåíèå îñòàëüíûõ ïîëåé
    Next i
   cat.Tables.Append tbldb
   cat.Tables.Refresh
   Application.RefreshDatabaseWindow
   
   ' ñîçäàíèå Recordset è çàïîëíåíèå òàáëèöû ÁÄ
   Set rst = New ADODB.Recordset
    rst.Open nametbl, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    With obTbl
        For i = 2 To .Rows.Count
             rst.AddNew
             For j = 1 To .Columns.Count
                ' ïðè ñ÷èòûâàíèè òåêñòîâûõ äàííûõ óäàëÿþòñÿ íåïå÷àòàåìûå ñèìâîëû â êîíöå
                 rst.Fields(j) = Left(.Cell(i, j).Range.Text, Len(.Cell(i, j).Range.Text) - 2)
             Next j
             rst.Update
             rst.MoveNext
        Next i
    End With
    rst.Close
    Set rst = Nothing
    Set cat = Nothing
    Set tbldb = Nothing
    Set ind = Nothing
    Set obWord = Nothing
    Set obDoc = Nothing
    Set obTbl = Nothing
     
End Sub
Как в Access его запустить?
Спасибо всем тем, кто помог сделать мой первый запрос, но тут я тоже что-то туплю.
На форумах обсуждается только сам код VBA, а не способ его запуска.

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

В общем запускается командой:
SQL
1
SELECT CreateTables;
Создаётся таблица. И всё. Дальше всё глухо.
Пока так.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2017, 21:10
Ответы с готовыми решениями:

VBA код для создания таблицы в access из XML
Доброго дня суток. Помогите пожалуйста,необходим пример кода VBA ,для импорта xml файлов в...

VBA код для вывода всех записей из таблицы
Здравствуйте. Думаю, вопрос простейший, но, к сожалению никак не могу разобраться в вопросе. Нужно...

Vba. Таблицы в ms word
Известна дата рождения Пети. Определить дату рождения Коли, если известно, что число дней, прожитых...

Сортировка таблицы на VBA в Word
Доброго времени суток! Помогите пожалуйста с задачей. Нужно написать макрос для Word, который будет...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2017, 21:10

Вывод таблицы в Word посредством vba.
Доброго времени суток. Делаю отчет в Access кодом VBA и вывожу в вордовский документ. Подскажите...

Копирование таблицы из Excel в Word средствами VBA
Добрый день! Прошу помощь зала. Вставляю в Word таблицу из Excel методом PasteExcelTable. Задача:...

Word/VBA - Параграфы, таблицы, картинки, итд...
Господа, у меня вопрос. Ответьте пожалуйста кто знает. Есть ли в Word'е какая нибудь коллекция...

VBA Word Определить номер параграфа в ячейке таблицы
Доброго времени суток. Работаю с ячейкой таблицы в word. Задача взять из нее, например первых три...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.