Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

6 Март 2021, 16:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Как передать выделенный текст документа в строковую переменную?  (Прочитано 6840 раз)
0 Пользователей и 1 Гость смотрят эту тему.
tvitaly1
Участник
**
Offline Offline

Сообщений: 28


« Стартовое сообщение: 11 Март 2012, 13:55 »

Microsoft Word VBA делаю так:
Dim s as string

s:=selection.text

В результате в переменную s заносится текст выделенного фрагмента.

А как это сделать  Basic Write?
Записан
Рыбка Рио
Форумчанин
***
Offline Offline

Сообщений: 1 678


« Ответ #1: 11 Март 2012, 17:01 »

Можно так:

REM  *****  BASIC  *****

Sub Main
Dim s As String
Dim selection As Object
selection = ThisComponent.CurrentSelection
if  selection.count = 1 then
   s = selection.getByIndex(0).String
   msgbox s
else
   for i=1 to selection.count - 1
      s = s + selection.getByIndex(i).String + chr(13)
   next
   msgbox s
endif
End Sub
Записан

ubuntu 12.04 + LibO3.6.0
tvitaly1
Участник
**
Offline Offline

Сообщений: 28


« Ответ #2: 11 Март 2012, 17:19 »

Можно так:

REM  *****  BASIC  *****

Sub Main
Dim s As String
Dim selection As Object
selection = ThisComponent.CurrentSelection
if  selection.count = 1 then
   s = selection.getByIndex(0).String
   msgbox s
else
   for i=1 to selection.count - 1
      s = s + selection.getByIndex(i).String + chr(13)
   next
   msgbox s
endif
End Sub


Спасибо, Клио!
Вот функция, для модуля Selection Улыбка

Function Text As String
Dim selection As Object
selection = ThisComponent.CurrentSelection
if  selection.count = 1 then
   Text = selection.getByIndex(0).String
else
    Text=""
   for i=1 to selection.count - 1
      Text = Text + selection.getByIndex(i).String + chr(13)
   next
end if

end Function





« Последнее редактирование: 11 Март 2012, 18:56 от tvitaly1 » Записан
tvitaly1
Участник
**
Offline Offline

Сообщений: 28


« Ответ #3: 17 Март 2012, 09:11 »

К стати о птичках, конец абзаца в Write кодируется двумя символами - chr(13)+chr(10)!
Записан
Рыбка Рио
Форумчанин
***
Offline Offline

Сообщений: 1 678


« Ответ #4: 17 Март 2012, 10:32 »

конец абзаца в Write кодируется двумя символами - chr(13)+chr(10)!
На Windows. На Linux только chr(13).
Записан

ubuntu 12.04 + LibO3.6.0
tvitaly1
Участник
**
Offline Offline

Сообщений: 28


« Ответ #5: 19 Март 2012, 09:18 »

На Windows. На Linux только chr(13).
А почему так?
Я решил программно устранить эту вещь. Улыбка Вот код программы удаляющий повторяющиеся пробелы в выделенном текстею
 
Цитата:
Sub Main
dim s as string, s1 as string, i as long
  s1=TextCopy
  'Удалим повторяющиеся пробелы в выделеных фрагментах
  s=""
  s1="@"+s1
  For i=2 to len(s1)
   if not( mid(s1,i-1,1)=" " and mid(s1,i,1)=" " ) then
    s = s+mid(s1,i,1)
   end if
  next i   
   TextPaste s 
 
End Sub

Function TextCopy As string
 dim i as long
    TextCopy=""
  with ThisComponent.CurrentSelection 
   for i=0 to .Count - 1
      if i>0 then
      TextCopy = TextCopy + chr(13)+"&"
      end if
      TextCopy = TextCopy + .getByIndex(i).String
   next
  end with
end Function

sub TextPaste(s as string) As string
 dim i as long, j as long
   j = 0   
   with ThisComponent.CurrentSelection 
   s = s+" "
   s1=""
   for i=1 to len(s)-1
    if mid(s,i,1)<>chr(13) then
      s1=s1+mid(s,i,1)
    elseIf mid(s,i+1,1)=chr(10) then
      s1=s1+mid(s,i,1)
      i=i+1
    'новый фрагмент
    elseIf mid(s,i+1,1)="&" then
      .getByIndex(j).String=s1
      s1=""
      j=j+1
      i=i+1
    end if     
   next
     .getByIndex(j).String=s1
   
  end with
 
end su
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!