Здравствуйте! Пользуюсь 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(источник) у меня открывается написано "Для чтения" и все замирает.
А при чём тут Excel ? Для других приложений, поддерживающих VBA есть отдельная ветка Excel и другие приложения Но даже оттуда без файлов-примеров Вы будете отправлены читать правила форума
А при чём тут Excel ? Для других приложений, поддерживающих VBA есть отдельная ветка Excel и другие приложения Но даже оттуда без файлов-примеров Вы будете отправлены читать правила форумаAlex_ST
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
А при чём тут Excel ? Для других приложений, поддерживающих VBA есть отдельная ветка Excel и другие приложения Но даже оттуда без файлов-примеров Вы будете отправлены читать правила форума
Ну потому что использую excel, запрос делаю из одного файла excel в другой, а вопрос здесь потому что думаю что обновление запроса происходит по нажатию кнопки, в которой и используется код VBA Вот и поэтому спрашиваю, как это можно обойти
А при чём тут Excel ? Для других приложений, поддерживающих VBA есть отдельная ветка Excel и другие приложения Но даже оттуда без файлов-примеров Вы будете отправлены читать правила форума
Ну потому что использую excel, запрос делаю из одного файла excel в другой, а вопрос здесь потому что думаю что обновление запроса происходит по нажатию кнопки, в которой и используется код VBA Вот и поэтому спрашиваю, как это можно обойтиmakc1985
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