powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не могу открыть документ с пробелом в имени файла
16 сообщений из 16, страница 1 из 1
Не могу открыть документ с пробелом в имени файла
    #35223349
kminas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При открытии документа, содержащего в имени пробел, программа (во время активации) выдает ошибку 4160 и пишет: "неправильное имя файла". Вот код процедуры:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
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
Константин
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35223712
Alexey Syrok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
путь в кавычках надо
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35225937
kminas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Syrokпуть в кавычках надо
Не помогло.
Убрал строку:
Код: plaintext
 Documents(dlg.Name).Activate
И все сложилось. Пока.
Зато не могу понять, почему, если я с помощью этого кода открываю файл при уже открытых документах, появляется еще одна копия программы, но без документа. Если окрытый файл первый - все нормально.
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35225968
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kminasЗато не могу понять, почему, если я с помощью этого кода открываю файл при уже открытых документах, появляется еще одна копия программы, но без документа. Если окрытый файл первый - все нормально.Потому что у ты создаешь новую копию программы а файл открываешь в той которая активна в данную миллисекунду.
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35225995
kminas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl kminasЗато не могу понять, почему, если я с помощью этого кода открываю файл при уже открытых документах, появляется еще одна копия программы, но без документа. Если окрытый файл первый - все нормально.Потому что ты создаешь новую копию программы а файл открываешь в той которая активна в данную миллисекунду.
Да я понимаю, но с GetObject(, "Word.Application"), например, пока ничего не получилось.
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35226005
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kminas White Owl kminasЗато не могу понять, почему, если я с помощью этого кода открываю файл при уже открытых документах, появляется еще одна копия программы, но без документа. Если окрытый файл первый - все нормально.Потому что ты создаешь новую копию программы а файл открываешь в той которая активна в данную миллисекунду.
Да я понимаю, но с GetObject(, "Word.Application"), например, пока ничего не получилось.GetObject() тут совершенно не при чем. У тебя Documents висит в воздухе.
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35226023
kminas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlGetObject() тут совершенно не при чем. У тебя Documents висит в воздухе.
Так я один же убрал и второй тоже мешает?
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35228267
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kminas White OwlGetObject() тут совершенно не при чем. У тебя Documents висит в воздухе.
Так я один же убрал и второй тоже мешает?Каждый объект кому-то принадлежит. Если ты не указываешь конкретно кому объект принадлежит, система возьмет первого попавшегося потенциального владельца этого объекта.

Твой код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
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
На самом деле после привязки всех болтающихся без родителя объектов твой код превращается в:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Public oapp As Object
Dim dlg As Object
dim oAnyObject as Object

  Set oapp = CreateObject("Word.Application")
  oapp.Visible = True
  set oAnyObject = GetObject(,"Word.Application")
  Set dlg = oAnyObject.Dialogs(wdDialogFileOpen)
  oapp.ChangeFileOpenDirectory "C:\...\..."
    
    If dlg.Show = - 1  Then
         set oAnyObject = GetObject(,"Word.Application")
         oAnyObject.Documents.Open FileName:=dlg.Name
         set oAnyObject = GetObject(,"Word.Application")
         oAnyObject.Documents(dlg.Name).Activate
    End If
Понятно? Ты создаешь новое приложение а документ открываешь в том приложении которое активно в данный момент. Обычно это то из окон Ворда которое имеет фокус в данную секунду, а новозапущенное окно фокуса обычно не имеет.
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35231456
kminas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо White Owl! Вроде получилось, но только убрал сначала
Код: plaintext
1.
 oapp.Visible = True
и только тогда исчезла дополнительная копия Word, затем убрал
Код: plaintext
1.
 oAnyObject.Documents(dlg.Name).Activate 
и стали нормально открываться файлы с двойным именем
Константин
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35231469
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kminasСпасибо White Owl! Вроде получилось, но только убрал сначала
Код: plaintext
1.
 oapp.Visible = True
и только тогда исчезла дополнительная копия WordНеправда. Она не исчезла, она стала невидимой. Но каждый запуск твоей процедуры создает новую копиб Ворда которая остается висеть в памяти (и жрать ее).
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35234098
kminas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl и только тогда исчезла дополнительная копия WordНеправда. Она не исчезла, она стала невидимой. Но каждый запуск твоей процедуры создает новую копиб Ворда которая остается висеть в памяти (и жрать ее).[/quot]
Тогда как убрать ее реально?
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35234191
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kminasТогда как убрать ее реально?Закрывать ее.
oapp.Close()
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35234192
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще, до тех пор пока полностью не отладил программу, всегда делай oApp.Visible=true чтобы видеть что именно происходит и видеть все сообщения которые Ворд будет тебе кидать на неправильные действия.
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35234479
kminas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl oapp.Close() Не прошло.
Проверил вариант предложенный здесьhttp://forum.developing.ru/showthread.php?p=53572&posted=1#post53572

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
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
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35234755
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: kminas
Я использую такую функцию для получения ворда, екселя, :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Function ActivateWord() As Boolean
On Error GoTo labGetObj
Set WordObj = GetObject(, "Word.Application")
If WordObj Is Nothing Then
    ActivateWord = False
    Exit Function
Else
    ActivateWord = True
    Exit Function
End If
labGetObj:
Set WordObj = CreateObject("Word.Application")
Resume Next
End Function

Правда эта не учитывает вариант компа с неустановленным офисом, где-то была,
которая учитывает и этот вариант, но под рукой нет. Есть ещё вариант с
возвратом самого объекта Application и проверкой на не Not Nothing из места
вызова, но переделать как тебе нужно не сложно :)


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Не могу открыть документ с пробелом в имени файла
    #35238053
kminas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос
> Автор: kminas
Я использую такую функцию для получения ворда, екселя, :)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Private Function ActivateWord() As Boolean
On Error GoTo labGetObj
Set WordObj = GetObject(, "Word.Application")
If WordObj Is Nothing Then
    ActivateWord = False
    Exit Function
Else
    ActivateWord = True
    Exit Function
End If
labGetObj:
Set WordObj = CreateObject("Word.Application")
Resume Next
End Function

Правда эта не учитывает вариант компа с неустановленным офисом, где-то была,
которая учитывает и этот вариант, но под рукой нет. Есть ещё вариант с
возвратом самого объекта Application и проверкой на не Not Nothing из места
вызова, но переделать как тебе нужно не сложно :)

Спасибо за помощь, попробую применить к моему случаю. Я недавно начал программировать, пока еще с открытием файлов испытываю проблемы.
Мне еще надо сделать аналогичную функцию или процедуру для создания нового файла. Имеется некий документ с таблицей (я его использую как шаблон), его нужно открыть, пользователь должен его переимновать и работать далее с документом под новым именем.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не могу открыть документ с пробелом в имени файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]