Активировать документ Word

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
kminas
Сообщения: 108
Зарегистрирован: 06 янв 2006, 00:06
Откуда: Ростов-на-Дону

Есть программа, которая открывает документ Word для заполнения таблицы в нем. Но, если ранее были открыты другие документы, то прога обращается к ним. Как средствами VB(A) сделать документ Word, открытый прогой активным?
Вот код, который открывает файл с таблицей, предлагает юзеру сохранить его под другим именем и, после сохранения, открывает форму для работы. Код родился после консультации на других форумах, но все равно не делает файл сохраненный юзеро активным.

Public oapp As Object
Option Explicit
_______________________________________________________
Private Sub cmdSave_Click()
Dim dlgFolderPicker As FileDialog
Dim fdf As FileDialogFilter
Dim myPuth
Set oapp = CreateObject("Word.Application")
oapp.Visible = True
oapp.ChangeFileOpenDirectory "C:\Templates\"
oapp.Documents.Open FileName:="СпецОВ.doc"
oapp.ChangeFileOpenDirectory "C:\Мои документы\Спецификации\"

Set dlgFolderPicker = oapp.FileDialog(msoFileDialogSaveAs)
With dlgFolderPicker
.AllowMultiSelect = False
.ButtonName = "Сохранить"
.FilterIndex = 1
If .Show = -1 Then
myPuth = .SelectedItems(1)
Else
Exit Sub 'пока не до условий
End If
End With
Set dlgFolderPicker = Nothing

oapp.ActiveDocument.SaveAs FileName:=myPuth
oapp.Selection.MoveDown Unit:=wdLine, Count:=3
Set oapp = Nothing


Beep
frmOpen.Hide
frmShtamp.Hide
With frmObor
.Show
.optShtamp.Visible = True
.optShtamp.Value = False
.SSTab1.Visible = True
.txtPos.Visible = True
.txtQuant.Visible = True
.Label4.Visible = True
.Label5.Visible = True
End With

End Sub
Genyaa
Сообщения: 310
Зарегистрирован: 11 окт 2006, 17:24
Откуда: Moscow
Контактная информация:

Попробуйте так:
Вместо

oapp.ChangeFileOpenDirectory "C:\Templates\"
oapp.Documents.Open FileName:="СпецОВ.doc"
oapp.ChangeFileOpenDirectory "C:\Мои документы\Спецификации\"

сделайте так

oapp.ChangeFileOpenDirectory "C:\Templates\"
set myOpenedFile = oapp.Documents.Open(FileName:="СпецОВ.doc")
oapp.ChangeFileOpenDirectory "C:\Мои документы\Спецификации\"

и далее, везде, где нужно обращаться именно к этому открытому файлу, обращайтесь к нему по имени объекта myOpenedFile (имя выбрано произвольно). Например, для его активации:

myOpenedFile.Activate

Надеюсь, что получится. Времени для проверки у меня пока нет.
Всякое решение плодит новые проблемы.
Genyaa
Сообщения: 310
Зарегистрирован: 11 окт 2006, 17:24
Откуда: Moscow
Контактная информация:

Попробуйте так:
Вместо

oapp.ChangeFileOpenDirectory "C:\Templates\"
oapp.Documents.Open FileName:="СпецОВ.doc"
oapp.ChangeFileOpenDirectory "C:\Мои документы\Спецификации\"

сделайте так

oapp.ChangeFileOpenDirectory "C:\Templates\"
set myOpenedFile = oapp.Documents.Open(FileName:="СпецОВ.doc")
oapp.ChangeFileOpenDirectory "C:\Мои документы\Спецификации\"

и далее, везде, где нужно обращаться именно к этому открытому файлу, обращайтесь к нему по имени объекта myOpenedFile (имя выбрано произвольно). Например, для его активации:

myOpenedFile.Activate

Надеюсь, что получится. Времени для проверки у меня пока нет.
Всякое решение плодит новые проблемы.
kminas
Сообщения: 108
Зарегистрирован: 06 янв 2006, 00:06
Откуда: Ростов-на-Дону

Genyaa, спасибо.
Ответить