Страницы: 1
RSS
Закрыть Word после копирования
 
Всем Мяу!
Создаем экземпляр Word, поработали, все скопировали, в Excel вставили, осталось малое - убить Word.
Код
Sub t()
    Set wa = CreateObject("Word.Application")
    ' скопировали , вставили...
    ' осталось закрыть Word
    On Error GoTo 0
    '            wa.CutCopyMode = False
    wa.DisplayAlerts = False
    wa.Quit
    wa.DisplayAlerts = True
    Set wa = Nothing

End Sub

А не тут то и было. Word убиваться не желает.
И ошибки нет, и Word не закрывается.
При попытке закрыть ручками, кричит, что в буфере большой объем данных, и не оставить ли их там?
Где собака порылась?
Другой час ничего придумать не могу...
кросс
Изменено: RAN - 13.10.2014 17:58:34
 
а собственно почему документ не создали ?
Вам даже при таком коде данные вставит некуда, так как документ не создан, загружен только application
Изменено: B.Key - 13.10.2014 18:28:35
 
wa.document add....
 
Создал и уже убил в цикле

         
Код
 Application.CutCopyMode = False
            wd.Close False
            Set wd = Nothing
 
приведите полный код создания докумена и как вы его закрыватете
 
Код
Sub q()
    Dim arr
    Application.ScreenUpdating = False
    Set wa = CreateObject("Word.Application" ) 
    wa.Visible = True
    foldPath = ThisWorkbook.Path & "\"
    fPath = Dir(foldPath)
    On Error Resume Next
    Do While fPath <> ""
        If fPath Like "*.doc*" Then
            Set wd = wa.Documents.Open(foldPath & fPath)
            wa.Selection.WholeStory
            wa.Selection.Copy
            With shtmp
                .Activate
                .Range("A1"  )  .Select
                '               .UsedRange.Clear
                .Columns("A:F"  )  .Clear
                .Columns("A:F"  )  .NumberFormat = "@"
                .PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:= _
                              False, NoHTMLFormatting:=True
' Код VBA ............
            End With
            Application.CutCopyMode = False
            wd.Close False
            Set wd = Nothing
            With shSablon
   'Код VBA .............
            End With
        End If
        fPath = Dir
    Loop
    With shSablon
'Код VBA .................
    End With

' дальше спупор

    On Error GoTo 0
    '            wa.CutCopyMode = False
    wa.DisplayAlerts = False
    wa.Quit
    wa.DisplayAlerts = True
    Set wa = Nothing

End Sub
 
я думаю скорее всего документ в цикле не закрылся и так как стоит пропуск ошибок вы его и не видитите
msgbox wa.Documents.count  перед закрытием аппликейшена должен выдать 0
 
Цитата
B.Key пишет: должен выдать 0
И выдал 0!
 
On Error Resume Next...... и ошибок нет?
 
М-да...Толпа переменных, для которых не видать строк назначения им значений(shtmp, shShablon)
Притом странно, что копируете Вы данные в Word (wa.Selection.Copy), а буфер очищаете из Excel(Application.CutCopyMode = False).
Для DisplayAlerts в данном случае лучше все же вообще не играть:
Т.к. сначала осуществляете выход из приложения, а потом пытаетесь изменить его свойство. Как Вы себе сами это представляете?
Лучше уж либо так:
Код
wa.Quit 0 'закрывает приложение и все файлы без сохранения
либо так:
Код
wa.DisplayAlerts = 0
wa.Quit
Set wa = Nothing
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
а если все убрать?

Код
Sub t()
    Set wa = CreateObject("Word.Application")
    
   Set wd = wa.documents.Add
  wd.Close False
    wa.Quit
    Set wa = Nothing
 
End Sub
 
Изменено: B.Key - 13.10.2014 18:57:46
 
Уряяяя!
Код
      wa.Quit False
    Set wa = Nothing
так пошло.
Затупил жуткостно...

PS shtmp, shShablon - codeNames

Всем спасибо.
Изменено: RAN - 13.10.2014 19:59:10
 
Цитата
B.Key пишет: On Error Resume Next...... и ошибок нет?
Код
On Error GoTo 0
и нет.
 
Не кошерное кошачье это дело - с Word работать)) То ли дело Excel!
Страницы: 1
Читают тему
Наверх