Страница 1 из 2

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

Добавлено: 31 мар 2008, 00:12
kminas
При открытии документа, содержащего в имени пробел, программа (во время активации) выдает ошибку 4160 и пишет: "неправильное имя файла". Вот код процедуры:

Public oapp As Object
Dim dlg As Object

Set oapp = CreateObject("Word.Application")
oapp.Visible = True
Set dlg = Dialogs(wdDialogFileOpen)
oapp.ChangeFileOpenDirectory "C:\...\..."

If dlg.Show = -1 Then
Documents.Open FileName:=dlg.Name
Documents(dlg.Name).Activate
End If

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

Добавлено: 31 мар 2008, 00:16
VictorM
Как - то где - то прочел: "Программисты_пробелов_не_применяют". Я думаю это и есть ответ на Ваш вопрос.

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

Добавлено: 31 мар 2008, 01:03
Pavel55
У меня вот так работает (из под Excel)

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

Public oapp As Object
Dim dlg As Object

Sub Macro1()
    Set oapp = CreateObject("Word.Application")
    oapp.Visible = True
    Set dlg = oapp.Dialogs(80) 'wdDialogFileOpen
    'oapp.ChangeFileOpenDirectory "C:\...\..."
    If dlg.Show = -1 Then
        oapp.Documents.Open Filename:=dlg.Name
        'oapp.Documents(dlg.Name).Activate
    End If
End Sub
P.S. строку oapp.Documents(dlg.Name).Activate закомментировал, т.к. когда открываете документ он сразу автоматом становится активным и поэтому делать его ещё раз активным не надо

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

Добавлено: 31 мар 2008, 18:24
kminas
Pavel55 писал(а):У меня вот так работает (из под Excel)

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

Public oapp As Object
Dim dlg As Object

Sub Macro1()
    Set oapp = CreateObject("Word.Application")
    oapp.Visible = True
    Set dlg = oapp.Dialogs(80) 'wdDialogFileOpen
    'oapp.ChangeFileOpenDirectory "C:\...\..."
    If dlg.Show = -1 Then
        oapp.Documents.Open Filename:=dlg.Name
        'oapp.Documents(dlg.Name).Activate
    End If
End Sub
P.S. строку oapp.Documents(dlg.Name).Activate закомментировал, т.к. когда открываете документ он сразу автоматом становится активным и поэтому делать его ещё раз активным не надо
http://www.progz.ru/forum/index.php?sho ... t&p=163003

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

Добавлено: 31 мар 2008, 20:28
kminas
VictorM писал(а):Как - то где - то прочел: "Программисты_пробелов_не_применяют". Я думаю это и есть ответ на Ваш вопрос.
Открою маленький секрет. Я не буду работать на этой программе. А будут работать люди в той или иной степени с ним дружащие или наоборот.

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

Добавлено: 31 мар 2008, 20:36
kminas
Pavel55 писал(а):У меня вот так работает (из под Excel)

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

Public oapp As Object
Dim dlg As Object

Sub Macro1()
    Set oapp = CreateObject("Word.Application")
    oapp.Visible = True
    Set dlg = oapp.Dialogs(80) 'wdDialogFileOpen
    'oapp.ChangeFileOpenDirectory "C:\...\..."
    If dlg.Show = -1 Then
        oapp.Documents.Open Filename:=dlg.Name
        'oapp.Documents(dlg.Name).Activate
    End If
End Sub
P.S. строку oapp.Documents(dlg.Name).Activate закомментировал, т.к. когда открываете документ он сразу автоматом становится активным и поэтому делать его ещё раз активным не надо
Вы знаете, как ни странно, помогло. Еще бы Вы подсказали, как мне избежать открытия второй копии Word. Если я с помощью этого кода открываю файл при уже открытых документах, появляется еще одно копия программы, но без документа. Если токрытый файл первый - все нормально.

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

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

Евгений.

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

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

Евгений.
Спасибо Евгений. Но у меня ничего не получается с GetObject(,"Word.Application"). Не подскажите, как с его помощью открыть файл по выбору пользователя?

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

Добавлено: 31 мар 2008, 23:16
Teslenko_EA
VictorM, когдато имена файлов не могли содержать символы за пределами 437 кодовой страницы, и длиной не более восьми символов (это было время DOS).
Кажется только законы физики на Земле не меняются.

Евгений.

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

Добавлено: 31 мар 2008, 23:19
Teslenko_EA
kminas, пример который выслал Pavel55, уже опробован?