01.06.2012, 15:50 | #21 |
MCP
|
|
|
01.06.2012, 16:00 | #22 |
Участник
|
Если я правильно понял, то мне надо будет к имеющемуся классу дописать этот метод и все вроде как должно заворкать?
|
|
04.06.2012, 10:17 | #23 |
Участник
|
X++: MultiRange = this.findRange(bookMark, _workSheet); Borders = MultiRange.Borders(); |
|
04.06.2012, 10:50 | #24 |
Участник
|
Цитата:
Цитата:
Сообщение от Владимир Максимов
Чтобы уточнить синтаксис какой-либо команды непосредственно в Excel, используют встроенный в Excel макрорекодер. Т.е. запись всех действий пользователя, совершаемых в Excel. Пункт меню Сервис -> Макрос -> Начать запись.
Выполняешь все необходимые действия, далее останавливаешь запись, открываешь макрос на редактирование и смотришь, какая именно команда была использована. |
|
04.06.2012, 11:29 | #25 |
Участник
|
Хочу объединить ячейки. Набросал пробный метод. Он не работает, но AX ошибки не выдает. В чем моя ошибка?
X++: Com ComApplication; Com Range; Com WorkSheet; ; if (m_comDocument) { comApplication = m_comDocument.application(); if (comApplication) { workSheet = this.getWorkSheet(1); Range = workSheet.Range('a1:c1'); Range.MergeCells(); } } |
|
04.06.2012, 11:31 | #26 |
Участник
|
Вот я дурак ответ нашел. Всем спасибо.
X++: Range.MergeCells(True); |
|
04.06.2012, 14:39 | #27 |
Участник
|
С форматированием текста по центру кто-нить сможет помочь?
X++: void CentrAlignment(MSOfficeBookMark_RU bookMark, int _workSheet = 1) { Com ComApplication; Com Range; Com WorkSheet; ; if (m_comDocument) { comApplication = m_comDocument.application(); if (comApplication) { workSheet = this.getWorkSheet(_workSheet); Range = workSheet.Range(bookMark); Range.HorizontalAlignment('xlCenter'); Range.VerticalAlignment('xlCenter'); } } } Последний раз редактировалось smailik; 04.06.2012 в 14:42. |
|
04.06.2012, 15:25 | #28 |
Участник
|
X++: Range.HorizontalAlignment(#xlCenter) |
|
|
За это сообщение автора поблагодарили: smailik (1). |
05.06.2012, 14:35 | #29 |
Участник
|
Еще вопрос в эту тему. Не могу победить нижнее подчеркивание. В макросе вот это
Код: Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With Selection.Borders(xlEdgeRight).LineStyle = xlNone X++: workSheet = this.getWorkSheet(_workSheet); Range = workSheet.Range(bookMark); Borders = Range.Borders(); |
|
05.06.2012, 14:44 | #30 |
Участник
|
X++: void Borders() { //Рамки comRange = excel.findRange(ComExcelDocument_RU::numToNameCell(1,1) + ":" + ComExcelDocument_RU::numToNameCell(11,i-1),1); borders = comRange.borders(); border = borders.item(7); border.lineStyle(1); //xlContinuous border.weight(2); //xlThin border.colorIndex(-4105); border = borders.item(8); border.lineStyle(1); //xlContinuous border.weight(2); //xlThin border.colorIndex(-4105); border = borders.item(9); border.lineStyle(1); //xlContinuous border.weight(2); //xlThin border.colorIndex(-4105); border = borders.item(10); border.lineStyle(1); //xlContinuous border.weight(2); //xlThin border.colorIndex(-4105); border = borders.item(11); border.lineStyle(1); //xlContinuous border.weight(2); //xlThin border.colorIndex(-4105); border = borders.item(12); border.lineStyle(1); //xlContinuous border.weight(2); //xlThin border.colorIndex(-4105); } |
|
05.06.2012, 15:18 | #31 |
Участник
|
comRange, excel, borders, border это все Com? что то у меня ругается на строку excel.findRange
а когда к своему приписал X++: Border = borders.item(7); Border.lineStyle(1) |
|
05.06.2012, 15:42 | #32 |
Участник
|
Цитата из одной статьи посвященной принципам перевода макроса Excel в синтасис другого языка программирования
Цитата:
Константы Excel
В теле макроса встречаются странные значения, которые начинаются с символов "xl". В данном случае - это xlCellValue и xlLess. Но и дальше по коду макроса встречаются аналогичные значения. Это именно значения, поскольку, судя по коду, они присваиваются неким параметрам. Что это такое? Это константы. Т.е. это некоторые значения, которые были определены в момент открытия Excel. Их отличительным признаком как раз и является то, что они начинаются с символов "xl" и из кода макроса следует, что это некоторые ранее определенные значения. Определить, чему же равны эти константы можно там же, в редакторе "Microsoft Visula Basic", где Вы и просматриваете код макроса Excel. Для этого надо открыть "Object Browser". Пункт меню "View" - подпункт "Object Browser". Далее в пустом окошке слева от кнопки с иконкой бинокля ввести имя искомой константы и нажать кнопку с иконкой бинокля (или клавишу Enter). В результате поиска в самом низу окна "Object Browser" будет отображено значение искомой константы. В Axapta константы записывают через макросы. Либо в отдельном "файле" макросов (ветка AOT \ Macros), либо непосредственно в теле метода X++: #define.xlEdgeBottom(9) #define.xlEdgeRight(10) #define.xlContinuous(1) #define.xlMedium(-4138) #define.xlAutomatic(-4105) border = borders.item(#xlEdgeBottom); border.lineStyle(#xlContinuous); border.weight(#xlMedium); border.colorIndex(#xlAutomatic);
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: smailik (1). |
05.06.2012, 15:50 | #33 |
Участник
|
спасибо!
|
|
06.06.2012, 06:20 | #34 |
Участник
|
Цитата:
Com comRange; COM borders; COM border; |
|
15.06.2012, 15:35 | #35 |
Участник
|
Всем доброго дня. У меня вот какой вопрос. У меня объединены 3 ячейки. В них установлен перенос по словам, но при формировании документа если текст не влазит в ячейку то высота автоматически не увеличивается. Возможно ли каким либо образом определить весь текст влез в ячейку или не весь?
|
|
15.06.2012, 16:20 | #36 |
Ищущий знания...
|
можно попробовать выполнить AutoFit по строке (выделенным строкам)
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
15.06.2012, 16:48 | #37 |
Участник
|
Цитата:
|
|
15.06.2012, 17:19 | #38 |
Moderator
|
К сожалению, не прокатит. Нужно примерно так:
How to use Row.AutoFit for merged Excel cells Я уже как-то использовал в ABAPе, у меня есть отлаженный фрагмент на VBScript для использования с MS Script Control: Код: `Option Explicit ` `Public Function MergeAndFit(r, xlApp) ` ` 'http://www.source-code.biz/snippets/vbasic/11.htm ` ` ' Merges a cell range, wraps text and auto-fits the row height. ` ` ' Because the Row.AutoFit method ignores merged cells, we temporarily expand the first column of ` ` ' the cell range to the width of the whole cell range and call AutoFit with the un-merged cell. ` ` Dim Row ` ` Dim Column1 ` ` Dim RangeWidth ` ` Dim OldColumn1Width ` ` Dim OldRowHeight ` ` Dim FitRowHeight ` ` Dim i 'As Integer ` ` Set r = r.MergeArea 'чтобы можно было передавать одну (первую) ячейку ` ` Set Row = r.Rows(1) ` ` Set Column1 = r.Columns(1) ` ` RangeWidth = r.Width ` ` OldColumn1Width = Column1.ColumnWidth ` ` For i = 1 To 3 ' approximation of Column1.ColumnWidth in 3 steps ` ` Column1.ColumnWidth = RangeWidth / Column1.Width * Column1.ColumnWidth ` ` Next ` ` r.WrapText = True ` ` r.MergeCells = False ` ` OldRowHeight = Row.rowHeight ` ` Row.AutoFit ` ` FitRowHeight = Row.rowHeight ` ` r.MergeCells = True ` ` Column1.ColumnWidth = OldColumn1Width ` ` 'VBScript doesn't support the IIf() function ` ` 'Row.rowHeight = IIf(FitRowHeight > OldRowHeight, FitRowHeight, OldRowHeight) ` ` Row.rowHeight = xlApp.WorksheetFunction.Max(FitRowHeight, OldRowHeight) ` ` MergeAndFit = Row.rowHeight ` `End Function ` |
|