Адаптация макросов VBA из Excel в OpenOffice

Автор Kosh, 12 мая 2016, 12:40

0 Пользователи и 1 гость просматривают эту тему.

Kosh

Здравствуйте!
Помогите, пожалуйста решить проблему. Имеется файл excel с макросами на VBA, который нужно открыть в openoffice calc!
Перебрал разнообразные варианты, но каждый раз при открытии макросы не работают.

Подскажите, что сделать для переноса макросов и их корректной работы?
Если нужно, напишите - прикреплю файлик!

JohnSUN

Добро пожаловать на форум!
Его открыть-запустить в AOO и там и оставить? Или нужно будет вернуть человеку с Excel?
Какая версия офиса? Под какой ОС? Почему не LibreOffice?

Цитата: Kosh от 12 мая 2016, 12:40
Если нужно, напишите - прикреплю файлик!
Пишу: "Нужно! Прикрепляй!"  ;D
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Kosh

Спасибо, JohnSUN!

Да, его нужно открыть-запустить и оставить в ОО или LibO это не принципиально, главное чтоб все работало)))

Версия excel, насколько я помню была 2007, машину не помню (ОС)...

Просто половину макросов писал я, а половину до меня... И было это 2 года назад, мало что помню.. но вот пришлось вернуться к проекту, а тут такая засада, excel использовать нельзя(((

Файл в прикрепе  :beer:

JohnSUN

Да, чувствуется, что давно писалось... Я так понимаю, что сегодня формулы в ГФ0.B69:AF71 ты написал бы чуть иначе, да? Да и всё связанное с пересчётом дат-дней-лет тоже, наверное, упростилось бы...

Быстро исправить и запустить не получится - слишком много хомутов зависло в коде, которые нужно осмысливать и изменять. Похоже, даже под Экселем эта книга не заработала бы... Прими мои соболезнования - у тебя впереди много часов увлекательной работы...

Кстати, раз уж всё равно книгу придётся переделывать с нуля, то может выбрать какой-то другой инструмент? Насколько я успел увидеть, то электронную таблицу выбрали не столько за возможность что-то считать, сколько за возможность яркого форматирования...
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Kosh

#4
Да сегодня все по-другому было бы...
Хочется упростить рутинную работу.. но моих знаний уже не хватает, да и "растерял половину"...
Вот ищу пути выхода из ситуации... Просто "она" работала в экселе, когда я её открывал последний раз, а сейчас новое время, новые потребности.
Я вообще начинал делать эту таблицу "в ручном режиме", т.е. совсем без макросов))) на формулах пытался выехать)))
А что она пестрит разноцветием - так это просто для наглядности было сделано.. можно и два - три цвета использовать.
Основная её функция это при занесении новой информации показать о оставшемся свободном времени... но в процессе функций добавилось.

В общем, я в панике)))
Подскажите, пожалуйста, какие варианты есть? После увиденного, что можно сделать и... в денежном эквиваленте сколько будет, если все это довести до ума?


JohnSUN

Цитата: Kosh от 12 мая 2016, 14:45
Да сегодня все по-другому было бы...
Хочется упростить рутинную работу..
А в чём она заключается-то? Из текста макросов не сильно видна предполагаемая последовательность действий пользователя... и конечный результат тоже не просматривается
Цитата: Kosh от 12 мая 2016, 14:45но моих знаний уже не хватает, да и "растерял половину"...
Ой, врёте, батенька! Это ж как, к примеру, на велосипеде ездить или в воде плавать - раз научился и уже не забудешь.
Цитата: Kosh от 12 мая 2016, 14:45
Вот ищу пути выхода из ситуации... Просто "она" работала в экселе, когда я её открывал последний раз, а сейчас новое время, новые потребности.
Вот тогда, наверное, и лист с названием МП0 удалил... А к нему почти каждая процедура обращаться пытается
Цитата: Kosh от 12 мая 2016, 14:45
Я вообще начинал делать эту таблицу "в ручном режиме", т.е. совсем без макросов))) на формулах пытался выехать)))
...и это было, пожалуй, самым правильным решением при использовании электронных таблиц... В случае с базой данных - а для таких задач почему-то именно их стараются использовать - упор сразу бы пошел на макросы, чтобы удобный пользовательский интерфейс сваять. А в Calc'е без многих фишек вполне можно было бы обойтись.
Например, вот этот способ выбора месяца-года через два выпадающих списка... Ну зачем? Есть же элемент "Календарь" - один вместо двух. Или те же два списка, но не отдельными комбобоксами, а как свойство ячейки (Данные-Проверка-Список)...
Цитата: Kosh от 12 мая 2016, 14:45
А что она пестрит разноцветием - так это просто для наглядности было сделано.. можно и два - три цвета использовать.
Да нет, я не упрекаю за обилие цветов - просто зачем было писать столько макросов для форматирования (раскрашивания), если встроенный Условный Формат с этой задачей справляется лучше?
Цитата: Kosh от 12 мая 2016, 14:45
Подскажите, пожалуйста, какие варианты есть? После увиденного, что можно сделать и... в денежном эквиваленте сколько будет, если все это довести до ума?
Что тут скажешь? Напрашивается вариант с базой данных... Ну, чтобы после тщательной разметки плана он не пропал, а сохранился для дополнительной корректировки. А вдруг тебе это все и хранить не надо? Просто разметить месяц, распечатать что получилось и забыть... Тогда и база не нужна, действительно всё на электронных таблицах сделать...

А про эквивалент можно будет говорить, когда станет известно в какой стороне и как далеко этот ум, к которому нужно довести
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Kosh

Тогда, если не возражаете, я напишу в личку или на почту с подробными пояснениями что хотелось получить в конечном результате!?

А про знания, я на самом деле не шучу))) я мало что знаю в этом деле... все делал так... искал, читал о каждом элементе который хотел получить в результате и методом проб и ошибок доводил до работоспособности, об упрощении или альтернативных вариантах даже не думал)))
Потом, на той стадии, мне тоже помогали... а сейчас помощники кончились)))
На самом деле, может если я объясню что да как это окажется "совсем просто" сделать и мне нужна лишь подсказка... кто знает))))

Могу также с пояснениями прислать начальный вариант книги, где только формулы.

JohnSUN

Не возражаю, конечно...
Описанный метод искать-читать-пробовать-ошибаться - это путь любого программиста, ничего необычного в нём нет.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

Olga520

Здравствуйте, помогите адаптировать для Basic простенький макрос. Спасибо

Sub Fill_Blanks()
    For Each cell In Selection
        If IsEmpty(cell) Then cell.Value = cell.Offset(-1, 0).Value
    Next cell
End Sub

rami

Попробуйте:
Sub Fill_Blanks
sel=ThisComponent.CurrentSelection
data=sel.DataArray
    For i=1 To UBound(data)
        If data(i)(0)="" Then data(i)(0)=data(i-1)(0)
    Next
sel.setDataArray(data)
End Sub

Olga520


SHip

Добрый день.
Есть макрос с эксель. Сохранение названия файла с датой и временем: Книга1_11.04.2007 16.12.41.xls

Option Explicit
Sub Macro1()
    Dim iName$, iDate$
    iDate = Now 'узнаем текущую дату и время
    iDate = Replace(iDate, ":", ".") 'заменяем двоеточия на точку
    iName = ActiveWorkbook.Name 'узнаём имя файла
    iName = Left(iName, Len(iName) - 4) 'убираем расширение файла
    iName = "C:\Temp\" & iName & "_" & iDate & ".xls" 'полное имя файла
    ActiveWorkbook.SaveAs Filename:=iName, FileFormat:=xlNormal, Password:="", _
        WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
End Sub

Подскажите, как его переписать под OpenOffice?

economist

#12
Так работает в LibreOffice Calc (добавил одну строку)

Option Vbasupport 1
Option Explicit
Sub Macro1()
   Dim iName$, iDate$
   iDate = Now 'узнаем текущую дату и время
   iDate = Replace(iDate, ":", ".") 'заменяем двоеточия на точку
   iName = ActiveWorkbook.Name 'узнаём имя файла
   iName = Left(iName, Len(iName) - 4) 'убираем расширение файла
   iName = "C:\Temp\" & iName & "_" & iDate & ".xls" 'полное имя файла
   ActiveWorkbook.SaveAs Filename:=iName, FileFormat:=xlNormal, Password:="", _
       WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
End Sub


При многократном запуске макроса имя "задваивается", скорее всего нужно очищать iName.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

SHip

economist спасибо за помощь.
Макрос у меня не работает.
Пишет:
Ошибка времени выполнения Basic.
'12'
ActiveWorkbook

bigor

На StarBasic ненамного длиннее
Sub Macro1()
    Dim iName$, iDate$
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FilterName"
    args1(0).Value = "MS Excel 97"
    iDate = Now 'узнаем текущую дату и время
    iDate = Replace(iDate, ":", ".") 'заменяем двоеточия на точку
    iName = ThisComponent.Title 'узнаём имя файла
    iName = Left(iName, Len(iName) - 4) 'убираем расширение файла
    iName = "~/Inst/" & iName & "_" & iDate & ".xls" 'полное имя файла
    ThisComponent.StoretoURL(ConverttoURL(iName),args1())
End Sub
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут