|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.04.2010, 16:37 | #1 |
Регистрация: 17.04.2010
Сообщений: 3
|
Типы данных Variant , String
Просьба помочь.
Пытаюсь использовать для программы VBA стандартный блок "Обзор" для выбора файла. Нашёл его в Интернете и он работает сам по себе. Затем нужно открыть для считывания файл(см. часть 2 программы) При запуске выходит ошибка Run-time error '13' Type mismatch в строке Open CStr(vrtSelectedItem(1)) For Input As #1 Переменная vrtSelectedItem типа Variant, а нужна String как преобразовать типы? Спасибо. ================================== 'Объявление переменной как объекта FileDialog. Dim fd As FileDialog 'Создание объекта FileDialog как диалогового окна типа File Picker. Set fd = Application.FileDialog(msoFileDialo gFilePicker) 'Объявление переменной для хранения пути к каждому выбранному элементу. 'Несмотря на то что путь представляет собой строковую переменную (String), 'данная переменная должна являться объектом типа Variant, поскольку процедура 'цикла For Each...Next работает только с объектами Variant и Object. Dim vrtSelectedItem As Variant 'Использование блока With...End With для создания ссылки на объект FileDialog. With fd 'Использование метода Show для вывода диалогового окна типа File Picker. 'Пользователь нажал кнопку подтверждения действия. If .Show = -1 Then 'Перебор элементов из коллекции FileDialogSelectedItems. For Each vrtSelectedItem In .SelectedItems 'vrtSelectedItem содержит путь к каждому выбранному элементу. 'Здесь можно использовать любые нужные функции ввода/вывода по отношению к полученному пути. 'В данном примере путь просто отображается в окне сообщения. MsgBox "Путь: " & vrtSelectedItem Next vrtSelectedItem 'Пользователь нажал кнопку отмены действия. Else End If End With 'Очистка значения переменной-ссылки. Set fd = Nothing 'ч2 ------------------- Open CStr(vrtSelectedItem(1)) For Input As #1 Input #1, yy$ Close #1 MsgBox (yy$) End Sub |
17.04.2010, 17:19 | #2 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Я думаю ,нельзя преобразовать то.чего нет.Поэтому и ошибка
Код:
Анализ,обработка данных Недорого
|
20.04.2010, 23:55 | #3 |
Регистрация: 17.04.2010
Сообщений: 3
|
Действительно работает. Интуитивно понятно.
Однако хотелось бы пояснения для строки Path = vrtSelectedItem Ведь типы данных разные. Если можно поподробнее о фразе "нельзя преобразовать то.чего нет". И, всё таки, можно ли преобразовать Variant в String, не вводя доп. переменную Спасибо! |
21.04.2010, 00:31 | #4 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Код:
Анализ,обработка данных Недорого
|
21.04.2010, 12:20 | #5 |
Регистрация: 17.04.2010
Сообщений: 3
|
Спасибо!!!!
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Типы данных С++ | werser | Помощь студентам | 1 | 13.03.2010 18:34 |
Типы данных | psycho-coder | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 04.02.2010 20:03 |
Типы данных | nedden | Помощь студентам | 2 | 12.11.2008 17:18 |
Типы данных??? | Рустам | Общие вопросы Delphi | 10 | 08.11.2007 08:03 |