Вставка текста в Word - VB
Формулировка задачи:
Подскажите пожалуйста, как в готовый документ Word вставлять в определенные места из VB-программы текст.
Решение задачи: «Вставка текста в Word»
textual
Листинг программы
Option Explicit
Dim DIC As Scripting.Dictionary
Private mvarНомерСделки As Long 'local copy
Private mvarНаценка As Double 'local copy
Private mvarПериод As Integer 'local copy
Private mvarДата As String 'local copy
Private mvarДатаВыплат As Date 'local copy
Private mvarМагазин As String 'local copy
Private mvarГород As String 'local copy
Private mvarИмяПок As String 'local copy
Private mvarДокПок As String 'local copy
Private mvarПропПок As String 'local copy
Private mvarАдресПок As String 'local copy
Private mvarИмяПор As String 'local copy
Private mvarДокПор As String 'local copy
Private mvarПропПор As String 'local copy
Private mvarАдресПор As String 'local copy
Private mvarДокумент As Object 'local copy
Private mvarПерВзносПроц As Integer 'local copy
Private mvarКОП As Integer 'local copy
Public Товар As колТовар
'это общие по документу
Public Property Set Документ(ByVal vData As Object)
Set mvarДокумент = vData
End Property
Public Property Get Документ() As Object
Set Документ = mvarДокумент
End Property
Public Property Let Город(ByVal vData As String)
mvarГород = vData
End Property
Public Property Get Город() As String
Город = mvarГород
End Property
Public Property Let Дата(ByVal vData As String)
mvarДата = vData
End Property
Public Property Get Дата() As String
Дата = mvarДата
End Property
Public Property Let Магазин(ByVal vData As String)
mvarМагазин = vData
End Property
Public Property Get Магазин() As String
Магазин = mvarМагазин
End Property
Public Property Let КОП(ByVal vData As Integer)
mvarКОП = vData
End Property
Public Property Get КОП() As Integer
КОП = mvarКОП
End Property
Public Property Let НомерСделки(ByVal vData As Long)
mvarНомерСделки = vData
End Property
Public Property Get НомерСделки() As Long
НомерСделки = mvarНомерСделки
End Property
'Это общие по Клиентам, покупатель и поручитель
Public Property Let ИмяПок(ByVal vData As String)
mvarИмяПок = vData
End Property
Public Property Get ИмяПок() As String
ИмяПок = mvarИмяПок
End Property
Public Property Get КрИмяПок() As String
КрИмяПок = ФИО(ИмяПок)
End Property
Public Property Get КрИмяПор() As String
КрИмяПор = ФИО(ИмяПор)
End Property
Public Property Let ДокПок(ByVal vData As String)
mvarДокПок = vData
End Property
Public Property Get ДокПок() As String
ДокПок = mvarДокПок
End Property
Public Property Let ПропПок(ByVal vData As String)
mvarПропПок = vData
End Property
Public Property Get ПропПок() As String
ПропПок = mvarПропПок
End Property
Public Property Let АдресПок(ByVal vData As String)
mvarАдресПок = vData
End Property
Public Property Get АдресПок() As String
АдресПок = mvarАдресПок
End Property
Public Property Let ИмяПор(ByVal vData As String)
mvarИмяПор = vData
End Property
Public Property Get ИмяПор() As String
ИмяПор = mvarИмяПор
End Property
Public Property Let ДокПор(ByVal vData As String)
mvarДокПор = vData
End Property
Public Property Get ДокПор() As String
ДокПор = mvarДокПор
End Property
Public Property Let ПропПор(ByVal vData As String)
mvarПропПор = vData
End Property
Public Property Get ПропПор() As String
ПропПор = mvarПропПор
End Property
Public Property Let АдресПор(ByVal vData As String)
mvarАдресПор = vData
End Property
Public Property Get АдресП риод1', Item:=ПериодПроп
DIC.Add Key:='Период2', Item:=ПериодПроп
DIC.Add Key:='ПолноеИмяПокупателя1', Item:=ИмяПок
DIC.Add Key:='ПолноеИмяПокупателя2', Item:=ИмяПок
DIC.Add Key:='ПолноеИмяПокупателя3', Item:=ИмяПок
DIC.Add Key:='ПолноеИмяПоручителя1', Item:=ИмяПор
DIC.Add Key:='ПолноеИмяПоручителя2', Item:=ИмяПор
DIC.Add Key:='ПропискаПокупателя1', Item:=ПропПок
DIC.Add Key:='ПропискаПоручителя1', Item:=ПропПор
mKey = DIC.Keys
Dim i As Integer
For i = 0 To UBound(mKey)
If Документ.Bookmarks.Exists(mKey(i)) Then 'Усли есть такая закладка, то печать в нее свойство класса значение статьи словаря
If mKey(i) = 'НаценкаПроц1' Then
If Наценка = 0 Then
Документ.Bookmarks(mKey(i)).Range.Text = '1 руб.'
Else
Документ.Bookmarks(mKey(i)).Range.Text = DIC.Item(mKey(i)) & '%'
End If
Else
Документ.Bookmarks(mKey(i)).Range.Text = DIC.Item(mKey(i))
End If
End If
Next i
For i = 1 To Товар.Count
Документ.Tables(1).Rows.Add
Документ.Tables(1).Cell(i + 1, 1).Range.Text = i
Документ.Tables(1).Cell(i + 1, 2).Range.Text = Товар.Item(i).Наименование
Документ.Tables(1).Cell(i + 1, 3).Range.Text = Товар.Item(i).КолВо
Документ.Tables(1).Cell(i + 1, 4).Range.Text = ФорматЧисел(Товар.Item(i).Цена)
Документ.Tables(1).Cell(i + 1, 5).Range.Text = ФорматЧисел(Товар.Item(i).Сумма)
Next i
Документ.Tables(1).Rows.Add
Документ.Tables(1).Rows(i + 1).Borders.Enable = False
Документ.Tables(1).Rows(i).Borders.Enable = True
Документ.Tables(1).Cell(i + 1, 5).Range.Borders.Enable = True
Документ.Tables(1).Cell(i + 1, 5).Range.Font.Bold = True
Документ.Tables(1).Cell(i + 1, 5).Range.Text = ФорматЧисел(СуммаТовара)
Dim N As Double
Dim OS As Double
If Наценка = 0 Then
OS = Round((СуммаТовара + 1) - (СуммаТовара / 100 * ПерВзносПроц), КОП)
Else
OS = Round((СуммаТовара + СуммаТовара / 100 * Наценка) - (СуммаТовара / 100 * ПерВзносПроц), КОП)
End If
N = Round((OS / Период) 10, 1) * 10
For i = 1 To Период
Документ.Tables(2).Rows.Add
Документ.Tables(2).Cell(i + 1, 1).Range.Text = i + 1
Документ.Tables(2).Cell(i + 1, 2).Range.Text = DateAdd('m', i, ДатаВыплат)
If i <> Период Then
Документ.Tables(2).Cell(i + 1, 3).Range.Text = ФорматЧисел(N)
OS = OS - N
Else
Документ.Tables(2).Cell(i + 1, 3).Range.Text = ФорматЧисел(OS)
End If
Next i
Set DIC = Nothing
Exit Sub
bay:
ЛогФайл CStr(Err.Number & ' - ' & Err.Description & ' - [печать.печатьDic]')
Set DIC = Nothing
End Sub
Private Function ФорматЧисел(mVar As Variant) As Variant
On Error Resume Next
ФорматЧисел = mVar
If IsEmpty(mVar) = False Then
Dim curN As Double
curN = CDbl(mVar)
ФорматЧисел = Replace(Trim(CStr(FormatNumber(curN, 2))), Chr(ЗнакРазделенияСист()), ' - ', 1, 1)
Else
ФорматЧисел = mVar
End If
End Function
Private Function ЗнакРазделенияСист() As Integer
Dim N As Double, str As String
N = 123.2
str = Mid(CStr(N), 4, 1)
ЗнакРазделенияСист = Asc(str)
End Function
Private Function ФИО(str As String) As String
On Error GoTo bay
Dim str2 As String
Dim mVar1 As Variant
Dim str3 As String, str4 As String
Dim i As Integer
If IsEmpty(str) t;, 'восемьдесят', 'девяносто')
End If
End If
If Not (all) Then
dig = A(i) Mod 10
If dig = 0 Then
all = True
ElseIf (i = 2) And (dig <= 2) Then
sBuf = sBuf & SP & Choose(dig, 'одна тысяча', 'две тысячи')
all = False
Else
sBuf = sBuf & SP & vDigit(dig - 1)
Select Case dig
Case 1
vEnd = vTriad(0)
Case 2 To 4
vEnd = vTriad(1)
Case Else
vEnd = vTriad(2)
End Select
If Руб Then
sBuf = sBuf & SP & vEnd(i - 1)
Else
If i <> 1 Then
sBuf = sBuf & SP & vEnd(i - 1)
End If
End If
all = False
End If
End If
Else
all = False
End If
If all Then
If Руб Then
vEnd = vTriad(2)
sBuf = sBuf & SP & vEnd(i - 1)
End If
all = False
End If
Next i
If Руб Then
If A(1) = 0 Then sBuf = sBuf & SP & 'рублей'
End If
sBuf = Trim(sBuf)
Mid(sBuf, 1) = UCase(Left(sBuf, 1))
If Руб Then
If sCop <> '' Then sBuf = sBuf & SP & sCop & SP & 'коп.'
End If
Пропись = sBuf
Exit Function
bay:
ЛогФайл CStr(Err.Number & ' - ' & Err.Description & ' - [печать.пропись]')
Пропись = 'Ошибка преобразования'
End Function