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

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

13 Декабрь 2017, 23:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Сообщений: 8


« Стартовое сообщение: 8 Декабрь 2013, 13:56 »

Решил сделать макрос для writer, который в таблице создает строки. нумерует их и заполняет определенными датами (согласно расписанию). Это для учительского каллендарно-тематического планирования. Забуксовал на этапе, когда нужно добавить исключения, т.е. есть, например определенный список дат (праздничных дней), которые не должны учитываться (создаваться в таблице). Подскажите, как это можно сделать. Недавно перешел на версию 4.1.3.2, в которой изменилось значение свойства date поля даты, т.е. если раньше был long формат, то сейчас отдельно .year .month .day в формате struct. Вот код для создания строк в первой четверти. Работающий файл прилагается.
Код:
Sub term1
dim frm, checkbox1, checkbox2 as object
Dim countRows1 As Integer
Dim i as Date

frm=ThisComponent.Drawpage.Forms.getByName("form1")
CheckBox1=frm.getByName("checkbox1")
CheckBox2=frm.getByName("checkbox2")
CheckBox3=frm.getByName("checkbox3")
CheckBox4=frm.getByName("checkbox4")
CheckBox5=frm.getByName("checkbox5")
CheckBox6=frm.getByName("checkbox6")

term1start=frm.getByName("term1start")
term11start=dateserial(term1start.date.year, term1start.date.month, term1start.date.day)
term1end=frm.getByName("term1end")
term11end=dateserial(term1end.date.year, term1end.date.month, term1end.date.day)

oTable = ThisComponent.TextTables("com.sun.star.text.TextTable")

countRows1=oTable.Rows.getCount()

n=1
for i=term11start to term11end
'проверяем дату на понедельник
if checkbox1.state=1 then
  if weekday(i)=2 then
  oTable.Rows.insertByIndex(countRows1-7,1) 'вставляем по одной пустой строке строке
oTable(0).getCellByPosition(5,countRows1-7).setString(i) 'вставляем дату
oTable(0).getCellByPosition(0,n+2).setString(n) 'вставляем номер строки
countRows1=countRows1+1
n=n+1
  end if
end if
'проверяем дату на вторник
if checkbox2.state=1 then
  if weekday(i)=3 then
  oTable.Rows.insertByIndex(countRows1-7,1) 'вставляем по одной пустой строке строке
oTable(0).getCellByPosition(5,countRows1-7).setString(i) 'вставляем дату
oTable(0).getCellByPosition(0,n+2).setString(n) 'вставляем номер строки
countRows1=countRows1+1
n=n+1
  end if
end if
'проверяем дату на среду
if checkbox3.state=1 then
  if weekday(i)=4 then
  oTable.Rows.insertByIndex(countRows1-7,1) 'вставляем по одной пустой строке строке
oTable(0).getCellByPosition(5,countRows1-7).setString(i) 'вставляем дату
oTable(0).getCellByPosition(0,n+2).setString(n) 'вставляем номер строки
countRows1=countRows1+1
n=n+1
  end if
end if
'проверяем дату на четверг
if checkbox4.state=1 then
  if weekday(i)=5 then
  oTable.Rows.insertByIndex(countRows1-7,1) 'вставляем по одной пустой строке строке
oTable(0).getCellByPosition(5,countRows1-7).setString(i) 'вставляем дату
oTable(0).getCellByPosition(0,n+2).setString(n) 'вставляем номер строки
countRows1=countRows1+1
n=n+1
  end if
end if
'проверяем дату на пятницу
if checkbox5.state=1 then
  if weekday(i)=6 then
  oTable.Rows.insertByIndex(countRows1-7,1) 'вставляем по одной пустой строке строке
oTable(0).getCellByPosition(5,countRows1-7).setString(i) 'вставляем дату
oTable(0).getCellByPosition(0,n+2).setString(n) 'вставляем номер строки
countRows1=countRows1+1
n=n+1
  end if
end if
'проверяем дату на субботу
if checkbox6.state=1 then
  if weekday(i)=7 then
  oTable.Rows.insertByIndex(countRows1-7,1) 'вставляем по одной пустой строке строке
oTable(0).getCellByPosition(5,countRows1-7).setString(i) 'вставляем дату
oTable(0).getCellByPosition(0,n+2).setString(n) 'вставляем номер строки
countRows1=countRows1+1
n=n+1
  end if
end if
Next
print countRows1 'выводит кол-во строк таблицы
End Sub

[вложение удалено Администратором]
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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