Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
20.04.2024, 03:41:26

Войти
Интересные и полезные статьи по работе с Excel и VBA можно найти в разделе ХИТРОСТИ
33 242 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Excel и VBA
| | |-+  Экспорт выборочных данных из Word в Excel
Страниц: [1]   Вниз
Печать
Автор Тема: Экспорт выборочных данных из Word в Excel  (Прочитано 3431 раз)
0 Пользователей и 1 Гость смотрят эту тему.
JustCommonNick
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 5


Просмотр профиля E-mail
« : 10.08.2021, 15:19:07 »

Доброго времени суток! Объясните чайнику, как создать макрос, при запуске которого будут экспортироваться данные из Word в Excel, по возможности файл должен выбираться из проводника, но в ворде есть как и текст, так и таблицы, мне нужно только таблицы, если есть возможность первую строку перед таблицей (заголовок таблицы). Заранее спасибо
« Последнее редактирование: 10.08.2021, 15:22:33 от JustCommonNick » Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #1 : 10.08.2021, 15:29:32 »

Объясните чайнику, как создать макрос
объясните не чайникам - а что Вы уже умеете и что уже получилось? Или Вам надо прямо с самых азов все рассказать? Это ни разу не просто, особенно, когда даже нет понимания процесса.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
JustCommonNick
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 5


Просмотр профиля E-mail
« Ответ #2 : 10.08.2021, 15:43:33 »

объясните не чайникам - а что Вы уже умеете и что уже получилось?
Код: (vb)
Sub from_word()
    Dim objWrdApp As Object, objWrdDoc As Object
    
    Set objWrdApp = CreateObject("Word.Application")
    Set objWrdDoc = objWrdApp.Documents.Open("C:\Users\sysadmin\Desktop\CQR\CQR.docx")
    objWrdDoc.Range.Copy

    ActiveSheet.Paste

    objWrdDoc.Close False
    objWrdApp.Quit
    Set objWrdDoc = Nothing: Set objWrdApp = Nothing
End Sub

Есть вот такой макрос, но он подтягивает все данные из Word, мне по сути нужно узнать можно ли конкретно только таблицы из Word подтягивать и как это будет выглядеть на языке VBA
смотрите, файлы не могу отправить, конфиденциальная информация
Если разжевать то есть excel файл и word, в ворде есть как и текст просто так и таблички, табличек много и расстояние (в строках будет меняться в будущем) нужно из этого файла подтянуть только таблицы.
« Последнее редактирование: 11.08.2021, 09:39:56 от vikttur » Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #3 : 10.08.2021, 17:14:29 »

и как это будет выглядеть на языке VBA
Давайте пойдем дальше. Вот есть в Word 10 таблиц. Первую мы скопируем, начиная с ячейки А1. А куда вставлять остальные? Ниже, правее, на другой лист? Как Вы этот процесс видите?
Если разжевать
не надо нам ничего разжевывать - файлы можно подготовить и без конфиденциальных данных. А на словах и из первого сообщения понятно было, что что-то есть и что-то надо.
По сути, скопировать только таблицы не так сложно(друг под другом):
Код: (vb)
Sub from_word()
    Dim objWrdApp As Object, objWrdDoc As Object, objTbl As Object
   
    Set objWrdApp = CreateObject("Word.Application")
    objWrdApp.Visible = True
    Set objWrdDoc = objWrdApp.Documents.Open(ThisWorkbook.Path & "\CQR.docx")
   
    Range("A1").Select
    For Each objTbl In objWrdDoc.tables
        objTbl.Range.Copy
        ActiveSheet.Paste
        ActiveCell.Offset(objTbl.Rows.Count).Select
    Next
    objWrdDoc.Close False
    objWrdApp.Quit

    Set objWrdDoc = Nothing: Set objWrdApp = Nothing
End Sub

конечно, это для простых таблиц и без учета каких-либо нюансов.
« Последнее редактирование: 10.08.2021, 17:22:54 от Дмитрий Щербаков(The_Prist) » Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
JustCommonNick
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 5


Просмотр профиля E-mail
« Ответ #4 : 11.08.2021, 08:24:32 »

Давайте пойдем дальше. Вот есть в Word 10 таблиц. Первую мы скопируем, начиная с ячейки А1. А куда вставлять остальные? Ниже, правее, на другой лист? Как Вы этот процесс видите?не надо нам ничего разжевывать - файлы можно подготовить
Понимаю что на слепую трудно, но то что вы уже скинули, уже хорошо, так вот, если можно то вставлять правее, и еще, до этого не заметил, но в выводах есть тоже таблички на пару строк и столбцов, их бы как то обходить в VBA не знаю можно ли, но вот в программировании по логике можно брать те таблички, в которых строк больше, допустим, 6. Если возможно как то по другому, то будет здорово.
(файлы прикрепил)
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #5 : 11.08.2021, 08:45:54 »

если можно то вставлять правее
Можно. Но согласитесь, было бы правильнее, если бы это не надо было из Вас тянуть, для помощи Вам же? Улыбка
в программировании по логике можно брать те таблички, в которых строк больше, допустим, 6
Все верно. И для этого, как ни странно, надо именно логику включить Улыбка Если посмотреть мой код выше - там уже половина ответа есть: objTbl.Rows.Count
Накидал код - остальные нюансы, которые вдруг вспомните, старайтесь для начала самостоятельно решить:
Код: (vb)
Sub from_word()
    Dim objWrdApp As Object, objWrdDoc As Object, objTbl As Object
      
    Set objWrdApp = CreateObject("Word.Application")
    objWrdApp.Visible = True
    Set objWrdDoc = objWrdApp.Documents.Open(ThisWorkbook.Path & "\CQR.docx")
      
    Range("A1").Select
    For Each objTbl In objWrdDoc.tables
        If objTbl.Rows.Count > 6 Then
            objTbl.Range.Copy
            ActiveSheet.Paste
            ActiveCell.Offset(, objTbl.Columns.Count).Select
        End If
    Next
    objWrdDoc.Close False
    objWrdApp.Quit
  
    Set objWrdDoc = Nothing: Set objWrdApp = Nothing
End Sub


Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
JustCommonNick
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 5


Просмотр профиля E-mail
« Ответ #6 : 11.08.2021, 09:47:37 »

Можно. Но согласитесь...
Огромное человеческое спасибо! и за умные мыли и за решение проблемы!
Записан
JustCommonNick
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 5


Просмотр профиля E-mail
« Ответ #7 : 11.08.2021, 15:19:46 »

Можно. Но согласитесь...
Похоже придется понаглеть, информацию ну никак не могу найти по поводу передачи данных от Word к Excel
сейчас у меня проблемы со следующим:
1) нужно заголовки таблиц, потому что без них я не смогу сориентироваться в экспортированных таблицах
2) поиск и вставка данных. Вот есть таблица, чтобы взять данные, нужно обратить к диапазону и найти строку с ФИО или фамилией и последующие пару строк после фио занести на другой лист, при этом таблица должна искаться по ее заголовку (это уже в виде формулы, ну тут я более менее могу сам сообразить) единственное хочу знать возможно ли такое реализовать?
И буду рад если дадите наводку, где можно подучить VBA
« Последнее редактирование: 11.08.2021, 15:40:31 от JustCommonNick » Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru