Импорт из Word в SQL

   Недавно по работе потребовалось перегнать данные из многостраничного документа WORD с множеством таблиц, в MS SQL базу данных. Причем необходимо было перегнать не все данные, а только те строки, в которых в первом столбце встречались коды включающие в себя точку. Например такие 1.2, 1.23.1, 3.32.45 и т.д., т.е. необходимо было не просто скопировать, но и распарсить. Немного поразмыслив и полазив по интернет форумам родился совсем короткий скрипт, который всю эту рутинную работу сделал в секунды.

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

Sub ParseTable()
    Dim oTbl As Table
    Dim oRow As Row
    Dim sqlstr As String
   
   Dim Conn As New ADODB.Connection
Conn.ConnectionString = "Provider=SQLOLEDB;Data Source=SRV;database=tbl;uid=login;pwd=pass;"
sqlstr = "INSERT INTO table_test (kod, nam, per) VALUES ( '" & Left(oRow.Cells(1).Range.Text, Len(oRow.Cells(1).Range.Text) - 2) & "', '" & Left(oRow.Cells(2).Range.Text, Len(oRow.Cells(2).Range.Text) - 2) & "', '" & Left(oRow.Cells(3).Range.Text, Len(oRow.Cells(3).Range.Text) - 2) & "')"
Conn.Open
    For Each oTbl In ThisDocument.Tables
        For Each oRow In oTbl.Rows
            If oRow.Cells(1).Range.Text Like "*#.#*" Then
            Conn.Execute sqlstr
            End If
        Next
    Next oTbl
Conn.Close
End Sub

Единственно, для того чтобы работал данный скрипт необходимо добавить в References библиотеку:

Microsoft ActiveX Data Objects 2.8 Library

Комментарии закрыты