При помощи простой программки пользователь нажатием правой кнопки сохраняет данные, выделенные в вордовском документе, в базу данных Access:
Public WithEvents App As Word.Application
Private Sub App_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean)
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=C:\1.mdb"
.Open
End With
rs.Open "SELECT * FROM Ranges", cn, adOpenStatic, adLockOptimistic
rs.AddNew
rs("Range") = Selection
rs.UpdateBatch
rs.Close
cn.Close
End Sub
Но этот код сохраняет исключительно текстовое содержание.
Но мне надо, чтобы сохранялся текст со всем форматированием (выделение жирным. курсивом, цветом, размером и видом шрифта и т.д.). Как это реализовать и VBA в Word,
Форматирование само по себе не сохранится. Тебе нужно получить из Word'а стиль текста, а в access'е расширить табличку...
text(текстовое поле), bold(логическое), italic(логическое), color(числовое), kegel(числовое), font(текстовое), ...и т.д.
Это подойдёт только в том случае, если выделен фрагмент текста с однородным форматированием. А если выделен выделена фраза "Петя съел Машу", в которой "Петя" написано жирным курсивом, "съел" - просто жирным, а "Машу" - просто курсивом?
В таком случае надо проверять каждое слово (или символ). Слова (символы) с одинаковым форматированием (и следующие подряд, естественно) - группируешь.
Таблица для групп текста(tbl_gr_text):
id, content, bold, italic, color, kegel, font
31, Петя, true, true, 0, 14, Arial
32, съел, true, false, 0, 14, Arial
33, Машу, false, true, 0, 14, Arial
Сводная таблица групп(tbl_groups):
id, id_groups
18, "31,32,33"
Запрос:
Select * From tbl_gr_text Where id In (Select * From tbl_groups Where id=18)
Примерно так должно выглядеть то, что ты хочешь...