Форум программистов, компьютерный форум, киберфорум
MS Office Word
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 12
1

Необходимо скопировать в Exсel все таблицы

29.08.2015, 06:35. Показов 1346. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, форумчане!
Нужна ваша помощь.
Есть вордовский файл на 500 страниц, в нем таблицы и текст.
Необходимо скопировать в Exsel все таблицы.
Пытался сделать макросом, но выходил не корректно ввиду разной ширины столбцов.
Миниатюры
Необходимо скопировать в Exсel все таблицы  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.08.2015, 06:35
Ответы с готовыми решениями:

Необходимо скопировать все данные из книги Excel в строковую переменную
Есть одна проблема. Необходимо скопировать все данные из книги Excel в строковую переменную - в...

Взять 13 полей из последней таблицы Word'a и вставить в exсel
Собственно сабж. Я совсем новичок в этом деле, и по этому, хотелось бы узнать, на чём лучше...

Скопировать все строки из определенных полей одной таблицы в другую таблицу
Имеются 2 таблицы: ADOTable1 ADOTable6 Нужно скопировать все строки из полей AAA, BBB, CCC...

Необходимо суммировать всё с одной таблицы
есть код.необходимо суммировать всё с одной таблицы и прибавить к сумме другой и отнять...

7
0 / 0 / 0
Регистрация: 11.11.2012
Сообщений: 12
29.08.2015, 06:57  [ТС] 2
Вот примерный код который я переделывал
Но он копирует первую таблицу и ломается(
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
    Sub ktos()
        
        'В константе "strDocFullName" нужно указать полное имя Word-документа,
            'из которого нужно скопировать таблицу.
        Const strDocFullName As String = "C:\Users\Swokooy\Desktop\ktos\tom1.doc"
        
        'Для написания макроса, удобно подключить библиотеку для работы
            'с программой "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
0
Модератор
Эксперт MS Access
11962 / 4830 / 779
Регистрация: 07.08.2010
Сообщений: 14,149
Записей в блоге: 4
29.08.2015, 07:24 3
Вот примерный код который я переделывал
Но он копирует первую таблицу и ломается(
в вашем коде копируется только одна таблицв


------и что значит ломается
0
15146 / 6419 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
29.08.2015, 18:54 4
Swokooy,
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub Swokooy()
Dim xlApp As Object, xlWs As Object, t As Table, second As Boolean
  On Error Resume Next
  Set xlApp = GetObject(, "excel.application")
  If Err Then
    Err.Clear
    Set xlApp = CreateObject("excel.application")
    If Err Then
      MsgBox "Не удалось запустить Excel", vbCritical
      Exit Sub
    End If
  End If
  On Error GoTo 0
  xlApp.Visible = True
  Set xlWs = xlApp.Workbooks.Add(-4167).Worksheets(1) '-4167=xlWBATWorksheet
  For Each t In ActiveDocument.Tables
    t.Range.Copy
    xlWs.Paste xlWs.Cells(IIf(second, xlWs.UsedRange.Rows.Count + 2, 1), 1)
    second = True
  Next
End Sub
0
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 44
15.02.2016, 21:40 5
Здравствуйте!
Нашел вот такой замечательный код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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
Задача кода скопировать таблицу из word в excel.
У меня задача похожая, но отличается, на одно но. Я планировал вместо копирования таблицы
Visual Basic
1
docSource.Tables(1).Range.Copy
копировать текст. причем выбор текста должен выполняться по следующему принципу:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Set MyRange = ActiveDocument.Content
    With MyRange
        With .Find
            .ClearFormatting
            .Text = "начало"
            .Forward = True
            .Wrap = wdFindStop
            .Format = False
            .MatchCase = False
            .MatchWholeWord = True
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
            .Execute
            If .Found Then rStart = MyRange.End: rEnd = rStart
        End With
    End With
    Set MyRange = ActiveDocument.Content
    With MyRange
        With .Find
            .Text = "окончание"
            .Execute
            If .Found Then rEnd = MyRange.Start
        End With
    End With
    If rEnd > rStart Then
        ActiveDocument.Range(rStart, rEnd).Select
        Selection.Copy
    End If
То, что находится между словами "начало" и "окончание" должно попасть в буфер обмена и лечь в определенную ячейку excel.
Не подскажете как решить такую задачку?
Спасибо!
0
15146 / 6419 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
16.02.2016, 00:37 6
Цитата Сообщение от DmitryIgorevi4 Посмотреть сообщение
То, что находится между словами "начало" и "окончание" должно попасть в буфер обмена
Ну, попало в 28 строке. В чем проблема?
Опишите подробнее: где будет выполняться код - в Word или Excel? Файлы уже открыты или надо открыть/создать? Адрес "определенной ячейки" задан или ее надо как-то определить?
0
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 44
16.02.2016, 15:18 7
Доброе утро!
Цитата Сообщение от Казанский
Ну, попало в 28 строке. В чем проблема?
Опишите подробнее: где будет выполняться код - в Word или Excel? Файлы уже открыты или надо открыть/создать? Адрес "определенной ячейки" задан или ее надо как-то определить?
Запуск программы "Sub Procedure_1()" из Excel. Отключил два оператора:
Visual Basic
1
2
  Dim myWord As Word.Application
  Dim docSource As Word.Document
ибо с ними не работает...
Открываем excel, запускаем "Sub Procedure_1()". Макрос самостоятельно открывает файл "C:\Users\User\Desktop\Из.docx" .
Далее из документа "Из.docx" выделение и копирование текста между словами: "начало1" * "конец1" .
Далее вставляем из буфера в ячейку ну скажем A1
Visual Basic
1
ActiveSheet.Range("A1").Select
Таких обращений к "Из.docx" может быть множество. Каждое обращение будет вставляться в отдельную ячейку.
Таким образом, задача макроса собирать из рассматриваемого документа "Из.docx" данные, спрятанные между фразами и формировать свою базу данных в excel.

Добавлено через 5 часов 7 минут
По сути проблема в том, что один макрос написан для excel, вторая для word. Как макрос для word (поиск и копирование текста между словами) интегрировать в макрос для excel, для формирования мини базы данных?
0
0 / 0 / 0
Регистрация: 23.01.2014
Сообщений: 44
17.02.2016, 18:05 8
Всем добрый вечер!
Нашел промежуточное решение:
в конце документа word в каждой отдельной строке собираю данные из документа. Потом, правда вручную, копирую эту информацию в excel.
Дальше с этими данными можно что угодно делать.
0
17.02.2016, 18:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.02.2016, 18:05
Помогаю со студенческими работами здесь

Необходимо при помощи SQL запроса скопировать ВСЕ записи из TAB1 DB1 в TAB1 DB2
Здравствуйте уважаемые специалисты и гуру SQL. Прошу Вашей помощи для написания запроса SQL,...

Все данные таблиц одной базы необходимо добавить в таблицы такой же базы.
В FoxPro я могу обойтись двумя операторами на на каждую таблицу: use А append from В и все...

Необходимо скопировать раздел реестра
Кто-нибудь решал подобную задачу? Необходимо скопировать раздел реестра (например...

Необходимо сравнить, переименовать, скопировать файл
У меня проблема в автоматизации обновления, мне необходимо: Сравнить файл на рабочем ПК...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru