ошибка при экспорте в Word (через раз)

Compositum
Дата: 05.03.2008 18:24:20
Перекидываю данные в Ворд. Через раз получаю ошибку:
Картинка с другого сайта.
код такой:
Public Function ExportToWord(Optional Mychar As String)
Dim db As DAO.Database, qd As DAO.QueryDef, rs As DAO.Recordset
...
If rs.RecordCount = 0 Then GoTo lab1
    Dim appWord As Word.Application
    Set appWord = CreateObject("Word.Application")
    Dim doc As Word.Document
    Set doc = appWord.Documents.Add("c:\template.dot")
    appWord.Visible = True
    rs.MoveFirst
    Do Until rs.EOF
    With appWord
    .Selection.Style = ActiveDocument.Styles("headline")
    .Selection.TypeText Text:=rs!ucaseCompany
    Debug.Print rs!ucaseCompany
    .Selection.TypeParagraph
    End With
    rs.MoveNext
    Loop
    Set doc = Nothing
    Set appWord = Nothing
    
lab1:
   rs.Close
   qd.Close
   db.Close
   Set rs = Nothing
   Set qd = Nothing
   Set db = Nothing
End Function
подскажите, пожалуйста, что не так?
бухой бык
Дата: 05.03.2008 18:28:26
а на какой строчке ошибка-то?
Compositum
Дата: 05.03.2008 18:33:42
бухой бык
а на какой строчке ошибка-то?

на строке
    .Selection.Style = ActiveDocument.Styles("headline")
mds_world
Дата: 05.03.2008 18:41:18
Compositum,
в тексте есть On Error с уходом на метку lab1?
бухой бык
Дата: 05.03.2008 19:08:31
mds_world
Compositum,
в тексте есть On Error с уходом на метку lab1?
Это может вызывать именно такую ошибку?
mds_world
Дата: 05.03.2008 19:44:26
бухой бык
mds_world
Compositum,
в тексте есть On Error с уходом на метку lab1?
Это может вызывать именно такую ошибку?
Да, если во время выполнения возникнет ошибка и программа передаст управление на метку без очистки appWord.
Compositum
Дата: 05.03.2008 20:07:00
mds_world
Compositum,
в тексте есть On Error с уходом на метку lab1?

нет, такого нету. на метку иду если записей в выборке ноль.
Compositum
Дата: 05.03.2008 20:24:51
похожая ситуация у меня была при экспорте в ексель.
топик здесь
так же ошибка через раз выскакивала. но там я изменил код с
Set objExcel = New Excel.Application
на
Set objExcel = Excel.Application
и ошибка исчезла.
здесь же я использую
Set appWord = CreateObject("Word.Application")
но изменить на это
Set appWord = Word.Application
нельзя, т.к. получаю ошибку в этой строке.
не могу пока понять в чем дело...
Compositum
Дата: 05.03.2008 20:46:54
нашел причину ошибки:
заменил строку
.Selection.Style = ActiveDocument.Styles("headline")
на строку
.Selection.Style = doc.Styles("headline")
ошибка исчезла.
думаю, что проблема в том, что объект, созданный в предидущем вызове остается в памяти, и, не смотря на
Set doc = Nothing
каким-то образом влияет на указание активного документа приложения. Если я уточняю (т.е. указываю конкретный объект, как я сделал в исправленном варианте) ошибка пропадает.
В C# я могу вызвать сборщик мусора, который подчистит мой объект (хотя в этом, в общем-то и необходимости нет, т.к. переменная, ссылающаяся на объект живет в рамках своего блока кода).
А в VBA как решается такая задача? Как видим,
Set doc = Nothing
не помогает...
???
Активист
Дата: 05.03.2008 21:11:31
А если перед ActiveDocument.Styles("headline") поставить точку?