Как сделать автоматическое копирование таблицы из Word в Excel?
Макрос будет запускаться из Excel.
Такой результат Вам подходит (см. вложенные файлы)?
Я это сделал следующим образом без макросов:
- выделил таблицу в Word-файле;
- скопировал выделенную таблицу;
- перешёл на Excel-лист;
- выделил ячейку A1 и вставил скопированное.
Такой результат Вас устраивает? Если устраивает, то я попробую сделать эти действия с помощью макроса.
[вложение удалено администратором]
Да было бы хорошо, если можно вставлять в ячейку z6, и код для разных таблиц.
Макрос (см. ниже) копирует первую таблицу из Word-файла в активный лист, в выделенную ячейку.
Макрос
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
больше спасибо, макрос работает