Новости:

Название темы должно отражать суть задачи.
Темы типа "ПОМОГИТЕ!!!", "Срочно!" и т.п. будут удаляться без объяснения причин

Главное меню

Экспорт выборочных данных из Word в Excel

Автор JustCommonNick, 10.08.2021, 15:19:07

« назад - далее »

JustCommonNick

Доброго времени суток! Объясните чайнику, как создать макрос, при запуске которого будут экспортироваться данные из Word в Excel, по возможности файл должен выбираться из проводника, но в ворде есть как и текст, так и таблицы, мне нужно только таблицы, если есть возможность первую строку перед таблицей (заголовок таблицы). Заранее спасибо

Дмитрий Щербаков(The_Prist)

Цитата: JustCommonNick от 10.08.2021, 15:19:07Объясните чайнику, как создать макрос
объясните не чайникам - а что Вы уже умеете и что уже получилось? Или Вам надо прямо с самых азов все рассказать? Это ни разу не просто, особенно, когда даже нет понимания процесса.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

JustCommonNick

#2
Цитата: Дмитрий Щербаков(The_Prist) от 10.08.2021, 15:29:32объясните не чайникам - а что Вы уже умеете и что уже получилось?
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, в ворде есть как и текст просто так и таблички, табличек много и расстояние (в строках будет меняться в будущем) нужно из этого файла подтянуть только таблицы.

Дмитрий Щербаков(The_Prist)

#3
Цитата: JustCommonNick от 10.08.2021, 15:43:33и как это будет выглядеть на языке VBA
Давайте пойдем дальше. Вот есть в Word 10 таблиц. Первую мы скопируем, начиная с ячейки А1. А куда вставлять остальные? Ниже, правее, на другой лист? Как Вы этот процесс видите?
Цитата: JustCommonNick от 10.08.2021, 15:43:33Если разжевать
не надо нам ничего разжевывать - файлы можно подготовить и без конфиденциальных данных. А на словах и из первого сообщения понятно было, что что-то есть и что-то надо.
По сути, скопировать только таблицы не так сложно(друг под другом):
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

конечно, это для простых таблиц и без учета каких-либо нюансов.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

JustCommonNick

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

Дмитрий Щербаков(The_Prist)

Цитата: JustCommonNick от 11.08.2021, 08:24:32если можно то вставлять правее
Можно. Но согласитесь, было бы правильнее, если бы это не надо было из Вас тянуть, для помощи Вам же? :)
Цитата: JustCommonNick от 11.08.2021, 08:24:32в программировании по логике можно брать те таблички, в которых строк больше, допустим, 6
Все верно. И для этого, как ни странно, надо именно логику включить :) Если посмотреть мой код выше - там уже половина ответа есть: objTbl.Rows.Count
Накидал код - остальные нюансы, которые вдруг вспомните, старайтесь для начала самостоятельно решить:
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


Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

JustCommonNick

Цитата: Дмитрий Щербаков(The_Prist) от 11.08.2021, 08:45:54
Можно. Но согласитесь...
Огромное человеческое спасибо! и за умные мыли и за решение проблемы!

JustCommonNick

#7
Цитата: Дмитрий Щербаков(The_Prist) от 11.08.2021, 08:45:54
Можно. Но согласитесь...
Похоже придется понаглеть, информацию ну никак не могу найти по поводу передачи данных от Word к Excel
сейчас у меня проблемы со следующим:
1) нужно заголовки таблиц, потому что без них я не смогу сориентироваться в экспортированных таблицах
2) поиск и вставка данных. Вот есть таблица, чтобы взять данные, нужно обратить к диапазону и найти строку с ФИО или фамилией и последующие пару строк после фио занести на другой лист, при этом таблица должна искаться по ее заголовку (это уже в виде формулы, ну тут я более менее могу сам сообразить) единственное хочу знать возможно ли такое реализовать?
И буду рад если дадите наводку, где можно подучить VBA

Яндекс.Метрика Рейтинг@Mail.ru