<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; OOo Basic: работа с диапазонами ячеек Calc]]></title>
		<link>http://forum.script-coding.com/viewtopic.php?id=2830</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=2830&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «OOo Basic: работа с диапазонами ячеек Calc».]]></description>
		<lastBuildDate>Mon, 23 Feb 2009 19:11:06 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[OOo Basic: работа с диапазонами ячеек Calc]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=19904#p19904</link>
			<description><![CDATA[<p>Пример демонстрирует простейшие приёмы работы с диапазонами ячеек Calc: получение текущего выделения, разбор ячеек в нём, доступ к данным ячеек, установка данных ячеек.</p><p>Макрос обрабатывает текущую ячейку, выделенный диапазон или группу диапазонов (все диапазоны должны состоять из одной колонки). Макрос удаляет из текста ячеек запятые, а затем разбивает текст каждой ячейки, ориентируясь по пробелам, и размещает разбитый текст по соседним ячейкам справа от обрабатываемой ячейки. Макрос предназначен для облегчения копи-пастинга табличных данных из документов PDF в Calc (по умолчанию такие данные вставляются в Calc в одну колонку, и таблица &quot;сминается&quot;). После такой вставки можно выделить вставленные данные и запустить этот макрос, который &quot;поправит&quot; эти данные.<br /></p><div class="codebox"><pre><code>&#039; Макрос &quot;Таблица из PDF&quot;
Sub PasteTableFromPDF()
    sel = ThisComponent.CurrentController.getSelection()
    &#039; sel - это объект ScCellObj, ScCellRangeObj или ScCellRangesObj
    If sel.getImplementationName() = &quot;ScCellObj&quot; Then &#039; одна ячейка
        CellProcessing sel
    ElseIf sel.getImplementationName() = &quot;ScCellRangeObj&quot; Then &#039; диапазон
        RangeProcessing sel
    ElseIf sel.getImplementationName() = &quot;ScCellRangesObj&quot; Then &#039; группа диапазонов
        For i = 0 To sel.getCount() - 1
            RangeProcessing sel.getByIndex(i)
        Next
    End If
End Sub
&#039;==================================================================================================
&#039; Обработка одной ячейки (конечная процедура)
Sub CellProcessing(oCell)
    &#039; адрес ячейки:
    col = oCell.getRangeAddress().StartColumn
    row = oCell.getRangeAddress().StartRow
    
    txt = oCell.getFormula()
    txt = Replace(txt, &quot;,&quot;, &quot;&quot;) &#039; убрать запятые
    &#039;txt = Replace(txt, &quot;.&quot;, &quot;,&quot;) &#039; заменить точки на запятые
    &#039; разнос текста ячейки вправо, с заменой значений соседних ячеек:
    arr = Split(txt)
    ActiveSheet = ThisComponent.CurrentController.ActiveSheet
    For i = 0 To UBound(arr)
        cell = ActiveSheet.getCellByPosition(col + i, row)
        cell.setFormula(arr(i))
    Next
End Sub
&#039;==================================================================================================
&#039; Обработка диапазона ячеек
Sub RangeProcessing(oRange)
    startCol = oRange.getRangeAddress().StartColumn
    endCol = oRange.getRangeAddress().EndColumn
    If endCol &lt;&gt; startCol Then
        Exit Sub &#039; диапазон должен состоять из единственного столбца
    End If
    startRow = oRange.getRangeAddress().StartRow
    endRow = oRange.getRangeAddress().EndRow
    For i = 0 To endRow - startRow
        CellProcessing oRange.getCellByPosition(startCol, i)
    Next
End Sub</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Mon, 23 Feb 2009 19:11:06 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=19904#p19904</guid>
		</item>
	</channel>
</rss>
