Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Два вопроса о работе с файлами. VBA Excel.? Добавлено: 17.07.08 14:09  

Автор вопроса:  Aleksandr
Пожалуйста, помогите разобраться или, может, у кого-нибудь есть пример программки или кода для следующих задач.


Вопрос 1.
У меня на форме есть ЛистБокс и Картинка. Картинка меняется в зависимости от выбранного в ЛистБоксе значения (наименования оборудования). Там, в ЛистБоксе в колонке (15) лежит следующая информация - Фото\xxxxx.jpg где ххххх – каждый раз разное имя файла.

Картинка выводится таким образом.
Private Sub ListBox1_Click()
MyPath = "E:\Мои документы\База данных\" + ListBox1.Column(15)
    Image4.Picture = LoadPicture(MyPath)
End Sub

Необходимо чтобы при ДаблКлик на картинке, картинка просто открывалась в просмоторщике изображений установленном по умолчанию в Виндоусе. Т.е. как будто я её открыл просто из папки Виндоуса.
Каким кодом открыть файл (картинку) с именем лежащим в ListBox1.Column(i)?


Вопрос 2.
Возможно ли вызвать из VBA Excel (скажем, при нажатии кнопки на форме) окно для выбора файла идентичное нажатию Ctrl+O в Excel? Или использовать какой-нибудь стандартный объект располагаемый на форму и какой? Для того чтобы выбрать в любом месте, в том числе и по сети и на флешке любой файл. После выбора файла переменной «ПУТЬ» присвоить путь к файлу, а второй переменной «ФАЙЛ» присвоить имя файла с расширением? Чтобы потом этот путь и файл я мог добавлять в таблицу?

Заранее спасибо!

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #1 Добавлено: 17.07.08 15:07
2:
  With Application.FileDialog(msoFileDialogOpen)
    .AllowMultiSelect = False
    .InitialFileName = Worksheets("Загрузка";).Range("A1";).Value
    If .Show = -1 Then
      a = 1
      .Execute
    End If
  End With
  If a=1 Then
    'Ваш код
  End If

Ответить

Номер ответа: 2
Автор ответа:
 J. Smith



ICQ: ненавижу 

Вопросов: 40
Ответов: 477
 Web-сайт: Не хочу ломать голову, если её уже сломал кто-то другой.
 Профиль | | #2
Добавлено: 17.07.08 15:34
1. http://www.vbnet.ru/faq/showtopic.asp?id=186
   Запустить приложение, ассоциированное с расширением файла

Ответить

Номер ответа: 3
Автор ответа:
 Aleksandr



Вопросов: 7
Ответов: 15
 Профиль | | #3 Добавлено: 17.07.08 15:37
Jasmin, спасибо тебе сново за ответы!
Последний ответ понятен и он работает, но не совсем так.
Возможно ли после выбора файла сделать так чтобы он не открывался, а просто переменным присваивались путь и имя выбранного файла. Т.е. грубо говоря, как в почтовой программе при прикреплении к письму файла, файл не открывается, а просто появляется его название в строке прикреплённых файлов. Мне нужно сделать подобие, только имя файла и путь выбранного файла записать в таблицу листа Ексель? Это озможно?

Ответить

Номер ответа: 4
Автор ответа:
 Aleksandr



Вопросов: 7
Ответов: 15
 Профиль | | #4 Добавлено: 17.07.08 15:51
Smith, спасибо за ответ на вопрос 1!
Мне удалось применить код на рекомендованной тобой ссылке (вариант1). Всё работает.
Правда я не думал, что открывать файл через VBA так сложно!

Ответить

Номер ответа: 5
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #5 Добавлено: 17.07.08 18:29
    If .Show = -1 Then  'признак того, что был выбран какой-то файл
      a = .SelectedItems(1)  'полный путь к файлу
'  следующие 3 строки, если использовать множественный выбор
'      For FileCount = 1 To .SelectedItems.Count
'        MsgBox .SelectedItems(FileCount)
'      Next FileCount
     
'      .Execute   'это, если нужно открыть выбранный файл
    End If

Проверка a вынесена за With, так как, если понадобиться открыть таким образом еще один файл в процессе обработки, то диалогу будет "плохо". Испытано. :-) Лучше сразу закончить с диалогом открытия, а потом работать только с файлом. :-)

Ответить

Номер ответа: 6
Автор ответа:
 Aleksandr



Вопросов: 7
Ответов: 15
 Профиль | | #6 Добавлено: 18.07.08 10:44
Вау!!! Всё отлично работает! Спасибо огромное Jasmin!

Вот как всё получилось:


Private Sub CommandButton34_Click()
    Dim a, MySelectedFile
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        If .Show = -1 Then
            a = 1
            MySelectedFile = .SelectedItems(1)
        End If
    End With
    If a = 1 Then
        MsgBox MySelectedFile
    End If
End Sub

Ответить

Номер ответа: 7
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #7 Добавлено: 18.07.08 12:07
Обращайтесь :-)

По коду: В таком случае проверяй сразу переменную MySelectedFile на "". 'A' уже лишняя. :-) Смысл был проверить было ли что-то выбрано. Сам факт, так сказать. :-)

Ответить

Номер ответа: 8
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #8 Добавлено: 18.07.08 12:10
:-) Забыла пример:
    If Not IsEmpty(MySelectedFile) Then
        'остальной код
    End If

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам