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

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

Когда-то много лет назад писал макрос, как раз для этого случая.
Он убирал все лишние ячейки на сколько это возможно, расширяя оставшиеся до таких размеров, чтобы сам вид формы не изменился.
Не помню точно полностью я это реализовал или не полностью. Если найду, выложу.
...
Рейтинг: 0 / 0
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
    #36568139
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Player, не ведите в неправильном направлении.
...
Рейтинг: 0 / 0
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
    #36568419
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F, подскажите правильное направление.
или нужно обращаться к разработчикам Консультанта+?
...
Рейтинг: 0 / 0
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
    #36568459
f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или обращаться к разработчикам, или оставить как есть.
Вы не имеете права вносить изменения в чужую программу без согласования с разработчиком.
...
Рейтинг: 0 / 0
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
    #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
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
    #36568533
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Range("AB4").Select - это надо удалить, попало случайно
...
Рейтинг: 0 / 0
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
    #36568609
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Djon Player, спасибо! Особенно за идею.
буду пробовать.
...
Рейтинг: 0 / 0
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
    #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
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
    #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
Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
    #36569822
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Унифицированные формы документов в Консультанте+. Как бороться с форматированием?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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