powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Пару вопросво по Excel
4 сообщений из 4, страница 1 из 1
Пару вопросво по Excel
    #34518049
Pasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги помогите пожалуйста с парочкой фцнкцией под Excel.
Макросы в Excel включал, но скрипт что-то под PB не получилось перевести.

Задача, обединить две ячейки, я попытался это сделать
lole_datasheet.Range("A1:B1").MergeCells = True
но результат не получается

Еще вопрос как поменять цвет шрифта во всей строке?
Пробую lole_datasheet.Range("A3:B3").Color = 3 - ругается

И как поменять цвет фона в строке.


Заранее спасибо.
...
Рейтинг: 0 / 0
Пару вопросво по Excel
    #34518362
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня в макросе другие названия методов и свойств...

Range("A2:B2").Merge
Rows("3:3").Font.ColorIndex = 3
Rows("3:3").Interior.ColorIndex = 6
...
Рейтинг: 0 / 0
Пару вопросво по Excel
    #34518940
Фотография FmDm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут делал в своё время...

Код: 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.
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.
public function integer f_excel_range_input (integer li_x1, integer li_y1, integer li_x2, integer li_y2, string ls_property, string ls_value);
OLEObject 	lole_range;

try
		
	if ((li_y1 = li_y2) and (li_x1 = li_x2)) then
		lole_range = iole_sheet.Range(f_excel_get_litera(li_y1)+String(li_x1));
	else
		lole_range = iole_sheet.Range(f_excel_get_litera(li_y1)+String(li_x1) + ":" + &
												f_excel_get_litera(li_y2)+String(li_x2) );
	end if
	
	choose case (ls_property)
			case "FormulaR1C1"
				lole_range.FormulaR1C1 = ls_value;
			case "Formula"
				lole_range.Formula = ls_value;
			case "Locked"
				lole_range.Locked = true;
			case "UnLocked"
				lole_range.Locked = false;
			case "WrapText"
				lole_range.WrapText = true;
			case "ShrinkToFit"
				lole_range.ShrinkToFit = true;
			case "MergeCells"
				lole_range.MergeCells = true;
			case "HorizontalAlignment"
				choose case (ls_value)
					case "Left"
						lole_range.HorizontalAlignment = - 4131 
					case "Right"
						lole_range.HorizontalAlignment = - 4152 
					case "Center"
						lole_range.HorizontalAlignment = - 4108 
				end choose
			case "VerticalAlignment"
				choose case (ls_value)
					case "Top"
						lole_range.VerticalAlignment = - 4160 
					case "Bottom"
						lole_range.VerticalAlignment = - 4107 
					case "Center"
						lole_range.VerticalAlignment = - 4108 
				end choose
			case "NumberFormat"
				lole_range.NumberFormat = ls_value
			case "Font.Bold"
				lole_range.Font.Bold = Integer(ls_value)
			case "Font.Size"
				lole_range.Font.Size = Integer(ls_value)
			case "Interior.ColorIndex"
				lole_range.Interior.ColorIndex = Integer(ls_value)
				lole_range.Interior.Pattern =  1 ;//xlSolid
			case "Border.EdgeLeft"
				lole_range.Borders( 7 ).LineStyle =  1 
				lole_range.Borders( 7 ).Weight =  2 
			case "Border.EdgeTop"
				lole_range.Borders( 8 ).LineStyle =  1 
				lole_range.Borders( 8 ).Weight =  2 
			case "Border.EdgeBottom"
				lole_range.Borders( 9 ).LineStyle =  1 
				lole_range.Borders( 9 ).Weight =  2 
			case "Border.EdgeRight"
				lole_range.Borders( 10 ).LineStyle =  1 
				lole_range.Borders( 10 ).Weight =  2 
			case "Border.EdgeAll"
				lole_range.Borders( 7 ).LineStyle =  1 
				lole_range.Borders( 7 ).Weight =  2 
				lole_range.Borders( 8 ).LineStyle =  1 
				lole_range.Borders( 8 ).Weight =  2 
				lole_range.Borders( 9 ).LineStyle =  1 
				lole_range.Borders( 9 ).Weight =  2 
				lole_range.Borders( 10 ).LineStyle =  1 
				lole_range.Borders( 10 ).Weight =  2 
			case "Border.InsideVertical"
				lole_range.Borders( 11 ).LineStyle =  1 
			case "Border.InsideHorizontal"
				lole_range.Borders( 12 ).LineStyle =  1 
			case "Border.All"
				lole_range.Borders( 7 ).LineStyle =  1 
				lole_range.Borders( 7 ).Weight =  2 
				lole_range.Borders( 8 ).LineStyle =  1 
				lole_range.Borders( 8 ).Weight =  2 
				lole_range.Borders( 9 ).LineStyle =  1 
				lole_range.Borders( 9 ).Weight =  2 
				lole_range.Borders( 10 ).LineStyle =  1 
				lole_range.Borders( 10 ).Weight =  2 
				lole_range.Borders( 11 ).LineStyle =  1 
				lole_range.Borders( 12 ).LineStyle =  1 
			case "Border.EdgeLeftBold"
				lole_range.Borders( 7 ).LineStyle =  1 
				lole_range.Borders( 7 ).Weight =  3 
			case "Border.EdgeTopBold"
				lole_range.Borders( 8 ).LineStyle =  1 
				lole_range.Borders( 8 ).Weight =  3 
			case "Border.EdgeBottomBold"
				lole_range.Borders( 9 ).LineStyle =  1 
				lole_range.Borders( 9 ).Weight =  3 
			case "Border.EdgeRightBold"
				lole_range.Borders( 10 ).LineStyle =  1 
				lole_range.Borders( 10 ).Weight =  3 
			case "Border.EdgeAllBold"
				lole_range.Borders( 7 ).LineStyle =  1 
				lole_range.Borders( 7 ).Weight =  3 
				lole_range.Borders( 8 ).LineStyle =  1 
				lole_range.Borders( 8 ).Weight =  3 
				lole_range.Borders( 9 ).LineStyle =  1 
				lole_range.Borders( 9 ).Weight =  3 
				lole_range.Borders( 10 ).LineStyle =  1 
				lole_range.Borders( 10 ).Weight =  3 
	
	end choose
	
catch(runtimeerror r)
	MessageBox("Runtime Error","Â ìîäóëå BuildQuery ôóíêöèè f_excel_range_input âîçíèêëà îøèáêà " + &
					r.GetMessage() + " Ïîæàëóéñòà, ñîîáùèòå ñèñòåìíîìó àäìèíèñòðàòîðó óñëîâèÿ å¸ âîçíèêíîâåíèÿ.")

end try

return  0 ;
end function

public function string f_excel_get_litera (integer li_number);
try
		
	choose case li_number
		case is< 0 
		case is> 701 
			return ""
		case  1  to  26  
			return Char(li_number+ 64 )
		case else 
			return Char(int(li_number/ 26 )+ 64 )+Char(mod(li_number, 26 )+ 1 + 64 )
	end choose
catch(runtimeerror r)
	MessageBox("Runtime Error","Â ìîäóëå BuildQuery ôóíêöèè f_excel_get_litera âîçíèêëà îøèáêà " + &
					r.GetMessage() + " Ïîæàëóéñòà, ñîîáùèòå ñèñòåìíîìó àäìèíèñòðàòîðó óñëîâèÿ å¸ âîçíèêíîâåíèÿ.")
end try


end function
...
Рейтинг: 0 / 0
Пару вопросво по Excel
    #34519494
Pasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо
Привожу куски кода, может другим будет полезно в будущем.
Excel обьединение ячеек, цвет
Код: 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.
66.
67.
68.
69.
70.
71.
72.
73.
74.
integer li_connect, li_n
long ll_row, ll_count
string ls_status
pointer pnt
OleObject lole_excel, lole_datasheet, lole_range
DataWindowChild ldwc_child

pnt = SetPointer(HourGlass!)
lole_excel = Create OleObject
li_connect = lole_excel.ConnectToNewObject('excel.application')
If li_connect <>  0  Then
	MessageBox('Error!','Please, conntect with developer group. Error number ' + string(li_connect), Exclamation!)
	Destroy lole_excel
	Return - 1 
Else 
	lole_excel.SheetsInNewWorkBook =  1 
	lole_excel.WorkBooks.Add()
	lole_excel.ActiveWorkbook.ActiveSheet.Name = 'Monthly report'
End If
		
lole_datasheet = lole_excel.ActiveSheet

lole_range = lole_excel.ActiveSheet.Cells
ll_count = dw_sheet.RowCount()
If ll_count >  0  Then
	lole_datasheet.Range("A1:W1").Font.Bold = True
	lole_datasheet.Range("A1:W1").HorizontalAlignment =  3 
	lole_datasheet.Range("A1:W1").VerticalAlignment =  2 
	
	lole_datasheet.Range("A1:B1").MergeCells = True
	lole_range.Item( 1 , 1 ).Value = 'Name'
		
	lole_datasheet.Range("C1:C2").MergeCells = True
	lole_range.Item( 1 , 3 ).Value = 'Parameter'
	
	lole_range.Item( 2 , 1 ).Value = 'eng'	
	lole_range.Item( 2 , 2 ).Value = 'rus'
	li_n =  3 
		
	For ll_row =  1  To ll_count Step  1 
	
	ls_status = dw_sheet.GetItemString(ll_row, 'pension_status')
	Choose Case ls_status
	Case 'N'
	lole_datasheet.Range("A" + string(li_n) + ":W" + string(li_n)).Font.ColorIndex =  3 
	Case 'P'
	lole_datasheet.Range("A" + string(li_n) + ":W" + string(li_n)).Font.ColorIndex =  3 
	Case 'S'
	lole_datasheet.Range("A" + string(li_n) + ":W" + string(li_n)).Font.ColorIndex =  5 
	End Choose

	lole_range.Item(li_n, 1 ).Value = dw_sheet.GetItemString(ll_row, 'name_eng')	
	lole_range.Item(li_n, 2 ).Value = dw_sheet.GetItemString(ll_row, 'name_rus')
	lole_range.Item(li_n, 3 ).Value = dw_sheet.GetItemString(ll_row, 'param')
		
	li_n++
	Next

	lole_range.Item(li_n, 1 ).EntireColumn.AutoFit
	lole_range.Item(li_n, 2 ).EntireColumn.AutoFit
	lole_range.Item(li_n, 3 ).EntireColumn.AutoFit
End If
		
lole_excel.Visible = True

lole_excel.DisconnectObject()

Destroy lole_datasheet 
Destroy lole_range
Destroy lole_excel

GarbageCollect ( )

Return  1 
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Пару вопросво по Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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