Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Унифицированные формы документов в Консультанте+. Как бороться с форматированием? / 14 сообщений из 14, страница 1 из 1
07.04.2010, 14:13
    #36565918
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
Добрый день!
Вот берешь форму (например статистики, авансового отчета али еще каку) документа в файле экселя из Консультанта+.
А таааама такое наформатировано.
как бороться?
может где нормальные формы можно найти?
...
Рейтинг: 0 / 0
07.04.2010, 18:03
    #36566776
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
Сергей06,

Если вам нужны формы для Консультанта, то это в другой топик.
Если вы хотите отформатировать в Excel уже полученные формы - то сфомулируйте вопрос более подробно.
...
Рейтинг: 0 / 0
08.04.2010, 06:07
    #36567339
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
big-duke, попробую.
Приладываю форму, полученную из Консультанта+
Куча объедененных ячеек.
просто бесит такое форматирование.
...
Рейтинг: 0 / 0
08.04.2010, 11:16
    #36567857
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
Ну а что вы собственно хотите?
Из программы идет обращение к конкретным ячейкам шаблона. Если что-то измените, работать будет некорректно.
Со всеми предложениями обращайтесь к разработчикам.
...
Рейтинг: 0 / 0
08.04.2010, 12:17
    #36568057
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
Сергей06,

Когда-то много лет назад писал макрос, как раз для этого случая.
Он убирал все лишние ячейки на сколько это возможно, расширяя оставшиеся до таких размеров, чтобы сам вид формы не изменился.
Не помню точно полностью я это реализовал или не полностью. Если найду, выложу.
...
Рейтинг: 0 / 0
08.04.2010, 12:36
    #36568139
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
Djon Player, не ведите в неправильном направлении.
...
Рейтинг: 0 / 0
08.04.2010, 14:00
    #36568419
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
F, подскажите правильное направление.
или нужно обращаться к разработчикам Консультанта+?
...
Рейтинг: 0 / 0
08.04.2010, 14:11
    #36568459
f
f
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
Или обращаться к разработчикам, или оставить как есть.
Вы не имеете права вносить изменения в чужую программу без согласования с разработчиком.
...
Рейтинг: 0 / 0
08.04.2010, 14:33
    #36568529
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
F,

Так тут речь вряд ли идёт об изменении программы.
Обрисую свою ситуацию.
У нас на работе раньше делали своды по различным формам отчётности по 22 филиалам.
Формы либо сами клепали, либо брали при их наличии в Консультанте.
Но форма в консультанте имеет нехороший вид, там используется слишком избыточное количество ячеек (а точнее столбцов), что очень было не удобно и мне, как человеку, который должен был устанавливать на форме правильные защиты ячеек, а так-же делать сводный файл по 22 филиалам так и заполняющим.
Поэтому приходилось удалять эти избыточные ячейки.
Дело в том, что тут речь не идёт о том, что потом эти формы куда-то отправляются и там они машинно обрабатываются и они не должны быть неизменны (отличаться от оригинала).
Они лишь использовались для внутреннего сбора данных.

Макрос я кстати нашёл, но он вроде как не совсем доработанный и косячно работает, возможно я его лишь начинал делать, но потом забил на него, не доделав до конца. А так как филиал наш давно уже укрупнили и своды такие мы больше не делаем, то больше этим тоже уже не занимаюсь.

Тем не менее могу дать направление, например такой кусок кода, который только что написал:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Sub Удалить_бесполезный_столбец()
 Dim j As Long
 
 j = ActiveCell.Column
 Columns(j -  1 ).ColumnWidth = Columns(j -  1 ).ColumnWidth + Columns(j).ColumnWidth
 Columns(j).Delete Shift:=xlToLeft
    Range("AB4").Select
End Sub
Смысл тут такой. Если открыть форму из Консультанта, то можно увидеть там такие столбцы, при удалении которых ничего не произойдёт, т.е. нигде не пропадёт текст, не пропадут рамки ячеек и вид формы останется более менее точно такой-же.
Так вот этот макрос позволяет удалять такие столбцы, а у столбца левее такого удаляемого столбца будет увеличена ширина на ширину удаляемого столбца. Поэтому визуально всё останется по прежнему, а количество лишних ячеек уменьшиться.
Визуально человеку легко находить такие столбцы, написать же корректный код, который может выявлять такие столбцы чуть по сложнее, но тоже можно.

Так что надо написать код, который просматривает все столбцы на заданном листе и каким-то образом определяет "бесполезные" (в той терминологии которую я имел ввиду) столбцы и к ним применяет макрос "Удалить_бесполезный_столбец".
В конечном итоге должно остаться минимальное количество столбцов, которое может содержать весь текст имеющийся на листе , а так-же рамки ячеек, так чтобы при этом всё выглядело как в оригинале.
...
Рейтинг: 0 / 0
08.04.2010, 14:34
    #36568533
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
Range("AB4").Select - это надо удалить, попало случайно
...
Рейтинг: 0 / 0
08.04.2010, 15:00
    #36568609
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
Djon Player, спасибо! Особенно за идею.
буду пробовать.
...
Рейтинг: 0 / 0
08.04.2010, 15:46
    #36568771
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
Вот на скорую руку набросал такой макрос:

Код: plaintext
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.
55.
56.
Option Explicit

Sub Удалить_бесполезный_столбец()
 Dim r1 As Long
 Dim r2 As Long
 Dim c1 As Long
 Dim c2 As Long
 Dim i As Long
 Dim j As Long
 Dim udalit_stolbec As Boolean
 
 Application.ScreenUpdating = False
 Application.Calculation = xlCalculationManual
 
 With ActiveSheet.UsedRange
   r1 = .Rows( 1 ).Row
   r2 = r1 + .Rows.Count -  1 
   c1 = .Columns( 1 ).Column
   c2 = c1 + .Columns.Count -  1 
 End With
 
 
 For j = c1 +  1  To c2
  udalit_stolbec = True
  
  For i = r1 To r2
   With Cells(i, j)
     If .Formula <> "" Or _
      .Borders(xlEdgeLeft).LineStyle <> xlNone Or _
      .Borders(xlEdgeRight).LineStyle <> xlNone Or _
      .Borders(xlEdgeTop).LineStyle <> .Offset( 0 , - 1 ).Borders(xlEdgeTop).LineStyle Or _
      .Borders(xlEdgeBottom).LineStyle <> .Offset( 0 , - 1 ).Borders(xlEdgeBottom).LineStyle Then
      udalit_stolbec = False
      Exit For

     End If
   End With
  Next i
  
  If udalit_stolbec Then
   Columns(j -  1 ).ColumnWidth = Columns(j -  1 ).ColumnWidth + Columns(j).ColumnWidth +  0 . 288 
   Columns(j).Delete Shift:=xlToLeft
   
   If j >= c2 Then Exit For

   c2 = c2 -  1 
   j = j -  1 

  End If
 Next j
 
 Application.Calculation = xlCalculationAutomatic
 Application.ScreenUpdating = True
 
 MsgBox "Готово, большинство лишних столбцов удалены", vbInformation
 
End Sub
Для стопроцентно корректной работы туда в условия проверки ещё надо кучу условий добавить, но в принципе и так уже довольно не плохо.
Правда заметил, одну деталь, что в некоторых местах, где визуально вроде столбец удовлетворял условию, что его можно удалить, а макрос не хотел его удалять.
Стал разбираться с этой проблемой, оказалось, что проблема связанная с тем, что в форме имеются объединенные ячейки в которых есть внутренние вертикальные границы.
Пока ячейка объединенная, эти границы на экране не показываются, но стоит убрать объединение, как получается множество ячеек между которыми нарисованы вертикальные линии.
Буду дальше дорабатывать. Можно в начале макроса добавить код, который просто убирает все промежуточные границы внутри объединённый ячеек, т.к. они всё равно не играют роли, а только мешают.
...
Рейтинг: 0 / 0
08.04.2010, 16:29
    #36568911
Djon Player
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
Доработал макрос, добавил предварительную очистку внутренних вертикальных границ внутри объединённых ячеек.
Макрос действует на активный лист.

Код: plaintext
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.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
Sub Удалить_бесполезные_столбцов()
 Dim r1 As Long
 Dim r2 As Long
 Dim c1 As Long
 Dim c2 As Long
 Dim i As Long
 Dim j As Long
 Dim ch As Range
 Dim udalit_stolbec As Boolean
 
 Application.ScreenUpdating = False
 Application.Calculation = xlCalculationManual
 

 For Each ch In ActiveSheet.UsedRange
  
  If ch.MergeCells = True And ch.Address = ch.MergeArea.Cells( 1 ,  1 ).Address Then
   With ch.MergeArea
     .Borders(xlInsideVertical).LineStyle = xlNone
   End With
  End If
 Next ch
 
 
 With ActiveSheet.UsedRange
   r1 = .Rows( 1 ).Row
   r2 = r1 + .Rows.Count -  1 
   c1 = .Columns( 1 ).Column
   c2 = c1 + .Columns.Count -  1 
 End With
 
 
 For j = c1 +  1  To c2
  udalit_stolbec = True
  
  For i = r1 To r2
   With Cells(i, j)
     If .Formula <> "" Or _
      .Borders(xlEdgeLeft).LineStyle <> xlNone Or _
      .Borders(xlEdgeRight).LineStyle <> xlNone Or _
      .Borders(xlEdgeTop).LineStyle <> .Offset( 0 , - 1 ).Borders(xlEdgeTop).LineStyle Or _
      .Borders(xlEdgeBottom).LineStyle <> .Offset( 0 , - 1 ).Borders(xlEdgeBottom).LineStyle Then
      udalit_stolbec = False
      Exit For

     End If
   End With
  Next i
  
  If udalit_stolbec Then
   Columns(j -  1 ).ColumnWidth = Columns(j -  1 ).ColumnWidth + Columns(j).ColumnWidth +  0 . 288 
   Columns(j).Delete Shift:=xlToLeft
   If j >= c2 Then Exit For
   c2 = c2 -  1 
   j = j -  1 

  End If
 Next j
 
 Application.Calculation = xlCalculationAutomatic
 Application.ScreenUpdating = True
 
 MsgBox "Готово, лишние столбцы удалены", vbInformation
 
End Sub
Макрос корректно работает, когда все закрашенные границы ячеек окрашены в один цвет например черный. Так-же те ячейки, которые закрашены, тоже должны быть окрашены в один какой-то цвет.
Для форм из Консультанта это условие соблюдается. А если будет форма, в котором ячейки окрашены в различные цвета и границы окрашены в различные цвета тоже ничего страшного не произойдёт, возможно (но не обязательно) пропадание окрасок ячеек и границ (т.е. границы останутся, но какой-то цвет может пропасть).
В любом случае всегда надо проверять результат.

Т.к. не хотелось делать слишком сложный макрос, по этой причине любая из объединенных ячеек, содержащая 3 и более клеток, после ужатия будет иметь не менее 2 клеток по ширине.
...
Рейтинг: 0 / 0
09.04.2010, 06:22
    #36569822
Сергей06
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
Спасибо!
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Унифицированные формы документов в Консультанте+. Как бороться с форматированием? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]