Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 08:50   #1
Balexander
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 14
По умолчанию Таблицу в отдельный файл

Добрый день. В документе Word есть несколько таблиц. Они с произвольный количеством строк, но заведомо известно, что у них 5 столбцов.
Как эти таблицы записать каждую в свой отдельный вордовый файл?

И еще никак не могу решить небольшую задачку: просматриваю в документ в цикле от1 до номера последнего параграфа. Как на i-м параграфе организовать поиск ", 2" и замену этой комбинации на ", (406) 2". Потом в этом же параграфе найти ": 19" и заменить это на ": (407) 19"
Balexander вне форума Ответить с цитированием
Старый 16.11.2010, 09:51   #2
forumWord
Пользователь
 
Регистрация: 23.09.2010
Сообщений: 65
По умолчанию

Цитата:
у них 5 столбцов.
При чём здесь столбцы?
forumWord вне форума Ответить с цитированием
Старый 16.11.2010, 10:29   #3
Balexander
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 14
По умолчанию

Т.к. я, к сожалению, не особо силен в программировании, то указал это число на всякий случай. Может быть это нужная информация
Balexander вне форума Ответить с цитированием
Старый 16.11.2010, 11:29   #4
forumWord
Пользователь
 
Регистрация: 23.09.2010
Сообщений: 65
По умолчанию

Balexander, пока вот так придумал:
Код:
Sub Макрос1()
Dim oTable As Table
Dim oNewDocument As Word.Document
Dim vCounter As Long
For vCounter = 1 To ActiveDocument.Tables.Count
    ActiveDocument.Tables(vCounter).Range.Copy
    Set oNewDocument = Documents.Add(Visible:=False)
    With oNewDocument
        .SaveAs FileName:="C:\Таблица № " & vCounter
        .Range.Paste
        .Save
        .Close
    End With
Next
End Sub

Последний раз редактировалось forumWord; 16.11.2010 в 11:32.
forumWord вне форума Ответить с цитированием
Старый 16.11.2010, 11:59   #5
Balexander
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 14
По умолчанию

Огромное спасибо!
Все заработало. Сейчас сформирую названия файлов и выбор пути. И эта часть будет сделана. Еще раз спасибо.

Может быть вы дадите подсказочку по второму вопросу?
Balexander вне форума Ответить с цитированием
Старый 16.11.2010, 12:14   #6
forumWord
Пользователь
 
Регистрация: 23.09.2010
Сообщений: 65
По умолчанию

Код:
Sub Макрос1()
Dim vCounter As Long
For vCounter = 1 To ActiveDocument.Paragraphs.Count
    If vCounter = "указывается номер нужного абзаца" Then
        ActiveDocument.Paragraphs(vCounter).Range.Find.Execute findtext:=", 2", replacewith:=", (406) 2", Replace:=wdReplaceAll
        ActiveDocument.Paragraphs(vCounter).Range.Find.Execute findtext:=": 19", replacewith:=": (407) 19", Replace:=wdReplaceAll
    End If
Next
End Sub
forumWord вне форума Ответить с цитированием
Старый 16.11.2010, 13:23   #7
Balexander
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 14
По умолчанию

Прошу прощения, но тут еще всплыло действие после замены в конкретном абзаце.
Нужно в конце этого абзаца дописать "(415)"

И еще нужно удалить все абзацы из документа в которых присутствует слово "Аналогичные".

Я еще только на начальном пути изучения VBA, а нужно срочно обработать кучу огромных файлов. Без макроса я буду это делать до майских праздников
Спасибо!

Последний раз редактировалось Balexander; 16.11.2010 в 14:13.
Balexander вне форума Ответить с цитированием
Старый 16.11.2010, 17:33   #8
forumWord
Пользователь
 
Регистрация: 23.09.2010
Сообщений: 65
По умолчанию

Только примитивный способ придумал:
Код:
Sub Макрос1()
Dim vCounter As Long
Dim myRange As Range
For vCounter = 1 To ActiveDocument.Paragraphs.Count
    If vCounter = "указывается номер нужного абзаца" Then
        ActiveDocument.Paragraphs(vCounter).Range.Find.Execute findtext:=", 2", replacewith:=", (406) 2", Replace:=wdReplaceAll
        ActiveDocument.Paragraphs(vCounter).Range.Find.Execute findtext:=": 19", replacewith:=": (407) 19", Replace:=wdReplaceAll
        ActiveDocument.Paragraphs(vCounter).Range.Select
        Selection.EndKey
        Selection.Text = "(415)"
    End If
Next
End Sub
И ещё вот так:
Код:
Sub Макрос1()
Dim oParagraph As Paragraph
For Each oParagraph In ActiveDocument.Paragraphs
    If InStr(oParagraph, "Аналогичные") > 0 Then
        oParagraph.Range.Delete
    End If
Next
End Sub

Последний раз редактировалось forumWord; 16.11.2010 в 17:37.
forumWord вне форума Ответить с цитированием
Старый 16.11.2010, 21:40   #9
Balexander
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 14
По умолчанию

Огромное спасибо!
Balexander вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сохранить базу в отдельный .mdb файл GenniY БД в Delphi 0 23.05.2010 20:23
Сохранение листа в отдельный файл barbus Microsoft Office Excel 11 26.02.2010 19:15
Обработка текста и запись результата в отдельный файл MrakSPb Общие вопросы C/C++ 2 20.12.2009 01:41
Сохранения каждой главы в отдельный файл mamed05 Microsoft Office Word 8 22.05.2009 16:19
Сохранение текущего листа Excel в отдельный файл IpS Microsoft Office Excel 10 04.10.2008 13:45