Добрый день, коллеги! Прошу помощи.
Есть папка со множеством документов Word, документы сделаны (должны быть сделаны) по шаблону. В каждом документе есть таблица, ее надо выдернуть в Excel (безразлично, в одну книгу в разные листы или в разные книги, или даже в один лист); кроме того, надо добавить идентификатор, соответствующий файлу, чтобы понять, к чему относится выдернутая таблица (идентификатор - можно название файла, можно из текста документа №50Т00666.
В принципе, я нашел даже почти готовый макрос,
и даже шикарно описанный, но у меня уже мозг устал, а его надо обвязать необходимыми бантиками (перебор файлов в указанной папке, создание целевого файла, куда копировать данные, и т.п.)
Помогите дописать, пожалуйста!
(А может, у кого-то есть что-то готовое?)
Есть папка со множеством документов Word, документы сделаны (должны быть сделаны) по шаблону. В каждом документе есть таблица, ее надо выдернуть в Excel (безразлично, в одну книгу в разные листы или в разные книги, или даже в один лист); кроме того, надо добавить идентификатор, соответствующий файлу, чтобы понять, к чему относится выдернутая таблица (идентификатор - можно название файла, можно из текста документа №50Т00666.
Скрытый текст |
---|
В принципе, если я посижу достаточно долго над написанием и отладкой, я победю эту задачу. Я уже понасочинял и понасобирал из исходников кучу макросов для подобных задач. Но, к сожалению, тут не успеваю. Прошу помочь. |
В принципе, я нашел даже почти готовый макрос,
Скрытый текст |
---|
Sub Procedure_1() 'В константе "strDocFullName" нужно указать полное имя Word-документа, 'из которого нужно скопировать таблицу. Const strDocFullName As String = "C:\Users\User\Desktop\Из.docx" 'Для написания макроса, удобно подключить библиотеку для работы 'с программой "Word". Затем можно будет отключить эту библиотеку: 'Tools - References... - Microsoft Word версия Object Library. Dim myWord As Word.Application Dim docSource As Word.Document 'Запуск и VBA-наименование программы "Word". 'Даём программе "Word" VBA-имя "myWord" и через 'это имя будем работать с программой Word в макросе. Set myWord = CreateObject(Class:="Word.Application") 'Делаем программу Word видимой, чтобы было удобно писать код. myWord.Visible = True 'Открытие и VBA-наименование Word-файла. Set docSource = myWord.Documents.Open(Filename:=strDocFullName) 'Копирование первой таблицы в Word-файле. 'Range - это фрагмент Word-файла, где находится таблица. docSource.Tables(1).Range.Copy 'Выделение ячейки, куда будут вставлены данные. 'Для вставки в Excel будет использоваться метод "PasteSpecial", 'который относится к объекту "Worksheet". Метод "PasteSpectial" 'ещё есть у объекта "Range". У объекта "Worksheet" нельзя 'указать ячейку, куда надо вставить, поэтому нужно заранее 'выделить нужную ячейку, куда будут вставлены данные. ActiveSheet.Range("A1").Select 'Вставка скопированной таблицы в активный Excel-лист в выделенную ячейку. 'Код записал с помощью макрорекордера, делая такие действия в "Excel 2010": 'вкладка "Главная" - группа "Буфер обмена" - "Вставить (со стрелкой)" - '"Специальная вставка..." - кружок "Вставить" - "HTML". ActiveSheet.PasteSpecial Format:="HTML", Link:=False 'Чтобы в буфере обмена не было много данных, очищаем буфер обмена, 'копируя в него только одну ячейку. docSource.Tables(1).Cell(1, 1).Range.Copy 'Закрытие Word-документа. '0 - без сохранения. docSource.Close SaveChanges:=0 'Закрытие программы "Word". myWord.Quit SaveChanges:=0 End Sub |
Помогите дописать, пожалуйста!
(А может, у кого-то есть что-то готовое?)
Интересно, почему у чайников кривые ручки?