Не открывается документ с пробелом в имени файла

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

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

Teslenko_EA
Сообщения: 526
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

Код: Выделить всё

...
On Error Resume Next
     Set oapp = GetObject(,"Word.Application")
  If Not Err.Number = 0 Then ' желательно проверять номер ошибки, но я его не ...
     Set oapp = CreateObject("Word.Application")
     Err.Clear
  End If
...
Файл не открывается с помощью GetObject, создается объект - открытая копия Word.
kminas
Сообщения: 108
Зарегистрирован: 06 янв 2006, 00:06
Откуда: Ростов-на-Дону

Teslenko_EA писал(а):Здравствуйте kminas.
Вы же создаете объект и одновременно хотите избежать "открытия второй копии" :)
GetObject(,"Word.Application") избавит от создиния копии, но если объекта нет сгенерируется ошибка, "поймав" которую, создавайте новый - CreateObject.

Евгений.
Спасибо Евгений. Но у меня ничего не получается с GetObject(,"Word.Application"). Не подскажите, как с его помощью открыть файл по выбору пользователя, т.е. без заданного программно имени файла?
Pavel55
Сообщения: 418
Зарегистрирован: 20 окт 2006, 11:40
Откуда: Moscow

Код: Выделить всё

Public oapp As Object
Dim dlg As Object

Sub Макрос1()
    On Error Resume Next
    Set oapp = GetObject(, "Word.Application")
    If Err.Number <> 0 Then
        Err.Clear
        On Error GoTo 0
        Set oapp = CreateObject("Word.Application")
    End If
    oapp.Visible = True
    Set dlg = oapp.Dialogs(80) 'wdDialogFileOpen
    If dlg.Show = -1 Then
        oapp.Documents.Open Filename:=dlg.Name
    End If
End Sub
Аватара пользователя
VictorM
Сообщения: 794
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

Teslenko_EA,
когдато имена файлов не могли содержать символы за пределами 437 кодовой страницы, и длиной не более восьми символов
прекрасно помню эти времена :) , и помню, какая нужна была фантазия, чтобы уместить имя файла в 8 символов, а потом, по прошествие некоторого времени, вспомнить, как же ты его называл и найти. :)
Зато теперь никаких проблем и имя файла типа Копия Копия Копия Договор на перевозку грузов за нал. расчёт.doc (взято настоящее имя с рабочего компа бухов!) не редкость. ;)
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
kminas
Сообщения: 108
Зарегистрирован: 06 янв 2006, 00:06
Откуда: Ростов-на-Дону

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

Спасибо. Вопрос решил немного по другому. Если хотите посмотрите здесь http://www.sql.ru/forum/actualthread.aspx?tid=541808
kminas
Сообщения: 108
Зарегистрирован: 06 янв 2006, 00:06
Откуда: Ростов-на-Дону

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

Pavel55, Твой вариант работает. Только путь добавил. Это код для открытия имеющегося документа. А для того, чтобы создать новый документ и так и эдак прилаживал этот код, пока не получается.
Мне нужно открыть файл с таблицей, переименовать (SaveAs) его и дальше с ним работать, как и с тем.
Получилась какая-то мистика. После того, как варианты твоего кода попробовал применить к той процедуре, она вообще перестала работать (таблицу в файле не находит). Я уже и возврат делал и даже скопировал со старого файла, но - полный глюк. В мистику, конечно не верю, но все же?
kminas
Сообщения: 108
Зарегистрирован: 06 янв 2006, 00:06
Откуда: Ростов-на-Дону

Мистики конечно нет. После перезагрузки все глюки прошли. Всем советую при непонятных проблемах перегружаться, а сам забыл.
Ответить