Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / работа с таблицами Word / 25 сообщений из 34, страница 1 из 2
24.03.2016, 17:29
    #39199991
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
Всем доброго дня.
Устал искать по форумам и с макросами не получается.
Вот код файл приложен в архиве.
Смысл кода он создает вордовский документ и добавляет туда таблицу.
Есть 3 вопроса:
1) нужно, выделив, конкретный столбец таблицы в ворде отформатировать, поменяв шрифт и ориентацию
нашел как выделить столбец m.loDoc.Tables(1).Columns(4).Select , а вот как отформатировать не работают коды по примеру макросов и с форумов.........? (нашел как каждую ячейку в таблице отформатировать(код тут же есть закомменторованный), но тогда выполнение кода еще больше по времени увеличивается, вижу выход изначально отформатировать столбец, вот только как...)

2) как можно ускорить выполнение данного кода, уже очень долго заполняется вордовский документ, особенно ворд версии 2013, а вот 2003 очень быстро его создает?

3) делаю переход на следующую строку (или вставку ее) через
.InsertParagraphAfter()
.InsertParagraphAfter()
в разных на разных компах , пока не проверял в разных ли версиях ворда, но выдает то одну строчку, то две, хотя по факту должен две выдавать.......



#INCLUDE msWord.h
#DEFINE True .T.
#DEFINE False .F.
* Создаем объект Word
LOCAL loWord
loWord=CREATEOBJECT('Word.Application')
* Сразу делаем его видимым для отладки
loWord.Visible=.T.

* Создаем в нем новый документ
LOCAL loDoc
loDoc = m.loWord.Documents.Add()

* альбомная ориентация
* m.loDoc.PageSetup.Orientation = wdOrientLandscape

* поля страницы
m.loDoc.PageSetup.TopMargin=13.4
m.loDoc.PageSetup.BottomMargin=28.3
m.loDoc.PageSetup.LeftMargin=28.3
m.loDoc.PageSetup.RightMargin=28.3

* добавляем в документ нужные строки с их форматированием
LOCAL oRange
oRange = m.loDoc.Range()
oRange.Collapse(wdCollapseStart)
WITH oRange
.ParagraphFormat.Alignment = wdAlignParagraphLeft
.InsertAfter('ЗАО "Инвестгрупп" Ф/К 0200322523523523')
.Font.Size = 8
.Font.Name = "Courier New"
.MoveEnd(wdParagraph,1)
.Bold = .T.
.Collapse(wdCollapseEnd)
.InsertParagraphAfter()
.InsertParagraphAfter()
.InsertAfter('Накладная на отгрузку № ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .F.
.Collapse(wdCollapseEnd)
.InsertAfter('123456')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
.InsertAfter(' Дата отгрузки ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .F.
.Collapse(wdCollapseEnd)
.InsertAfter('12.04.2016')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
.InsertAfter(' года.')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .F.
.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Collapse(wdCollapseEnd)
.InsertParagraphAfter()
.InsertParagraphAfter()
.Font.Size = 6
.Font.Name = "Courier New"
.Collapse(wdCollapseEnd)
.InsertAfter(' С участка ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .F.
.Collapse(wdCollapseEnd)
.InsertAfter('ЗАО "ТИРАЭТ" 1СКЛАД ТИРАСПОЛЬ ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
.InsertAfter(' По счету/заказу ')
.Bold = .F.
.Collapse(wdCollapseEnd)
.InsertAfter('987654')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
.ParagraphFormat.Alignment = wdAlignParagraphLeft
.Collapse(wdCollapseEnd)
.InsertParagraphAfter()
.InsertParagraphAfter()
.Font.Size = 6
.Font.Name = "Courier New"
.Collapse(wdCollapseEnd)
.InsertAfter(' Покупатель ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .F.
.Collapse(wdCollapseEnd)
.InsertAfter('ПРИДНЕСТРОВСКИЙ СБЕРБАНК')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
.Bold = .T.
.ParagraphFormat.Alignment = wdAlignParagraphLeft
.Collapse(wdCollapseEnd)
.InsertParagraphAfter()
.InsertParagraphAfter()
.Font.Size = 6
.Font.Name = "Courier New"
.Collapse(wdCollapseEnd)
.InsertAfter(' Получил ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .F.
.Collapse(wdCollapseEnd)
.InsertAfter('Горун Е.В. ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
.Bold = .T.
.Collapse(wdCollapseEnd)
.InsertAfter('Доверенность ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .F.
.Collapse(wdCollapseEnd)
.InsertAfter('17 ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
.InsertAfter(' от ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .F.
.Collapse(wdCollapseEnd)
.InsertAfter('15.04.2016')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
.InsertAfter(' г.')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
.Bold = .T.
.Collapse(wdCollapseEnd)
.Bold = .T.
.ParagraphFormat.Alignment = wdAlignParagraphLeft
.Collapse(wdCollapseEnd)
.InsertParagraphAfter()
.InsertParagraphAfter()
.Font.Size = 6
.Font.Name = "Courier New"
.Collapse(wdCollapseEnd)
ENDwith


* Создаем в этом документе таблицу
* Сначала определеяем место, куда будет вставлена таблица
* Теперь собственно создание таблицы из 5 столбцов и X строк

LOCAL loTable
loTable = m.loDoc.Tables.Add(m.oRange,131,5,1)

* формируем изначальный шрифт таблицы
m.loTable.Select
m.loTable.Range.Font.Name = "Courier New"
m.loTable.Range.Font.Size = 10
m.loTable.Range.Bold = .T.


* выделяем столбец таблицы
m.loDoc.Tables(1).Columns(4).Select

********** КАК СДЕЛАТЬ ФОРМАТИРОВАНИЕ ВСЕГО СТОЛБЦА НУЖНЫМ МНЕ ШРИФТОМ И ПО ЦЕНТРУ?????????
****** ВСЕ НИЖНИЕ ВАРИАНТЫ ПЕРЕПРОБЫВАЛ - НЕРАБОТАЮТ
*loDoc.Selection.ParagraphFormat.Alignment =1
*Selection.ParagraphFormat.Alignment =1
*m.loTable.Columns(4).Font.Size = 10



* Задаю ширину высоту строк и столбцов
*m.loTable.Rows(1).ParagraphFormat.Alignment = wdAlignParagraphCenter
m.loTable.Rows(1).SetHeight(m.loWord.CentimetersToPoints(0.9),wdAdjustNone)
m.loTable.Rows(1).Cells.VerticalAlignment = wdCellAlignVerticalCenter
m.loTable.Columns(1).SetWidth(m.loWord.CentimetersToPoints(12),wdAdjustNone)
m.loTable.Columns(2).SetWidth(m.loWord.CentimetersToPoints(1.1),wdAdjustNone)
m.loTable.Columns(3).SetWidth(m.loWord.CentimetersToPoints(2),wdAdjustNone)
m.loTable.Columns(4).SetWidth(m.loWord.CentimetersToPoints(1.4),wdAdjustNone)
m.loTable.Columns(5).SetWidth(m.loWord.CentimetersToPoints(2.3),wdAdjustNone)
m.loTable.Cell(1,1).Range.InsertAfter("Наименование продукции, товаров, комплектующих")
m.loTable.Cell(1,1).Range.Font.Size = 10
m.loTable.Cell(1,1).Range.Font.Name = "Courier New"
m.loTable.Cell(1,1).Range.Bold = .F.
m.loTable.Cell(1,1).Range.ParagraphFormat.Alignment = 1
m.loTable.Cell(1,2).Range.InsertAfter("Един.")
m.loTable.Cell(1,2).Range.Font.Size = 10
m.loTable.Cell(1,2).Range.Font.Name = "Courier New"
m.loTable.Cell(1,2).Range.Bold = .F.
m.loTable.Cell(1,2).Range.ParagraphFormat.Alignment = 1
m.loTable.Cell(1,3).Range.InsertAfter("Цена")
m.loTable.Cell(1,3).Range.Font.Size = 10
m.loTable.Cell(1,3).Range.Font.Name = "Courier New"
m.loTable.Cell(1,3).Range.Bold = .F.
m.loTable.Cell(1,3).Range.ParagraphFormat.Alignment = 1
m.loTable.Cell(1,4).Range.InsertAfter("К-во")
m.loTable.Cell(1,4).Range.Font.Size = 10
m.loTable.Cell(1,4).Range.Font.Name = "Courier New"
m.loTable.Cell(1,4).Range.Bold = .F.
m.loTable.Cell(1,4).Range.ParagraphFormat.Alignment = 1
m.loTable.Cell(1,5).Range.InsertAfter("Стоимость")
m.loTable.Cell(1,5).Range.Font.Size = 10
m.loTable.Cell(1,5).Range.Font.Name = "Courier New"
m.loTable.Cell(1,5).Range.Bold = .F.
m.loTable.Cell(1,5).Range.ParagraphFormat.Alignment = 1



USE dannie IN 0
j=1
SCAN
j=j+1
*IF j<=20 THEN
m.loTable.Cell(j,1).Range.InsertAfter(dannie.naimen)
*!* m.loTable.Cell(j,1).Range.Font.Size = 10
*!* m.loTable.Cell(j,1).Range.Font.Name = "Courier New"
*!* m.loTable.Cell(j,1).Range.Bold = .F.
*!* m.loTable.Cell(j,1).Range.ParagraphFormat.Alignment = 0
m.loTable.Cell(j,2).Range.InsertAfter(dannie.izm)
*!* m.loTable.Cell(j,2).Range.Font.Size = 10
*!* m.loTable.Cell(j,2).Range.Font.Name = "Courier New"
*!* m.loTable.Cell(j,2).Range.Bold = .F.
*!* m.loTable.Cell(j,2).Range.ParagraphFormat.Alignment = 1
m.loTable.Cell(j,3).Range.InsertAfter(dannie.cena)
*!* m.loTable.Cell(j,3).Range.Font.Size = 10
*!* m.loTable.Cell(j,3).Range.Font.Name = "Courier New"
*!* m.loTable.Cell(j,3).Range.Bold = .F.
*!* m.loTable.Cell(j,3).Range.ParagraphFormat.Alignment = 2
m.loTable.Cell(j,4).Range.InsertAfter(dannie.kolvo)
*!* m.loTable.Cell(j,4).Range.Font.Size = 10
*!* m.loTable.Cell(j,4).Range.Font.Name = "Courier New"
*!* m.loTable.Cell(j,4).Range.Bold = .F.
*!* m.loTable.Cell(j,4).Range.ParagraphFormat.Alignment = 1
m.loTable.Cell(j,5).Range.InsertAfter(dannie.cena*dannie.kolvo)
*!* m.loTable.Cell(j,5).Range.Font.Size = 10
*!* m.loTable.Cell(j,5).Range.Font.Name = "Courier New"
*!* m.loTable.Cell(j,5).Range.Bold = .F.
*!* m.loTable.Cell(j,5).Range.ParagraphFormat.Alignment = 2
*ENDIF
ENDSCAN


oRange = loTable.Range
oRange.Collapse(wdCollapseEnd) && Move insertion point beyond table
WITH oRange

.Collapse(wdCollapseEnd)
*.InsertParagraphAfter()
.InsertParagraphAfter()
.Font.Size = 6
.Font.Name = "Courier New"
.Collapse(wdCollapseEnd)
.InsertAfter('Итого по документу ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
lnSumma=162261.83
.InsertAfter(ALLTRIM(STR(lnSumma,20,2))+' ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)




.InsertAfter('Сумма прописью : ')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
LOCAL money


lcRubl=GetStrMoney(int(lnSumma),"рубль","рубля","рублей")
lcRubl=UPPER(SUBSTR(lcRubl,1,1))+SUBSTR(lcRubl,2)

lnKop = lnSumma*100-int(lnSumma)*100
lcKop=GetStrMoney(lnKop,"копейка","копейки","копеек",.T.)
lcSumma = ALLTRIM(lcRubl+" "+ALLTRIM(STR(lnSumma*100-int(lnSumma)*100))+" "+SUBSTR(lcKop,RAT(" ",lcKop)+1)) IF lnSumma=INT(lnSumma)then
lcSumma=lcSumma+" 00 копеек"
ENDIF
.InsertAfter(lcSumma)
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
.Bold = .T.
.ParagraphFormat.Alignment = wdAlignParagraphLeft


.InsertParagraphAfter()
.InsertParagraphAfter()
.InsertAfter('Разрешил _________/')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .F.
.Collapse(wdCollapseEnd)
.InsertAfter('ГОРУН ЕВГЕНИЙ'+space(30))
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .T.
.Collapse(wdCollapseEnd)
.InsertAfter('Получил _____________')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .F.
.Collapse(wdCollapseEnd)
.InsertParagraphAfter()
.InsertParagraphAfter()
.InsertParagraphAfter()
.InsertAfter('Отпустил _________/')
.Font.Size = 10
.Font.Name = "Courier New"
.Bold = .F.
.Collapse(wdCollapseEnd)

ENDWITH
SELECT dannie
USE
RELEASE ALL
QUIT
...
Рейтинг: 0 / 0
25.03.2016, 12:21
    #39200477
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
А для ускорения и форматирования, нет возможности использовать готовый шаблон Word куда в заранее приготовленные поля вставляются данные?
...
Рейтинг: 0 / 0
25.03.2016, 12:45
    #39200503
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
такс.
1) макрорекодор из Word дает след.
m.loDoc.Tables(1).Columns(4).Select - выделили столбец
а дальше Selection. и делаем что надо, применяется в выделенному.

2) ускорить...

для экземпляра Word при создании устанавливать шрифт, размер и тд. по умолчанию сразу и тогда на каждую вставку не надо прописывать указатели. их только там где отличается от умолчания.

операции с таблицой проводить после её заполнение, и в 1 Selection. устанвливать и ширину и выравнивае столбца и тд.
...
Рейтинг: 0 / 0
25.03.2016, 13:18
    #39200540
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
P.S. Сразу после создания документа игра с шрифтами и тд...
Код: sql
1.
Selection.font.name="Имя шрифта по умолчания для документа" 


ну и по аналогии...
и не надо указывать все, Вы должны изменять только те параметры которые отличаются от стандартных.
и попробуйте еще .InsertAfter(chr(13))
...
Рейтинг: 0 / 0
25.03.2016, 14:03
    #39200606
работа с таблицами Word
T1gRa_NTm.loDoc.Tables(1).Columns(4).Select - выделили столбецА вот, для начала, НЕ НАДО ничего выделять. То биш не пользоваться Select и Selection.
То есть писать
with m.loDoc.Tables(1).Columns(4)
.FontSize = ...
...
endwith

Ну и видимость ворда только в конце включать.
...
Рейтинг: 0 / 0
25.03.2016, 14:26
    #39200643
T1gRa_NT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
Да, без выделения будет быстрее, но тестировал в строке VBA.
А так, Вы правы, без выделения правильнее.
...
Рейтинг: 0 / 0
25.03.2016, 15:36
    #39200753
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
правильный проходящий.,

как я уже писал это я пробовал данных код просто не работает, а даже выдает ошибку

with m.loDoc.Tables(1).Columns(4)
.Font.Size = 10
.ParagraphFormat.Alignment =1
endwith

еще пробовал с этим экспериментировать, тоже ничего
*loDoc.Selection.ParagraphFormat.Alignment =1
*Selection.ParagraphFormat.Alignment =1
*m.loTable.Columns(4).Font.Size = 10

потому и обратился за помощью, когда варианты закончились, архив с кодом и базой я приложил, можно попробывать туда этот код внедрить, он не будет работать.....
...
Рейтинг: 0 / 0
25.03.2016, 15:39
    #39200755
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
T1gRa_NT,
в дальнейшем так и сделаю для ускорения, думал есть еще более шустрый механизм.
а вот Selection пробовал не работает..... приведите пример конкретно работающего кода на моем примере.....
...
Рейтинг: 0 / 0
25.03.2016, 17:12
    #39200840
работа с таблицами Word
johngorn,
получи и распишись :)
Код: sql
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.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
#INCLUDE msWord.h
#Define True .T.
#Define False .F.
* Создаем объект Word
Local loWord
loWord=Createobject('Word.Application')
* Сразу делаем его видимым для отладки
loWord.Visible=.f.

* Создаем в нем новый документ
Local loDoc
loDoc = loWord.Documents.Add()

* альбомная ориентация
* m.loDoc.PageSetup.Orientation = wdOrientLandscape

* поля страницы
With loDoc
	With .PageSetup
		.TopMargin=13.4
		.BottomMargin=28.3
		.LeftMargin=28.3
		.RightMargin=28.3
	Endwith
* добавляем в документ нужные строки с их форматированием
*!*		Local oRange
*!*		oRange = m.loDoc.Range()
*!*		oRange.Collapse(wdCollapseStart)
*!*		With oRange
	With .Range()
		.Collapse(wdCollapseStart)
		.ParagraphFormat.Alignment = wdAlignParagraphLeft
		.InsertAfter('ЗАО "Инвестгрупп" Ф/К 0200322523523523')
		.Font.Size = 8
		.Font.Name = "Courier New"
		.MoveEnd(wdParagraph,1)
		.Bold = .T.
		.Collapse(wdCollapseEnd)
		.InsertParagraphAfter()
		.InsertParagraphAfter()
		.InsertAfter('Накладная на отгрузку №  ')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .F.
		.Collapse(wdCollapseEnd)
		.InsertAfter('123456')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .T.
		.Collapse(wdCollapseEnd)
		.InsertAfter('    Дата отгрузки ')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .F.
		.Collapse(wdCollapseEnd)
		.InsertAfter('12.04.2016')
		.Font.Size = 10
	.Font.Name = "Courier New"
		.Bold = .T.
		.Collapse(wdCollapseEnd)
		.InsertAfter(' года.')
		.Font.Size = 10
	.Font.Name = "Courier New"
		.Bold = .F.
		.ParagraphFormat.Alignment = wdAlignParagraphCenter
		.Collapse(wdCollapseEnd)
		.InsertParagraphAfter()
		.InsertParagraphAfter()
		.Font.Size = 6
*!*			.Font.Name = "Courier New"
		.Collapse(wdCollapseEnd)
		.InsertAfter('     С участка   ')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .F.
		.Collapse(wdCollapseEnd)
		.InsertAfter('ЗАО "ТИРАЭТ"  1СКЛАД   ТИРАСПОЛЬ        ')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .T.
		.Collapse(wdCollapseEnd)
		.InsertAfter('	По счету/заказу  ')
		.Bold = .F.
		.Collapse(wdCollapseEnd)
		.InsertAfter('987654')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .T.
		.Collapse(wdCollapseEnd)
		.ParagraphFormat.Alignment = wdAlignParagraphLeft
		.Collapse(wdCollapseEnd)
		.InsertParagraphAfter()
		.InsertParagraphAfter()
		.Font.Size = 6
*!*			.Font.Name = "Courier New"
		.Collapse(wdCollapseEnd)
		.InsertAfter('     Покупатель  ')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .F.
		.Collapse(wdCollapseEnd)
		.InsertAfter('ПРИДНЕСТРОВСКИЙ СБЕРБАНК')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .T.
		.Collapse(wdCollapseEnd)
		.Bold = .T.
		.ParagraphFormat.Alignment = wdAlignParagraphLeft
		.Collapse(wdCollapseEnd)
		.InsertParagraphAfter()
		.InsertParagraphAfter()
		.Font.Size = 6
*!*			.Font.Name = "Courier New"
		.Collapse(wdCollapseEnd)
		.InsertAfter('     Получил     ')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .F.
		.Collapse(wdCollapseEnd)
		.InsertAfter('Горун Е.В.                  ')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .T.
		.Collapse(wdCollapseEnd)
		.Bold = .T.
		.Collapse(wdCollapseEnd)
		.InsertAfter('Доверенность  ')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .F.
		.Collapse(wdCollapseEnd)
		.InsertAfter('17    ')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .T.
		.Collapse(wdCollapseEnd)
		.InsertAfter(' от ')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .F.
		.Collapse(wdCollapseEnd)
		.InsertAfter('15.04.2016')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .T.
		.Collapse(wdCollapseEnd)
		.InsertAfter(' г.')
		.Font.Size = 10
*!*			.Font.Name = "Courier New"
		.Bold = .T.
		.Collapse(wdCollapseEnd)
		.Bold = .T.
		.Collapse(wdCollapseEnd)
		.Bold = .T.
		.ParagraphFormat.Alignment = wdAlignParagraphLeft
		.Collapse(wdCollapseEnd)
		.InsertParagraphAfter()
		.InsertParagraphAfter()
		.Font.Size = 6
*!*			.Font.Name = "Courier New"
		.Collapse(wdCollapseEnd)
	Endwith


* Создаем в этом документе таблицу
* Сначала определеяем место, куда будет вставлена таблица
* Теперь собственно создание таблицы из 5 столбцов и  X строк

	Local loTable
*!*		loTable = .Tables.Add(m.oRange,131,5,1)
	loTable = .Tables.Add(loDoc.Paragraphs.Add().Range,131,5,1)

* формируем изначальный шрифт таблицы
*!*		m.loTable.Select
	With loTable
		With .Range
			.Font.Name = "Courier New"
			.Font.Size = 10
			.Bold = .T.
		Endwith

* выделаяем столбец таблицы
		loDoc.Tables(1).Columns(4).Select

********** КАК СДЕЛАТЬ ФОРМАТИРОВАНИЕ ВСЕГО СТОЛБЦА НУЖНЫМ МНЕ ШРИФТОМ И ПО ЦЕНТРУ?????????
****** ВСЕ НИЖНИЕ ВАРИАНТЫ ПЕРЕПРОБЫВЛ - НЕРАБОТАЕТ
*loDoc.Selection.ParagraphFormat.Alignment =1
*Selection.ParagraphFormat.Alignment =1
*m.loTable.Columns(4).Font.Size = 10

		With loWord.Selection.Range

* Задаю ширину высоту строк и столбцов
*m.loTable.Rows(1).ParagraphFormat.Alignment = wdAlignParagraphCenter
			.Rows(1).SetHeight(m.loWord.CentimetersToPoints(0.9),wdAdjustNone)
			.Rows(1).Cells.VerticalAlignment = wdCellAlignVerticalCenter
			.Columns(1).SetWidth(m.loWord.CentimetersToPoints(12),wdAdjustNone)
			.Columns(2).SetWidth(m.loWord.CentimetersToPoints(1.1),wdAdjustNone)
			.Columns(3).SetWidth(m.loWord.CentimetersToPoints(2),wdAdjustNone)
			.Columns(4).SetWidth(m.loWord.CentimetersToPoints(1.4),wdAdjustNone)
			.Columns(5).SetWidth(m.loWord.CentimetersToPoints(2.3),wdAdjustNone)
		Endwith
		With .Cell(1,1).Range
			.InsertAfter("Наименование продукции, товаров, комплектующих")
*!*				.Font.Size = 10
*!*				.Font.Name = "Courier New"
*!*				.Bold = .F.
*!*				.ParagraphFormat.Alignment = 1
		Endwith

		With .Cell(1,2).Range
			.InsertAfter("Един.")
*!*			.Font.Size = 10
*!*			.Font.Name = "Courier New"
*!*			.Bold = .F.
*!*			.ParagraphFormat.Alignment = 1
		Endwith

		With .Cell(1,3).Range
			.InsertAfter("Цена")
*!*			.Font.Size = 10
*!*			.Font.Name = "Courier New"
*!*			.Bold = .F.
*!*			.ParagraphFormat.Alignment = 1
		Endwith

		With .Cell(1,4).Range
			.InsertAfter("К-во")
*!*			.Font.Size = 10
*!*			.Font.Name = "Courier New"
*!*			.Bold = .F.
*!*			.ParagraphFormat.Alignment = 1
		Endwith

		With .Cell(1,5).Range
			.InsertAfter("Стоимость")
*!*			.Font.Size = 10
*!*			.Font.Name = "Courier New"
*!*			.Bold = .F.
*!*			.ParagraphFormat.Alignment = 1
		Endwith

		loDoc.Tables(1).Rows(1).Select
		With loWord.Selection.Range
			.Font.Size = 10
*!*				.Font.Name = "Courier New"
			.Bold = .F.
			.ParagraphFormat.Alignment = 1
		Endw

		Use dannie In 0
		j=1
		Scan
			j=j+1
*IF j<=20 THEN
			.Cell(j,1).Range.InsertAfter(dannie.naimen)
*!*	.Cell(j,1).Range.Font.Size = 10
*!*	.Cell(j,1).Range.Font.Name = "Courier New"
*!*	.Cell(j,1).Range.Bold = .F.
*!*	.Cell(j,1).Range.ParagraphFormat.Alignment = 0
			.Cell(j,2).Range.InsertAfter(dannie.izm)
*!*	.Cell(j,2).Range.Font.Size = 10
*!*	.Cell(j,2).Range.Font.Name = "Courier New"
*!*	.Cell(j,2).Range.Bold = .F.
*!*	.Cell(j,2).Range.ParagraphFormat.Alignment = 1
			.Cell(j,3).Range.InsertAfter(dannie.cena)
*!*	.Cell(j,3).Range.Font.Size = 10
*!*	.Cell(j,3).Range.Font.Name = "Courier New"
*!*	.Cell(j,3).Range.Bold = .F.
*!*	.Cell(j,3).Range.ParagraphFormat.Alignment = 2
			.Cell(j,4).Range.InsertAfter(dannie.kolvo)
*!*	.Cell(j,4).Range.Font.Size = 10
*!*	.Cell(j,4).Range.Font.Name = "Courier New"
*!*	.Cell(j,4).Range.Bold = .F.
*!*	.Cell(j,4).Range.ParagraphFormat.Alignment = 1
			.Cell(j,5).Range.InsertAfter(dannie.cena*dannie.kolvo)
*!*	.Cell(j,5).Range.Font.Size = 10
*!*	.Cell(j,5).Range.Font.Name = "Courier New"
*!*	.Cell(j,5).Range.Bold = .F.
*!*	.Cell(j,5).Range.ParagraphFormat.Alignment = 2
*ENDIF
		Endscan

*!*		oRange = loTable.Range
*!*		oRange.Collapse(wdCollapseEnd) && Move insertion point beyond table
		With .Range

			.Collapse(wdCollapseEnd)
			.InsertParagraphAfter()
			.Font.Size = 6
*!*				.Font.Name = "Courier New"
			.Collapse(wdCollapseEnd)
			.InsertAfter('Итого по документу    ')
			.Font.Size = 10
		.Font.Name = "Courier New"
			.Bold = .T.
			.Collapse(wdCollapseEnd)
			lnSumma=162261.83
			.InsertAfter(Alltrim(Str(lnSumma,20,2))+'   ')
			.Font.Size = 10
*!*				.Font.Name = "Courier New"
			.Bold = .T.
			.Collapse(wdCollapseEnd)

			.InsertAfter('Сумма прописью:  ')
			.Font.Size = 10
*!*				.Font.Name = "Courier New"
			.Bold = .T.
			.Collapse(wdCollapseEnd)
			Local money
*  	 money=getstrmoney(162260,"рубль","рубля","рублей")

			lcRubl=GetStrMoney(Int(lnSumma),"рубль","рубля","рублей")
			lcRubl=Upper(Substr(lcRubl,1,1))+Substr(lcRubl,2)
* копейки
*lnKop = VAL(SUBSTR(STR(lnSumma,20,2),AT(",",STR(lnSumma,20,2))+1))
			lnKop = lnSumma*100-Int(lnSumma)*100
			lcKop=GetStrMoney(lnKop,"копейка","копейки","копеек",.T.)
			lcSumma = Rtrim(lcRubl+" "+Transform(lnSumma*100-Int(lnSumma)*100)+" "+Substr(lcKop,Rat(" ",lcKop)+1))				&& полученная строка прописью суммы)
*lcSumma = LOWER(lcSumma)
			If lnSumma=Int(lnSumma)Then
				lcSumma=lcSumma+" 00 копеек"
			Endif
			.InsertAfter(lcSumma)
			.Font.Size = 10
*!*				.Font.Name = "Courier New"
			.Bold = .T.
			.Collapse(wdCollapseEnd)
			.Bold = .T.
			.ParagraphFormat.Alignment = wdAlignParagraphLeft

			.InsertParagraphAfter()
			.InsertParagraphAfter()
			.InsertAfter('Разрешил _________/')
			.Font.Size = 10
*!*				.Font.Name = "Courier New"
			.Bold = .F.
			.Collapse(wdCollapseEnd)
			.InsertAfter('ГОРУН ЕВГЕНИЙ'+Space(30))
			.Font.Size = 10
*!*				.Font.Name = "Courier New"
			.Bold = .T.
			.Collapse(wdCollapseEnd)
			.InsertAfter('Получил _____________')
			.Font.Size = 10
*!*				.Font.Name = "Courier New"
			.Bold = .F.
			.Collapse(wdCollapseEnd)
			.InsertParagraphAfter()
			.InsertParagraphAfter()
			.InsertParagraphAfter()
			.InsertAfter('Отпустил _________/')
			.Font.Size = 10
*!*				.Font.Name = "Courier New"
			.Bold = .F.
			.Collapse(wdCollapseEnd)

		Endwith
	Endwith
Endwith

loWord.Visible=.T.
*!*	Select dannie
Use
Release All
*!*		Quit
*!*	* Убираю бордюр у ячейки из 3 строки 2 столбца
*!*	#DEFINE wdBorderTop -1
*!*	#DEFINE wdBorderLeft -2
*!*	#DEFINE wdBorderRight -4
*!*	#DEFINE wdBorderBottom -3
*!*	#DEFINE wdLineStyleNone 0
*!*	LOCAL loCell
*!*	loCell = m.loTable.Cell(3,2)
*!*	m.loCell.Borders(wdBorderTop).LineStyle = wdLineStyleNone
*!*	m.loCell.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
*!*	m.loCell.Borders(wdBorderRight).LineStyle = wdLineStyleNone
*!*	m.loCell.Borders(wdBorderBottom).LineStyle = wdLineStyleNone

...
Рейтинг: 0 / 0
26.03.2016, 08:06
    #39201063
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
правильный проходящий.,
если честно я так и не увидел кода, который форматирует мне целиком столбец с данными по центру или по шрифту.....
пытался опять таки в этот код добавить .Rows(1).Cells.VerticalAlignment = wdCellAlignVerticalCenter
по прежнему выдает ошибку
loDoc.Tables(1).Columns(4).Select
With loWord.Selection.Range
.Rows(1).SetHeight(m.loWord.CentimetersToPoints(0.9),wdAdjustNone)
.Rows(1).Cells.VerticalAlignment = wdCellAlignVerticalCenter

и пропал в нужных местах шрифт Courier New, который закомментили.....
...
Рейтинг: 0 / 0
26.03.2016, 11:31
    #39201104
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
правильный проходящий.,
просто основной мой вопрос был как сделать форматирование в конкретном столбце
...
Рейтинг: 0 / 0
26.03.2016, 12:49
    #39201130
работа с таблицами Word
johngornправильный проходящий.,
если честно я так и не увидел кода, который форматирует мне целиком столбец с данными по центру или по шрифту.....
пытался опять таки в этот код добавить .Rows(1).Cells.VerticalAlignment = wdCellAlignVerticalCenter
по прежнему выдает ошибку
loDoc.Tables(1).Columns(4).Select
With loWord.Selection.Range
.Rows(1).SetHeight(m.loWord.CentimetersToPoints(0.9),wdAdjustNone)
.Rows(1).Cells.VerticalAlignment = wdCellAlignVerticalCenter

и пропал в нужных местах шрифт Courier New, который закомментили.....Я привел рабочий код. В котором есть и форматирование столбца и добавленное мной форматирование строки. Смотрите внимательнее. И курьер никуда не пропадает.
...
Рейтинг: 0 / 0
26.03.2016, 13:42
    #39201143
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
правильный проходящий.,
файл прилагаю вордовский может у нас как то по разному выводится, у меня почему то Calibri (Основной текст) меж строчек...
...
Рейтинг: 0 / 0
26.03.2016, 13:51
    #39201146
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
правильный проходящий.,
вижу форматирование строки, но вот например как мне в 4 столбце столбце сделать весь столбец по центру и другим шрифтом???
...
Рейтинг: 0 / 0
26.03.2016, 16:54
    #39201191
работа с таблицами Word
johngornправильный проходящий.,
вижу форматирование строки, но вот например как мне в 4 столбце столбце сделать весь столбец по центру и другим шрифтом???Предварительно его заполнить. Перенеси оформление колонки и заголовка после заполнения таблицы.
В общем, ворд рассчитан на то, что сначала вводят нужный текст, а уж потом его оформляют, а не наоборот.
Впрочем, еще лучше будет нарисовать шаблон со всем оформлением и его заполнить. И быстрее, и надежнее, и меньше всяких заморочек.
...
Рейтинг: 0 / 0
26.03.2016, 17:28
    #39201198
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
правильный проходящий.,

да я это все понимаю, я не увидел кода который форматирует конкретной взятый заполненный столбец например по центру и нужным шрифтом..... как это сделать , как строку я знаю, а как столбец ?
...
Рейтинг: 0 / 0
26.03.2016, 22:51
    #39201274
работа с таблицами Word
johngornправильный проходящий.,

да я это все понимаю, я не увидел кода который форматирует конкретной взятый заполненный столбец например по центру и нужным шрифтом..... как это сделать , как строку я знаю, а как столбец ?Так же, как и строку. Совсем слепой?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
		loDoc.Tables(1).Columns(4).Select

********** КАК СДЕЛАТЬ ФОРМАТИРОВАНИЕ ВСЕГО СТОЛБЦА НУЖНЫМ МНЕ ШРИФТОМ И ПО ЦЕНТРУ?????????
****** ВСЕ НИЖНИЕ ВАРИАНТЫ ПЕРЕПРОБЫВЛ - НЕРАБОТАЕТ
*loDoc.Selection.ParagraphFormat.Alignment =1
*Selection.ParagraphFormat.Alignment =1
*m.loTable.Columns(4).Font.Size = 10

		With loWord.Selection.Range
...
Рейтинг: 0 / 0
26.03.2016, 23:41
    #39201292
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
правильный проходящий.,
и что тут такого я пробовал делать так же как строку у меня не работает, ниже привел пример как пробовал
loDoc.Tables(1).Columns(4).Select
With loWord.Selection.Range
.Font.Name = "Arial"
.Font.Size = 10
.VerticalAlignment = wdCellAlignVerticalCenter
Endwith

можно конкретику написать на примере 4 столбца сделать другим шрифтом и отформатировать по центру текст
...
Рейтинг: 0 / 0
26.03.2016, 23:54
    #39201295
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
правильный проходящий.,

или вот это тоже не работает .Columns(1).Cells.ParagraphFormat.Alignment = 1
...
Рейтинг: 0 / 0
27.03.2016, 01:17
    #39201310
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
johngorn,

я обычно такие накладные формирую в НТМ-формате
весьма удобно
...
Рейтинг: 0 / 0
27.03.2016, 12:31
    #39201360
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
ПЕНСИОНЕРКА,

неплохо смотрится, но нужно в ворде и с соблюдением всех шрифтов и интервалов, для того чтобы в дальнейшем корректировать накладную.
...
Рейтинг: 0 / 0
27.03.2016, 13:33
    #39201382
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
johngorn,

я в ворде открываю для печати, а не для корректировки
данные хранятся в таблицах(аксесс-ексель-фохпро-дВазе)

шрифты прописать не сложно, я 90-95% подобных бланков делаю именно так, причем принцип един для всех, много штандартных кусков(согласовано, согласовано/утверждаю, подписи)

этот же бланк можно открывать в ексель или броузере(по потребности)
...
Рейтинг: 0 / 0
28.03.2016, 00:34
    #39201636
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
ПЕНСИОНЕРКА,

это все конечно отлично, но я так и не получил ответ на свой вопрос, как сделать то что я хочу.....

вот пример того как отформатировать конкретную ячейку таблицы в ворд
loTable.Cell(j,2).Range.Font.Size = 10
loTable.Cell(j,2).Range.Font.Name = "Courier New"
loTable.Cell(j,2).Range.Bold = .F.
loTable.Cell(j,2).Range.ParagraphFormat.Alignment = 1

а вот как сделать то же самое, но с конкретным столбцом, чтобы не форматировать каждую ячейку в отдельности и не терять столько времени на создание документа????
...
Рейтинг: 0 / 0
28.03.2016, 12:27
    #39201961
работа с таблицами Word
johngornПЕНСИОНЕРКА,

это все конечно отлично, но я так и не получил ответ на свой вопрос, как сделать то что я хочу.....

а вот как сделать то же самое, но с конкретным столбцом, чтобы не форматировать каждую ячейку в отдельности и не терять столько времени на создание документа????Ответ вы получили, но или его не поняли, или сломали какой-нить самодеятельностью, или у вас на компе что-то не дает правильно работать приведенному вам примеру.
...
Рейтинг: 0 / 0
28.03.2016, 15:56
    #39202261
johngorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
работа с таблицами Word
правильный проходящий.,

может мы друг друга не поняли, можно мне вот прям разжувать и написать текст программы, который делает что то с конкретным столбцом и ничего кроме него?
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / работа с таблицами Word / 25 сообщений из 34, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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