Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 27.03.2015
Сообщений: 36

Из listbox в textbox, содержимое документа

30.03.2015, 09:14. Показов 4526. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, на форме при нажатии кнопки, есть выбор папки, при выборе, все файлы с расширением *.doc выводятся в listbox.
Хотел узнать можно ли как то при выборе файла в listbox (строки) он выводил содержание документа в textbox?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.03.2015, 09:14
Ответы с готовыми решениями:

Поместить содержимое текстового документа в listBox
подскажите пожалуйста как поместить содержимое блокнота в listBox? нашел подобное на delphi ListBox1.Items.LoadFromFile("ИМЯ...

Как перенести содержимое textBox в listBox?
Здравствуйте! Нужно перенести все строки из textBox'а в listBox. Если делать так: listBox1.Items.Add(textBox1.Text); То...

MVVM. Как прибиндить TextBox к вложенному ListBox в ListBoxItem основного ListBox
<UserControl x:Class="Wpf_CareerPattern.Views.MainView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...

20
1 / 1 / 0
Регистрация: 27.03.2015
Сообщений: 36
30.03.2015, 13:23  [ТС]
вот пример формы
0
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
30.03.2015, 14:10
Попробуйте

Visual Basic
1
2
3
4
5
6
7
Private Sub ListBox1_Change()
    Set wa = CreateObject("Word.Application")
    Set wd = wa.Documents.Open(ThisWorkbook.Path & "\" & Me.ListBox1.Text)
    Me.TextBox1.Text = wd.Range.Text
    wd.Close False
    wa.Quit False
End Sub
ThisWorkbook.Path поменяйте на папку, которую получили при заполнении листбокса.
1
1 / 1 / 0
Регистрация: 27.03.2015
Сообщений: 36
31.03.2015, 08:41  [ТС]
Vovchikvsb, Спасибо, текст из документа он выводит, если только сам файл с макрсом, лежит в той же папке, и вывод все в строку(если документ с абзацами), при копирование этого текста абзацы конечно сохраняются.

Можно ли как ни будь сделать чтобы при выводе, не надо было каждый раз сам документ с макросом кидать в туже папку откуда ты текст хочешь вытащить?
И вообще в vba реально сделать что бы прямо, все стили текста(абзацы,шрифт,колонтитулы) как в доке, он кидал в текстбокс? Сори если глупый вопрос.

Добавлено через 6 минут
Или может есть другая альтернатива текст бокса?
0
1 / 1 / 0
Регистрация: 27.03.2015
Сообщений: 36
31.03.2015, 08:56  [ТС]
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
31.03.2015, 09:14
Цитата Сообщение от EdoBedo Посмотреть сообщение
есть другая альтернатива текст бокса?
ЕСТЬ - RichTextBox
0
1 / 1 / 0
Регистрация: 27.03.2015
Сообщений: 36
31.03.2015, 10:43  [ТС]
Апострофф, в toolbox'е зашел в Additional controls, но там нету RichTextBox, его как то отдельно можно получить\скачать?
0
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
31.03.2015, 11:00
Цитата Сообщение от EdoBedo Посмотреть сообщение
и вывод все в строку
Пропишите у текстбокса MultiLine = true.

Добавлено через 1 минуту
Цитата Сообщение от EdoBedo Посмотреть сообщение
текст из документа он выводит, если только сам файл с макрсом, лежит в той же папке
Нужно ThisWorkbook.Path поменять на папку в которой документ. При заполнении Листбокса вы же берете эту папку. Вот и запомните ее в переменную, а потом передайте вместо ThisWorkbook.Path.

Добавлено через 40 секунд
Только переменную объявите глобально.
1
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
31.03.2015, 11:08
Цитата Сообщение от EdoBedo Посмотреть сообщение
в toolbox'е зашел в Additional controls, но там нету RichTextBox, его как то отдельно можно получить\скачать?
Поищите по этому разделу форума по "RichTextBox". Например
Создание теста VBA Excel UserForm
Бывают проблемы
Где скачать RichTextBox с официального сайта Microsoft...
0
1 / 1 / 0
Регистрация: 27.03.2015
Сообщений: 36
31.03.2015, 13:07  [ТС]
Vovchikvsb, мультилайн помог спасибо!, я так понял если я буду менять папку с доками, мне каждый раз придется переменную менять?
0
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
31.03.2015, 13:35
Цитата Сообщение от EdoBedo Посмотреть сообщение
я так понял если я буду менять папку с доками, мне каждый раз придется переменную менять?
Каждый раз, когда заполняете Листбокс, заодно меняйте значение в переменной.

Добавлено через 3 минуты
Цитата Сообщение от EdoBedo Посмотреть сообщение
Здравствуйте, на форме при нажатии кнопки, есть выбор папки, при выборе, все файлы с расширением *.doc выводятся в listbox
В этот момент запоминайте путь к папке в глобальную переменную.
0
1 / 1 / 0
Регистрация: 27.03.2015
Сообщений: 36
31.03.2015, 13:42  [ТС]
Vovchikvsb, а как то можно это обойти? чтоб каждый раз код не менять?
У меня кнопка с выбором папки, если мне надо будет зайти в другую папку, надо лезть в код?
0
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
31.03.2015, 14:16
Цитата Сообщение от EdoBedo Посмотреть сообщение
надо лезть в код
Не надо лезть в код. Для этого и надо завести переменную.

В основном модуле объявите.
Visual Basic
1
Public TPath as string
В код кнопки добавьте.
TPath = папка которую вы получаете.

И ThisWorkbook.Path поменяйте на TPath

Добавлено через 54 секунды
Если дадите код кнопки, то напишу, что туда добавить.
0
1 / 1 / 0
Регистрация: 27.03.2015
Сообщений: 36
31.03.2015, 20:16  [ТС]
Vovchikvsb, вот код кнопки,
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub CommandButton1_Click()
        curr_dir$ = Module1.SelDir(0)
        If curr_dir$ <> "" Then
           Me.Label2 = curr_dir$
           Me.ListBox1.Clear
           cF$ = Dir$(curr_dir$ + "\*.doc")
           Do
              If cF$ = "" Then Exit Do
              Me.ListBox1.AddItem cF$
              cF$ = Dir$()
           Loop
        End If
End Sub
и листбокса
Visual Basic
1
2
3
4
5
6
7
Private Sub ListBox1_Change()
    Set wa = CreateObject("Word.Application")
    Set wd = wa.Documents.Open(ThisDocument.Path & "\" & Me.ListBox1.Text)
    Me.TextBox1.Text = wd.Range.Text
    wd.Close False
    wa.Quit False
End Sub
0
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
31.03.2015, 20:33
Лучший ответ Сообщение было отмечено EdoBedo как решение

Решение

Цитата Сообщение от EdoBedo Посмотреть сообщение
вот код кнопки
Вставьте перед End Sub в код кнопки.
Visual Basic
1
TPath = curr_dir
В основном модуле объявите.
Visual Basic
1
Public TPath as string
И поменяйте
Visual Basic
1
Set wd = wa.Documents.Open(ThisWorkbook.Path & "\" & Me.ListBox1.Text)
на
Visual Basic
1
Set wd = wa.Documents.Open(TPath & "\" & Me.ListBox1.Text)
1
1 / 1 / 0
Регистрация: 27.03.2015
Сообщений: 36
31.03.2015, 22:16  [ТС]
Vovchikvsb, Спасибо огромное, всё работает! Осталось только найти как запихнуть RichTextBox
0
 Аватар для Апострофф
9908 / 3924 / 742
Регистрация: 11.10.2011
Сообщений: 5,904
01.04.2015, 09:07
Лучший ответ Сообщение было отмечено EdoBedo как решение

Решение

Цитата Сообщение от EdoBedo Посмотреть сообщение
как запихнуть RichTextBox
http://www.experts-exchange.co... 47999.html
1
1 / 1 / 0
Регистрация: 27.03.2015
Сообщений: 36
13.04.2015, 12:14  [ТС]
Vovchikvsb, на счет вашего кода, если выбрать папку, нажать на файл в listbox, он выводитсодержимое в textbox, и если снова выбрать папку, то выскакивает ошибка "Run-time error '5455' Указано неверное имя каталога"
Если нажать на "Debug" то показывает этот выделенный код:
Visual Basic
1
Set wd = wa.Documents.Open(TPath & "\" & Me.ListBox1.Text)
Можете помочь ? заранее спасибо!

Так же прикрепил файл.
test.doc
0
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
13.04.2015, 23:42
Цитата Сообщение от EdoBedo Посмотреть сообщение
и если снова выбрать папку, то выскакивает ошибка "Run-time error '5455' Указано неверное имя каталога
При повторном выборе генерируется событие Change в листбоксе и код события пытается прочитать файл, выбранный в листбоксе. А выбор пуст. И соответственно выдается ошибка.
Измените код события на следующий.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub ListBox1_Change()
    If Me.ListBox1.Text = "" Then Me.TextBox1.Text = ""
    Set wa = CreateObject("Word.Application")
    On Error Resume Next
    Set wd = wa.Documents.Open(TPath & "\" & Me.ListBox1.Text)
    If Err = 0 Then
        Me.TextBox1.Text = wd.Range.Text
      Else
        Me.TextBox1.Text = ""
        Err = 0
    End If
    wd.Close False
    wa.Quit False
End Sub
Тут учтена возможность пустого листбокса при генерации события и очистка тестбокса вместо ошибки, если программа не смогла прочитать файл.
0
1 / 1 / 0
Регистрация: 27.03.2015
Сообщений: 36
14.04.2015, 13:04  [ТС]
Vovchikvsb, Спасибо еще раз! У меня другая проблема появилась, я изменил поиск файлов на рекурсивный, все файлы показывает, но при выборе их в листбоксе, не у всех файлов содержимое показывает. Не знаете в чем может быть проблема, заранее спасибо!!!

Так же вложил файл с новым поиском.
testre.doc
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.04.2015, 13:04
Помогаю со студенческими работами здесь

Передать содержимое TextBox в TextBox другой программы
как передать из одной программы содержимое текстбокса в другую программу в компонент текстбокс такое возможно?

Содержимое веб-документа по ссылке
Позволяет ли js получить содержимое веб-документа ? Речь идет не о текущем документе, а о любом другом. На входе есть строка Url...

Читать содержимое документа, не открывая
Задача такая, около 60ти файлов EXCEL в сети нужно прочитать и нужную инфу забрать. запись типа...

Обновить содержимое ListBox
Здравствуйте, у меня такая проблема. У меня есть ListBox в котором отображаются итемы из БД, я добавляю итем, он заносится в БД, но в...

Очистить содержимое ListBox
Привет! Подскажите пожалуйста как очистить содержимое listBox?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru