1

Тема: Редактирование таблиц и расчет суммы данных в таблиц

Доброго времени суток!!!
ПОМОГИТЕ ПОЖАЛУЙСТА!!!
Есть таблицы (см. лист 1) которые формируются из 1С (в ней нельзя ни чего исправлять:)). Нужно что бы они редактировались следующим образом (см. лист 2) где есть надпись "Точки подключения соответствующие объектам" объединение ячеек по горизонтали и выравнивание по левой стороне, количество таблиц всегда разное. И главное что бы в пустых ячейках где написано 1 квартал 2 квартал и т.д. считалась сумма значений(см. лист 2).
Помогите пожалуйста очень нужно.
Спасибо.
P.S. Extcel-е нельзя так как форма утвержденная только в WORD

Отредактировано gaddenis (02.03.2011 21:16:28)

Post's attachments

1.doc 73 Кб, 3 скачиваний с 2011-03-02 

You don't have the permssions to download the attachments of this post.

2

Re: Редактирование таблиц и расчет суммы данных в таблиц

Единственное на что меня хватило это вот:

Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 28.12.2010 Admin
'
Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "Точки подключения соответствующие объектам"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
1: Selection.MoveLeft Unit:=wdCharacter, Count:=1
    Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    If Selection.Columns.Count = 1 Then
     GoTo 2
    End If
    Selection.Cells.Merge
    Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
    Selection.MoveDown Unit:=wdLine, Count:=1
    If Selection.Find.Execute = True Then
    GoTo 1
    End If
2:
  Dim oTbl As Table
Dim oCll As Cell
For Each oTbl In ActiveDocument.Tables
   For Each oCll In oTbl.Range.Cells
      If Len(oCll.Range.Text) = 2 Then
         oCll.Range.Text = "0,000"
      End If
   Next
Next
For Each oTbl In ActiveDocument.Tables
  Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "1 квартал"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.MoveLeft Unit:=wdCharacter, Count:=2
    Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.MoveDown Unit:=wdLine, Count:=2
    Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Find.ClearFormatting
       With Selection.Find
        .Text = "газ на"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.MoveUp Unit:=wdLine, Count:=1
    Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Selection.Delete Unit:=wdCharacter, Count:=1
Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "газ на"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.MoveUp Unit:=wdLine, Count:=1
    Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Selection.Delete Unit:=wdCharacter, Count:=1
Next

End Sub

Отредактировано gaddenis (09.03.2011 07:26:43)

3

Re: Редактирование таблиц и расчет суммы данных в таблиц

Еще додумался до этого, считать сумму. Но бывают случаии когда бывает сложная таблица с несколькими строками от куда нужно взять данные как быть с такими даже не знаю:(

Sub Макрос5()
'
' Макрос5 Макрос
' Макрос записан 11.03.2011 Admin
'
For Each oTbl In ActiveDocument.Tables
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "квартал"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.MoveDown Unit:=wdLine, Count:=3
    Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.InsertFormula Formula:="=SUM(b5:D5)", NumberFormat:="# ###0,000"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.InsertFormula Formula:="=SUM(e5:G5)", NumberFormat:="# ###0,000"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.InsertFormula Formula:="=SUM(H5:J5)", NumberFormat:="# ###0,000"
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.InsertFormula Formula:="=SUM(K5:M5)", NumberFormat:="# ###0,000"
Next
End Sub

4

Re: Редактирование таблиц и расчет суммы данных в таблиц

На сколько я понял из 1С Вы получаете практически всё в том виде, в котором нужно, за исключением того, что нули в сумме у Вас не отображаются, а ячейка "Точки подключения..." должна быть на всю ширину таблицы.
Пинайте Ваших программистов 1С, Вам надо, чтобы нулевые значения отображались в сумме и ячейки объединить, пусть доделывают работу. Не стоит это дело Ваших усилий.

Word не может "тупить".
Он - всего лишь программа, выполняющая наши команды.

5

Re: Редактирование таблиц и расчет суммы данных в таблиц

уже пнул;)

6

Re: Редактирование таблиц и расчет суммы данных в таблиц

Сообщите, как результат будет, очень интересно знать на сколько оперативно работают программеры в других местах, я от своих пол года поставленной задачи добивался.

Word не может "тупить".
Он - всего лишь программа, выполняющая наши команды.