Страницы: 1
RSS
Перенос макросов из Excel в LibreOffice, Нужно адаптировать макросы из Excel в LibreOffice и сохранить файлы в формат ODS
 
Добрый день, друзья!
Возможно, уже заезженая тема, но побившись несколько часов об стенку, решил, что лучше обратиться к профессионалам. Задача такая: нужно сделать так, чтобы весь функционал из файла эксель работал в файле ods (при открытии через LibreOffice Calc). Функционал следующий (по сути, это макросы):
1. Обновление номера заявки. При каждом открытии файла к цифре в определенной ячейке должна прибавляться единица. То есть, была заявка №1, при следующем открытии файла должна быть заявка №2, потом №3 и т.д. Сейчас работает такой макрос:
Private Sub Workbook_Open()
Worksheets("1. Поручение").Cells(Номер).Value = Worksheets("1. Поручение").Cells(Номер) + 1
End Sub
2. Экспорт в отдельный PDF каждого листа книги и называние файла PDF должно включать в себя название листа и название файла эксель. Например, файл эксель назвается 26-07-2024, а лист называется Поручение. Тогда файл ПДФ должен называться "Поручение 26-07-2024".
Сейчас это реализовано через такой макрос:
Sub PDF()
   Range("D3").Select
   Selection.Copy
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Range("A4").Select
   Application.CutCopyMode = False
   Selection.Copy
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Dim s As Worksheet

   For Each s In ActiveWorkbook.Worksheets
       s.ExportAsFixedFormat Filename:=ThisWorkbook.Path & "\" & s.Name & " " & Left(ThisWorkbook.Name, InStr(1, ThisWorkbook.Name, ".xl") - 1) & ".pdf", Type:=xlTypePDF
   Next
End Sub
3. Макрос "вставить только значения" (копируется несколько ячеек с формулами, после чего вставляются только значения).
Sub Freeze()
'
' ‚ставить_значениЯ Њакрос
'
' ‘очетание клавиш: Ctrl+у
'
   Range("D3").Select
   Selection.Copy
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Range("A4").Select
   Application.CutCopyMode = False
   Selection.Copy
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
   Range("E1").Select
   Selection.Copy
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
       :=False, Transpose:=False
End Sub

Собственно это все. А, ну еще в файле Эксель эти макросы запускаются при нажатии на кнопку в теле таблицы. В ODS не нашел таких вариантов, поэтому можно сделать через сочетание клавиш, например.

Хотелось бы понимать, насколько это трудозатратная задача и сколько это могло бы стоить. Файл вышлю в личку, если договоримся по цене.

Заранее спасибо!
 
написал в личку

ТС пропал.
Изменено: bigorq - 05.08.2024 12:59:25
Страницы: 1
Наверх