Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не могу открыть документ с пробелом в имени файла / 16 сообщений из 16, страница 1 из 1
30.03.2008, 23:13
    #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
31.03.2008, 10:38
    #35223712
Alexey Syrok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть документ с пробелом в имени файла
путь в кавычках надо
...
Рейтинг: 0 / 0
31.03.2008, 22:44
    #35225937
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть документ с пробелом в имени файла
Alexey Syrokпуть в кавычках надо
Не помогло.
Убрал строку:
Код: plaintext
 Documents(dlg.Name).Activate
И все сложилось. Пока.
Зато не могу понять, почему, если я с помощью этого кода открываю файл при уже открытых документах, появляется еще одна копия программы, но без документа. Если окрытый файл первый - все нормально.
...
Рейтинг: 0 / 0
31.03.2008, 23:10
    #35225968
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть документ с пробелом в имени файла
kminasЗато не могу понять, почему, если я с помощью этого кода открываю файл при уже открытых документах, появляется еще одна копия программы, но без документа. Если окрытый файл первый - все нормально.Потому что у ты создаешь новую копию программы а файл открываешь в той которая активна в данную миллисекунду.
...
Рейтинг: 0 / 0
31.03.2008, 23:27
    #35225995
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть документ с пробелом в имени файла
White Owl kminasЗато не могу понять, почему, если я с помощью этого кода открываю файл при уже открытых документах, появляется еще одна копия программы, но без документа. Если окрытый файл первый - все нормально.Потому что ты создаешь новую копию программы а файл открываешь в той которая активна в данную миллисекунду.
Да я понимаю, но с GetObject(, "Word.Application"), например, пока ничего не получилось.
...
Рейтинг: 0 / 0
31.03.2008, 23:37
    #35226005
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть документ с пробелом в имени файла
kminas White Owl kminasЗато не могу понять, почему, если я с помощью этого кода открываю файл при уже открытых документах, появляется еще одна копия программы, но без документа. Если окрытый файл первый - все нормально.Потому что ты создаешь новую копию программы а файл открываешь в той которая активна в данную миллисекунду.
Да я понимаю, но с GetObject(, "Word.Application"), например, пока ничего не получилось.GetObject() тут совершенно не при чем. У тебя Documents висит в воздухе.
...
Рейтинг: 0 / 0
31.03.2008, 23:55
    #35226023
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть документ с пробелом в имени файла
White OwlGetObject() тут совершенно не при чем. У тебя Documents висит в воздухе.
Так я один же убрал и второй тоже мешает?
...
Рейтинг: 0 / 0
01.04.2008, 18:43
    #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
03.04.2008, 00:19
    #35231456
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть документ с пробелом в имени файла
Спасибо White Owl! Вроде получилось, но только убрал сначала
Код: plaintext
1.
 oapp.Visible = True
и только тогда исчезла дополнительная копия Word, затем убрал
Код: plaintext
1.
 oAnyObject.Documents(dlg.Name).Activate 
и стали нормально открываться файлы с двойным именем
Константин
...
Рейтинг: 0 / 0
03.04.2008, 00:30
    #35231469
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть документ с пробелом в имени файла
kminasСпасибо White Owl! Вроде получилось, но только убрал сначала
Код: plaintext
1.
 oapp.Visible = True
и только тогда исчезла дополнительная копия WordНеправда. Она не исчезла, она стала невидимой. Но каждый запуск твоей процедуры создает новую копиб Ворда которая остается висеть в памяти (и жрать ее).
...
Рейтинг: 0 / 0
03.04.2008, 19:02
    #35234098
kminas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть документ с пробелом в имени файла
White Owl и только тогда исчезла дополнительная копия WordНеправда. Она не исчезла, она стала невидимой. Но каждый запуск твоей процедуры создает новую копиб Ворда которая остается висеть в памяти (и жрать ее).[/quot]
Тогда как убрать ее реально?
...
Рейтинг: 0 / 0
03.04.2008, 19:34
    #35234191
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть документ с пробелом в имени файла
kminasТогда как убрать ее реально?Закрывать ее.
oapp.Close()
...
Рейтинг: 0 / 0
03.04.2008, 19:35
    #35234192
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не могу открыть документ с пробелом в имени файла
И вообще, до тех пор пока полностью не отладил программу, всегда делай oApp.Visible=true чтобы видеть что именно происходит и видеть все сообщения которые Ворд будет тебе кидать на неправильные действия.
...
Рейтинг: 0 / 0
04.04.2008, 00:00
    #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
04.04.2008, 09:15
    #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
06.04.2008, 15:04
    #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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Не могу открыть документ с пробелом в имени файла / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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