Всем Мяу! Создаем экземпляр 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 не закрывается. При попытке закрыть ручками, кричит, что в буфере большой объем данных, и не оставить ли их там? Где собака порылась? Другой час ничего придумать не могу... кросс
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
М-да...Толпа переменных, для которых не видать строк назначения им значений(shtmp, shShablon) Притом странно, что копируете Вы данные в Word (wa.Selection.Copy), а буфер очищаете из Excel(Application.CutCopyMode = False). Для DisplayAlerts в данном случае лучше все же вообще не играть: Т.к. сначала осуществляете выход из приложения, а потом пытаетесь изменить его свойство. Как Вы себе сами это представляете? Лучше уж либо так:
Код
wa.Quit 0 'закрывает приложение и все файлы без сохранения
либо так:
Код
wa.DisplayAlerts = 0
wa.Quit
Set wa = Nothing
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...