Все доброй ночи!
Очень извиняюсь, что касаюсь избитой темы (наверное), но что-то я не смог найти ответа в таком форуме, хотя регулярно пользуюсь подсказками пользователей. До сей поры хватало.\
Суть вот в чем:
Я хочу из существующей таблицы Excel выдернуть отсортированные значения и вставить их в Word. Казалось бы, что может быть проще:
Sub Import2()
'
'
'
Mesyats = UserForm1.ComboBox1.Value
'Mesyats = "Ноябрь"
Dim iLastRow As Long
Excel.Sheets("123").Select
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Excel.ActiveSheet.ListObjects("Таблица 3").Range.AutoFilter Field:=1, Criteria1:=Mesyats
Excel.Range("B3:D" + Right((Str(iLastRow)), (Len(Str(iLastRow) - 1)))).Select
Excel.Selection.Copy
Excel.Sheets("123").Select
On Error GoTo ErrStartWord
Dim Wda As Word.Application
Set Wda = GetObject(, "Word.Application")
Set Wda = Nothing
'If Tasks.Exists("Microsoft Word") Then
'End If
'Word.Application.Documents.Item
Word.Documents.Open Filename:="c:\OLS Reports\Form 2.docx"
Word.Application.Activate
Word.Selection.StartOf Unit:=wdStory, Extend:=wdMove
Word.Selection.MoveDown Unit:=wdLine, Count:=9
Word.Selection.MoveLeft Unit:=wdCharacter, Count:=17
Word.Selection.Delete Unit:=wdCharacter, Count:=7
Word.Selection.TypeText (Mesyats)
Word.Selection.MoveEnd
Word.Selection.MoveDown Unit:=wdLine, Count:=6
Word.Selection.MoveLeft Unit:=wdCharacter, Count:=1
WordBasic.EditPaste2
'Word.Application.Dialogs(wdDialogFileSaveAs).Show
'Word.Documents.Close
ErrStartWord:
If Err.Number = 429 Then ' Word не запущен
Dim appWD As Object
Set appWD = CreateObject("Word.Application")
appWD.Visible = True
Resume Next
End If
If Err.Number = 0 Then
'MsgBox "Success!"
Else: MsgBox Err.Description & " " & Err.Number, vblnformation
End If
End Sub
Однако не тут-то было (((
При повторном запуске скрипт срубается на строке "Word.Documents.Open Filename:="c:\OLS Reports\Form 2.docx""
с сообщением "The remote server machine does not exist or is unavailable 462", как и положено обработчику ошибок в теле сркипта. Надо полностью закрыть Excel и заново в него зайти. Тогда вновь все заработает, на 1 раз :/ Я так думаю, что скрипт по завершению не очищает какие-то переменные, и нужно выйти из Excel.
Очень надо сделать, работа горит. Сижу уже 4-й час, и ничего не могу поделать ((((
И да. Использую Word 2007 и Excel 2007. Как думаете, в 2003 офисе такой проблемы не возникнет? А то будет жаль перставлять из-за этого.....
Все харанее спасибо.
Очень извиняюсь, что касаюсь избитой темы (наверное), но что-то я не смог найти ответа в таком форуме, хотя регулярно пользуюсь подсказками пользователей. До сей поры хватало.\
Суть вот в чем:
Я хочу из существующей таблицы Excel выдернуть отсортированные значения и вставить их в Word. Казалось бы, что может быть проще:
Sub Import2()
'
'
'
Mesyats = UserForm1.ComboBox1.Value
'Mesyats = "Ноябрь"
Dim iLastRow As Long
Excel.Sheets("123").Select
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
Excel.ActiveSheet.ListObjects("Таблица 3").Range.AutoFilter Field:=1, Criteria1:=Mesyats
Excel.Range("B3:D" + Right((Str(iLastRow)), (Len(Str(iLastRow) - 1)))).Select
Excel.Selection.Copy
Excel.Sheets("123").Select
On Error GoTo ErrStartWord
Dim Wda As Word.Application
Set Wda = GetObject(, "Word.Application")
Set Wda = Nothing
'If Tasks.Exists("Microsoft Word") Then
'End If
'Word.Application.Documents.Item
Word.Documents.Open Filename:="c:\OLS Reports\Form 2.docx"
Word.Application.Activate
Word.Selection.StartOf Unit:=wdStory, Extend:=wdMove
Word.Selection.MoveDown Unit:=wdLine, Count:=9
Word.Selection.MoveLeft Unit:=wdCharacter, Count:=17
Word.Selection.Delete Unit:=wdCharacter, Count:=7
Word.Selection.TypeText (Mesyats)
Word.Selection.MoveEnd
Word.Selection.MoveDown Unit:=wdLine, Count:=6
Word.Selection.MoveLeft Unit:=wdCharacter, Count:=1
WordBasic.EditPaste2
'Word.Application.Dialogs(wdDialogFileSaveAs).Show
'Word.Documents.Close
ErrStartWord:
If Err.Number = 429 Then ' Word не запущен
Dim appWD As Object
Set appWD = CreateObject("Word.Application")
appWD.Visible = True
Resume Next
End If
If Err.Number = 0 Then
'MsgBox "Success!"
Else: MsgBox Err.Description & " " & Err.Number, vblnformation
End If
End Sub
Однако не тут-то было (((
При повторном запуске скрипт срубается на строке "Word.Documents.Open Filename:="c:\OLS Reports\Form 2.docx""
с сообщением "The remote server machine does not exist or is unavailable 462", как и положено обработчику ошибок в теле сркипта. Надо полностью закрыть Excel и заново в него зайти. Тогда вновь все заработает, на 1 раз :/ Я так думаю, что скрипт по завершению не очищает какие-то переменные, и нужно выйти из Excel.
Очень надо сделать, работа горит. Сижу уже 4-й час, и ничего не могу поделать ((((
И да. Использую Word 2007 и Excel 2007. Как думаете, в 2003 офисе такой проблемы не возникнет? А то будет жаль перставлять из-за этого.....
Все харанее спасибо.