Нужен срочный help

Смысл программы экспорт данных в таблицу WordЭто функция вычисляет количество строк, которые необходимо вставить Private Function KolichestvoStrTable(KodScheta) As Integer Dim i As Integer Dim dbs As Database, rst As RecordsetSet dbs = CurrentDb Set rst = dbs.OpenRecordset('Данные для счет-фактуры') rst.MoveFirst * Do * If KodScheta = rst![Код сч-фактуры] Then i = i + 1 * rst.MoveNext * Loop Until rst.EOFSet KolichestvoStrTable = i dbs.Close End Function _______________________ Главная процедура Sub PrintScheta(frmscheta As Form_Счета) Dim objWord As Word.Application Dim i As Integer, j As Integer, k As Integer Dim KodScheta As Integer Dim objTable As Word.Table Dim rowNew As Word.Row Dim rst As Recordset Dim dbs As Database' Загружаем Word и шаблон счета Set objWord = New Word.Application objWord.Documents.Add _ Application.CurrentProject.Path & 'счет-фактура.dot' objWord.Visible = True' Добавляем информацию в места ранее помеченные закладками With objWord.ActiveDocument.Bookmarks On Error Resume Next .Item('номер_фактуры').Range.Text = frmscheta.номерсчета On Error Resume Next .Item('дата_фактуры').Range.Text = frmscheta.дата On Error Resume Next .Item('грузоотправитель').Range.Text = frmscheta.отправитель On Error Resume Next .Item('грузополучатель').Range.Text = frmscheta.получатель On Error Resume Next .Item('номер_документа').Range.Text = frmscheta.док On Error Resume Next .Item('дата_документа').Range.Text = frmscheta.датадока On Error Resume Next .Item('покупатель').Range.Text = frmscheta.Сокращение & ' ' & frmscheta.Наименование On Error Resume Next .Item('адрес').Range.Text = frmscheta.Индекс & ', ' & frmscheta.Город & ', ' & frmscheta.Адрес On Error Resume Next .Item('инн').Range.Text = frmscheta.ИНН On Error Resume Next .Item('ндс').Range.Text = frmscheta.ndc On Error Resume Next .Item('сумма').Range.Text = frmscheta.summa End WithKodScheta = frmscheta.кодсчета' Подсчет количества строк в счет-фактуреi = KolichestvoStrTable(KodScheta)' Вставка недостающих строк в счет-фактуре Set objTable = ActiveDocument.Tables(1) For j = 2 To i Set rowNew = objTable.Rows.Add(BeforeRow:=objTable.Rows(3)) Next jSet dbs = CurrentDb Set rst = dbs.OpenRecordset('Данные для счет-фактуры') rst.MoveFirst j = 3 Do If KodScheta = rst![Код сч-фактуры] Then With objTable .Cell(j, 1).Range.Text = rst![Наименование] .Cell(j, 4).Range.Text = rst![Цена_за_единицу] .Cell(j, 5).Range.Text = rst![Стоимость_без_НДС] .Cell(j, 7).Range.Text = rst![НДС] .Cell(j, 8).Range.Text = rst![Сумма НДС] .Cell(j, 9).Range.Text = rst![Стоимость_с_НДС] .Cell(j, 10).Range.Text = rst![Страна] End With j = j + 1 End Ifrst.MoveNext Loop Until rst.EOFdbs.Close Set objWord = Nothing End SubСтрочки по
1 ответ

Для начала перепишите объявление ф-ии Private Function KolichestvoStrTable(KodScheta As Integer) As IntegerВместо строки 'Set KolichestvoStrTable = i' ->KolichestvoStrTable = i 'KodScheta = frmscheta.кодсчета' -> KodScheta = CInt(frmscheta.кодсчета.Value)И по ходу пьессы: используйте вместо Integer - Long, VBA преобразует Integer и оперирует с Long А так же объявления Dim dbs As DAO.Database, rst As DAO.Recordset On Error Resume Next достаточно указать один раз