Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/MS Query запрос не срабатывает если файл источник открыт - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
MS Query запрос не срабатывает если файл источник открыт
makc1985 Дата: Вторник, 28.10.2014, 09:55 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Здравствуйте! Пользуюсь MS Query очень удобная штука, но есть непонятные мне вещи.
Подскажите кто нибудь сталкивался с такой ситуацией:

Вот создал я запрос в файле1 через MS Query из другого файла2(источник).
(Данные - из других источников - из Microsoft Query - excel Files)
Все хорошо срабатывает, но если файл2(источник) открыт, то запрос не срабатывает(не обновляются данные)
Я написал макрос, который перед тем как обновить запрос, проверяет открыт ли файл2(источник), если открыт то закрывает его и обновляется нормально.
Но опять грабли:
файл2(источник) лежит на моем же компьютере в папке с общим доступом и если кто то его открыл, то мой запрос опять не срабатывает(не обновляется)
файл2(источник) у меня открывается написано "Для чтения" и все замирает.

Как быть? Может я что то не так делаю?
 
Ответить
СообщениеЗдравствуйте! Пользуюсь MS Query очень удобная штука, но есть непонятные мне вещи.
Подскажите кто нибудь сталкивался с такой ситуацией:

Вот создал я запрос в файле1 через MS Query из другого файла2(источник).
(Данные - из других источников - из Microsoft Query - excel Files)
Все хорошо срабатывает, но если файл2(источник) открыт, то запрос не срабатывает(не обновляются данные)
Я написал макрос, который перед тем как обновить запрос, проверяет открыт ли файл2(источник), если открыт то закрывает его и обновляется нормально.
Но опять грабли:
файл2(источник) лежит на моем же компьютере в папке с общим доступом и если кто то его открыл, то мой запрос опять не срабатывает(не обновляется)
файл2(источник) у меня открывается написано "Для чтения" и все замирает.

Как быть? Может я что то не так делаю?

Автор - makc1985
Дата добавления - 28.10.2014 в 09:55
Alex_ST Дата: Вторник, 28.10.2014, 10:53 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
А при чём тут Excel ?
Для других приложений, поддерживающих VBA есть отдельная ветка Excel и другие приложения
Но даже оттуда без файлов-примеров Вы будете отправлены читать правила форума



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеА при чём тут Excel ?
Для других приложений, поддерживающих VBA есть отдельная ветка Excel и другие приложения
Но даже оттуда без файлов-примеров Вы будете отправлены читать правила форума

Автор - Alex_ST
Дата добавления - 28.10.2014 в 10:53
RAN Дата: Вторник, 28.10.2014, 11:45 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Function IsOpen(File$) As Boolean
     Dim FN%, FF$
     '    Stop
     FN = FreeFile
     On Error Resume Next
     FF = Dir(File)
     If Err Or FF = "" Then IsOpen False: Exit Function
     Open File For Random Access Read Write Lock Read Write As #FN
     Close #FN
     If Err Then IsOpen = True
End Function

Sub test()
     If Not IsOpen(sFile) Then
         Application.ScreenUpdating = False
         Set wb = Workbooks.Open(sFile)
     Else
         MsgBox "Файл занят!" & vbLf & "Повторите попытку позже.", vbCritical
     End If
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Function IsOpen(File$) As Boolean
     Dim FN%, FF$
     '    Stop
     FN = FreeFile
     On Error Resume Next
     FF = Dir(File)
     If Err Or FF = "" Then IsOpen False: Exit Function
     Open File For Random Access Read Write Lock Read Write As #FN
     Close #FN
     If Err Then IsOpen = True
End Function

Sub test()
     If Not IsOpen(sFile) Then
         Application.ScreenUpdating = False
         Set wb = Workbooks.Open(sFile)
     Else
         MsgBox "Файл занят!" & vbLf & "Повторите попытку позже.", vbCritical
     End If
End Sub
[/vba]

Автор - RAN
Дата добавления - 28.10.2014 в 11:45
makc1985 Дата: Вторник, 28.10.2014, 11:50 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
А при чём тут Excel ?
Для других приложений, поддерживающих VBA есть отдельная ветка Excel и другие приложения
Но даже оттуда без файлов-примеров Вы будете отправлены читать правила форума

Ну потому что использую excel, запрос делаю из одного файла excel в другой, а вопрос здесь потому что думаю что обновление запроса происходит по нажатию кнопки, в которой и используется код VBA
Вот и поэтому спрашиваю, как это можно обойти
 
Ответить
Сообщение
А при чём тут Excel ?
Для других приложений, поддерживающих VBA есть отдельная ветка Excel и другие приложения
Но даже оттуда без файлов-примеров Вы будете отправлены читать правила форума

Ну потому что использую excel, запрос делаю из одного файла excel в другой, а вопрос здесь потому что думаю что обновление запроса происходит по нажатию кнопки, в которой и используется код VBA
Вот и поэтому спрашиваю, как это можно обойти

Автор - makc1985
Дата добавления - 28.10.2014 в 11:50
RAN Дата: Вторник, 28.10.2014, 11:58 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
А в вашем случае, вероятно, поможет GetObject


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеА в вашем случае, вероятно, поможет GetObject

Автор - RAN
Дата добавления - 28.10.2014 в 11:58
makc1985 Дата: Среда, 29.10.2014, 02:11 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Function IsOpen(File$) As Boolean
    Dim FN%, FF$
    '    Stop
    FN = FreeFile
    On Error Resume Next
    FF = Dir(File)
    If Err Or FF = "" Then IsOpen False: Exit Function
    Open File For Random Access Read Write Lock Read Write As #FN
    Close #FN
    If Err Then IsOpen = True
End Function

Sub test()
    If Not IsOpen(sFile) Then
        Application.ScreenUpdating = False
        Set wb = Workbooks.Open(sFile)
    Else
        MsgBox "Файл занят!" & vbLf & "Повторите попытку позже.", vbCritical
    End If
End Sub


Спасибо! Как вариант.
 
Ответить
Сообщение
Function IsOpen(File$) As Boolean
    Dim FN%, FF$
    '    Stop
    FN = FreeFile
    On Error Resume Next
    FF = Dir(File)
    If Err Or FF = "" Then IsOpen False: Exit Function
    Open File For Random Access Read Write Lock Read Write As #FN
    Close #FN
    If Err Then IsOpen = True
End Function

Sub test()
    If Not IsOpen(sFile) Then
        Application.ScreenUpdating = False
        Set wb = Workbooks.Open(sFile)
    Else
        MsgBox "Файл занят!" & vbLf & "Повторите попытку позже.", vbCritical
    End If
End Sub


Спасибо! Как вариант.

Автор - makc1985
Дата добавления - 29.10.2014 в 02:11
makc1985 Дата: Среда, 29.10.2014, 02:12 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
А в вашем случае, вероятно, поможет GetObject


Пока не очень понимаю как?
 
Ответить
Сообщение
А в вашем случае, вероятно, поможет GetObject


Пока не очень понимаю как?

Автор - makc1985
Дата добавления - 29.10.2014 в 02:12
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!