Не открывается документ с пробелом в имени файла
Модератор: Naeel Maqsudov
При открытии документа, содержащего в имени пробел, программа (во время активации) выдает ошибку 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
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
- VictorM
- Сообщения: 794
- Зарегистрирован: 23 окт 2006, 01:44
- Откуда: Lugansk, Ukraine
- Контактная информация:
Как - то где - то прочел: "Программисты_пробелов_не_применяют". Я думаю это и есть ответ на Ваш вопрос.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
научите их ловить рыбу - и вы накормите их на всю жизнь".
У меня вот так работает (из под Excel)
P.S. строку oapp.Documents(dlg.Name).Activate закомментировал, т.к. когда открываете документ он сразу автоматом становится активным и поэтому делать его ещё раз активным не надо
Код: Выделить всё
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
http://www.progz.ru/forum/index.php?sho ... t&p=163003Pavel55 писал(а):У меня вот так работает (из под Excel)
P.S. строку oapp.Documents(dlg.Name).Activate закомментировал, т.к. когда открываете документ он сразу автоматом становится активным и поэтому делать его ещё раз активным не надоКод: Выделить всё
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
Открою маленький секрет. Я не буду работать на этой программе. А будут работать люди в той или иной степени с ним дружащие или наоборот.VictorM писал(а):Как - то где - то прочел: "Программисты_пробелов_не_применяют". Я думаю это и есть ответ на Ваш вопрос.
Вы знаете, как ни странно, помогло. Еще бы Вы подсказали, как мне избежать открытия второй копии Word. Если я с помощью этого кода открываю файл при уже открытых документах, появляется еще одно копия программы, но без документа. Если токрытый файл первый - все нормально.Pavel55 писал(а):У меня вот так работает (из под Excel)
P.S. строку oapp.Documents(dlg.Name).Activate закомментировал, т.к. когда открываете документ он сразу автоматом становится активным и поэтому делать его ещё раз активным не надоКод: Выделить всё
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
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте kminas.
Вы же создаете объект и одновременно хотите избежать "открытия второй копии"
GetObject(,"Word.Application") избавит от создиния копии, но если объекта нет сгенерируется ошибка, "поймав" которую, создавайте новый - CreateObject.
Евгений.
Вы же создаете объект и одновременно хотите избежать "открытия второй копии"

GetObject(,"Word.Application") избавит от создиния копии, но если объекта нет сгенерируется ошибка, "поймав" которую, создавайте новый - CreateObject.
Евгений.
Спасибо Евгений. Но у меня ничего не получается с GetObject(,"Word.Application"). Не подскажите, как с его помощью открыть файл по выбору пользователя?Teslenko_EA писал(а):Здравствуйте kminas.
Вы же создаете объект и одновременно хотите избежать "открытия второй копии"
GetObject(,"Word.Application") избавит от создиния копии, но если объекта нет сгенерируется ошибка, "поймав" которую, создавайте новый - CreateObject.
Евгений.
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
VictorM, когдато имена файлов не могли содержать символы за пределами 437 кодовой страницы, и длиной не более восьми символов (это было время DOS).
Кажется только законы физики на Земле не меняются.
Евгений.
Кажется только законы физики на Земле не меняются.
Евгений.
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
kminas, пример который выслал Pavel55, уже опробован?