Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Вывод отчёта в Word в несколько колонок  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 133
Здравствуйте!

Не выводил ли кто-нибудь отчёт в Word в несколько колонок? Что-то не получается с середины текста перед таблицей разбить страницу на две колонки, а потом после таблицы вернуть опять одну.

Макрос сначала такой: 
Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdExtend  
      Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend  
      Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend  
      Selection.MoveRight Unit:=wdCharacter, Count:=4, Extend:=wdExtend  
      If ActiveWindow.View.SplitSpecial <> wdPaneNone Then  
          ActiveWindow.Panes(2).Close  
      End If  
      If ActiveWindow.ActivePane.View.Type <> wdPrintView Then  
          ActiveWindow.ActivePane.View.Type = wdPrintView  
      End If  
      ActiveDocument.Range(Start:=Selection.Start, End:=Selection.Start). _  
          InsertBreak Type:=wdSectionBreakContinuous  
      Selection.Start = Selection.Start + 1  
      ActiveDocument.Range(Start:=Selection.End, End:=Selection.End).InsertBreak _  
           Type:=wdSectionBreakContinuous  
      With Selection.PageSetup.TextColumns  
          .SetCount NumColumns:=2  
          .EvenlySpaced = True  
          .LineBetween = False  
          .Width = CentimetersToPoints(7.62)  
          .Spacing = CentimetersToPoints(1.25)  
      End With  
      Selection.MoveRight Unit:=wdCharacter, Count:=2  
    
      Selection.EscapeKey  
  End Sub  
  Sub Макрос1()  
  '  
  Потом такой  
  ' Макрос1 Макрос  
  '  
  '  
      If ActiveWindow.View.SplitSpecial <> wdPaneNone Then  
          ActiveWindow.Panes(2).Close  
      End If  
      If ActiveWindow.ActivePane.View.Type <> wdPrintView Then  
          ActiveWindow.ActivePane.View.Type = wdPrintView  
      End If  
      With ActiveDocument.Range(Start:=Selection.Start, End:=ActiveDocument. _  
          Content.End).PageSetup.TextColumns  
          .SetCount NumColumns:=1  
          .EvenlySpaced = True  
          .LineBetween = False  
          .Width = CentimetersToPoints(16.5)  
      End With  
      Selection.TypeText Text:="Текст"  
  End Sub
Чтобы получилось, как в прилагаемом файле.

К сообщению приложен файл. Размер - 46Kb
26 сен 18, 11:40    [21686479]     Ответить | Цитировать Сообщить модератору
 Re: Вывод отчёта в Word в несколько колонок  [new]
deleteant
Member

Откуда: Севастополь
Сообщений: 37
Если речь идет о формировании отчета в Word из VFP. Я сначала заранее формирую вордовский шаблон, отформатированный нужным мне образом, а потом открываю его из фокса и набиваю его в нужных местах недостающими данными -- таблицами, текстом, картинками. Макросы Word использую косвенно, для получения нужного кода для преобразования его в код VFP. Ну, как учил Базиян :)
28 сен 18, 08:24    [21688700]     Ответить | Цитировать Сообщить модератору
 Re: Вывод отчёта в Word в несколько колонок  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 133
В отформатированную предварительно таким образом таблицу данные вводятся раза в два медленнее. И таблиц может быть несколько, зависит от условий.
28 сен 18, 09:35    [21688760]     Ответить | Цитировать Сообщить модератору
 Re: Вывод отчёта в Word в несколько колонок  [new]
deleteant
Member

Откуда: Севастополь
Сообщений: 37
Да, есть такое. Вставляю данные поячеечно. Но, если обуздать метод InsertDatabase, то импорт происходит очень быстро. Количество таблиц роли не играет, сколько надо, столько и вставляю. В шаблоне делаю шапку для каждой таблицы с пустой строкой, в фоксе выбираю нужную таблицу и снаряжаю данными. С InsertDatabase форматирование никак победить не могу. С нашими объемами и поячеечная вставка вполне устраивает. Видимо, посему и не парюсь :)
28 сен 18, 11:05    [21688848]     Ответить | Цитировать Сообщить модератору
 Re: Вывод отчёта в Word в несколько колонок  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 133
Я имею в виду, что количество таблиц в самом отчёте может зависеть от условий. Шаблон так просто не создать.

* Встаём в нужное место и делаем раздел до конца документа
lnStart = THIS.word.Selection.Start
THIS.Word.ActiveDocument.Range(m.lnStart, m.lnStart).InsertBreak(3)

* Делаем колонки (pNCol штук шириной pWidth и расстоянием между ними pSpace)
lnStart = THIS.word.Selection.Start+1
lnEnd   = THIS.word.ActiveDocument.Content.End  
       
WITH THIS.Word.ActiveDocument.Range(m.lnStart, m.lnEnd)
  WITH .PageSetup.TextColumns
    .SetCount(pNCol) && NumColumns:=2
    .EvenlySpaced = -1 && True

    IF pNCol>1
     .LineBetween = 0 && False
     .Width = pWidth*28.22222 && CentimetersToPoints(7.62)
     .Spacing = pSpace*28.22222 && CentimetersToPoints(1.25)
    ENDI
  ENDW     
ENDW


Далее делаем новый раздел и устанавливаем количество колонок 1 штуку.
28 сен 18, 12:21    [21688949]     Ответить | Цитировать Сообщить модератору
 Re: Вывод отчёта в Word в несколько колонок  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 133
THIS.Word - это ссылка на объект create('word.application')
28 сен 18, 12:26    [21688953]     Ответить | Цитировать Сообщить модератору
 Re: Вывод отчёта в Word в несколько колонок  [new]
deleteant
Member

Откуда: Севастополь
Сообщений: 37
Нужно уйти с символа разрыва раздела. Между добавлением раздела и делением на колонки вставил две пустые строки и поднялся на одну строку. Все отработало, колонки разбились:

THIS.Word.Selection.TypeParagraph
THIS.Word.Selection.TypeParagraph
THIS.Word.Selection.MoveUp(wdLine,1)
28 сен 18, 13:58    [21689076]     Ответить | Цитировать Сообщить модератору
 Re: Вывод отчёта в Word в несколько колонок  [new]
deleteant
Member

Откуда: Севастополь
Сообщений: 37
Если что, wdLine=5
28 сен 18, 14:04    [21689081]     Ответить | Цитировать Сообщить модератору
 Re: Вывод отчёта в Word в несколько колонок  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 133
Вот и славно. Мы сами можем теперь всех учить.
28 сен 18, 14:57    [21689142]     Ответить | Цитировать Сообщить модератору
 Re: Вывод отчёта в Word в несколько колонок  [new]
deleteant
Member

Откуда: Севастополь
Сообщений: 37
Шаблон, кста, тож программно формирую, если количество таблиц заранее неизвестно. На базе шаблона же с одной таблицей.
28 сен 18, 15:39    [21689216]     Ответить | Цитировать Сообщить модератору
 Re: Вывод отчёта в Word в несколько колонок  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 133
Так как отчёты все индивидуальны и их не так много, я предпочитаю в шаблоне сделать заготовки для наименований/заголовков (всё в виде табличек, чтобы удобно было вставать в нужное место-ячейку) и сложных шапок основных таблиц. Чтобы не вырисовывать всю красоту в программе. Потом только данные печатаю.
Но иногда надо что-нибудь эдакое выкинуть. Например, если хотят вывести все данные или полные наименования - расширяю столбцы и печатаю во всю страницу, если только итоги - в две колонки на странице. На каждую комбинацию условий шаблонов не напасёшься.
28 сен 18, 16:52    [21689322]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить