Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2011, 08:04   #1
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
Восклицание Как открыть файл?

Здравствуйте! Подскажите, пожалуйста, вариант решения следующей задачи. Каким образом в ВБА можно открыть (вывести на экран) файл? Сейчас у меня имеется следующее: на сетевом ресурсе (в папке в локальной сети) хранятся сканированные документы. У меня есть таблица в аксессе, где я храню ссылки с адресами для каждого документа. Чтобы из своей базы данных открыть на просмотр какой-либо документ, я использую следующую конструкцию:
Код:
If Nz(rstscan!Scan, "") <> "" Then
straddress = rstscan!Scan & ".tif"
            Application.FollowHyperlink straddress, , True, False
End If
т.е. я беру из таблицы полную ссылку на файл, присоединяю расширение .tif, и он благополучно открывается и предстает перед глазами пользователя
Это работает. Теперь собственно, проблема: у меня в этом сетевом каталоге будут храниться не только файлы .tif , но и экселевские и возможно еще какие-то. Так вот, как быть в таком случае? Как открыть файл, не зная его расширения??? Здесь, я так понимаю, метод "Перейти по гиперссылке" применить не удастся...
Swatch вне форума Ответить с цитированием
Старый 17.03.2011, 09:52   #2
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
Сообщение

Цитата:
Сообщение от Swatch Посмотреть сообщение
Здравствуйте! Подскажите, пожалуйста, вариант решения следующей задачи. Каким образом в ВБА можно открыть (вывести на экран) файл? Сейчас у меня имеется следующее: на сетевом ресурсе (в папке в локальной сети) хранятся сканированные документы. У меня есть таблица в аксессе, где я храню ссылки с адресами для каждого документа. Чтобы из своей базы данных открыть на просмотр какой-либо документ, я использую следующую конструкцию:
Код:
If Nz(rstscan!Scan, "") <> "" Then
straddress = rstscan!Scan & ".tif"
            Application.FollowHyperlink straddress, , True, False
End If
т.е. я беру из таблицы полную ссылку на файл, присоединяю расширение .tif, и он благополучно открывается и предстает перед глазами пользователя
Это работает. Теперь собственно, проблема: у меня в этом сетевом каталоге будут храниться не только файлы .tif , но и экселевские и возможно еще какие-то. Так вот, как быть в таком случае? Как открыть файл, не зная его расширения??? Здесь, я так понимаю, метод "Перейти по гиперссылке" применить не удастся...

Добрый день ,Swatch

стандартными средствами вряд ли получиться, я бы получил сначала список всех файлов в этой папке, затем сравнил бы название, если есть открыл бы файл
зы....
Shell "C:\WINDOWS\system32\calc.exe"

так открывать файлы правильнее
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 17.03.2011, 10:23   #3
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
По умолчанию

Цитата:
Shell "C:\WINDOWS\system32\calc.exe"

так открывать файлы правильнее
Дело как раз в том, как "поймать" расширение..... функция шелл мне тут не помощник, потому что нужно это расширение указывать, а у меня в таблице хранятся имена файлов без расширения. Как быть? Я не совсем поняла наверно
Цитата:
я бы получил сначала список всех файлов в этой папке, затем сравнил бы название,
Можно поподробнее, пожалуйста??
Swatch вне форума Ответить с цитированием
Старый 17.03.2011, 11:14   #4
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

можно так попробовать
Код:
on error resume next
s1="" &  rstscan!Scan
If len(s1)>0 Then
straddress = s1 & ".tif"
Application.FollowHyperlink straddress, , True, False
if err.number=0 then goto next1
straddress = s1 & ".xls"
Application.FollowHyperlink straddress, , True, False
if err.number=0 then goto next1
End If
next1:
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 17.03.2011, 14:08   #5
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
По умолчанию

Извините, а что означает
Код:
if err.number=0 then goto next1
Я такого кода ошибки не нашла, и вобще какой смысл этой строчки?
Swatch вне форума Ответить с цитированием
Старый 17.03.2011, 16:03   #6
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

обход, если гиперссылка уже открыта

зачем проверять xls. если tif--успешно
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 17.03.2011, 19:21   #7
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Ну если не хотите указывать расширение файлов, то тогда можно так

Код:
Sub test()
Dim s$, FlName$
s = "C:\WINDOWS\system32\calc"
FlName = Split(s, "\")(UBound(Split(s, "\")))
s = Replace(s, FlName, "")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(s)
For Each File In Folder.Files
On Error Resume Next
        If InStr(1, Split(File, "\")(UBound(Split(File, "\"))), FlName  & ".") > 0 Then Shell  CStr(File)
Next
End Sub

думаю приспособите
С уважением, Дмитрий.
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234

Последний раз редактировалось R Dmitry; 17.03.2011 в 19:29.
R Dmitry вне форума Ответить с цитированием
Старый 17.03.2011, 20:58   #8
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Swatch.
если в сохраненных данных только имя файла (без расширения), и в каталоге нет одноименных файлов разного типа,
а использование гиперссылки для открытия файла критично,
конструкция может быть такой:
Код:
Dim s$
s = rstscan!Scan & ""
If Not Len(s) = 0 Then
s = Left(s, InStrRev(s, "\")) + Dir(s + ".*")
            Application.FollowHyperlink s, , True, False
...
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 18.03.2011, 07:39   #9
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
По умолчанию

Огромное всем спасибо за советы!
Swatch вне форума Ответить с цитированием
Старый 18.03.2011, 09:43   #10
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
По умолчанию

Вынуждена продолжить тему (((. Я воспользовалась предложенным Евгением способом, и теперь для открытия файла применяю следующее:
Код:
If Nz(rstscan!Scan, "") <> "" Then
        straddress = Dir(rstscan!Scan + ".*")
        Application.FollowHyperlink straddress, , True, False
    End If
Для примера в папке я создала 3 файла: сканированный (.tif), вордовский и ексель. Так вот, вордовский файл открывается нормально (у него простое имя - "резюме"), а вот при открытии екселевского (у него имя такое - "17032011_Пользователи сети") возникает ошибка:"Не найдено имя файла или класса при программировании объектов". Причем в этом случае переменная straddress сохраняет не полный путь файла с расширением а только его имя "17032011_Пользователи сети.xls", как будто обрезается. В случае с вордовским файлом все в порядке, берется полный путь файла плюс расширение и открывается как положено. В чем тут может быть проблема? Играет ли тут роль имя файла????
Причем, для экселевского и сканированного файлов как бы я ни меняла их имена, они все равно не открываются.... даже если имена не содержат пробелов и каких то символов . Вордовский документ открывается толкьо если у него имя - 1 слово......

Последний раз редактировалось Swatch; 18.03.2011 в 10:46. Причина: дополнила
Swatch вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как открыть файл из делфи? Izlom Помощь студентам 2 02.06.2010 13:19
Как открыть файл FormAlDeGid Microsoft Office Access 6 02.12.2009 12:33
Как открыть файл на чтение? Ветас Паскаль, Turbo Pascal, PascalABC.NET 1 26.10.2009 22:01
Как открыть файл? Xnarcotic Общие вопросы Delphi 4 14.06.2009 11:51
как открыть файл.txt Sergeu Общие вопросы Delphi 1 25.09.2008 13:24