Добрый день, друзья!
Возможно, уже заезженая тема, но побившись несколько часов об стенку, решил, что лучше обратиться к профессионалам. Задача такая: нужно сделать так, чтобы весь функционал из файла эксель работал в файле 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 не нашел таких вариантов, поэтому можно сделать через сочетание клавиш, например.
Хотелось бы понимать, насколько это трудозатратная задача и сколько это могло бы стоить. Файл вышлю в личку, если договоримся по цене.
Заранее спасибо!
Возможно, уже заезженая тема, но побившись несколько часов об стенку, решил, что лучше обратиться к профессионалам. Задача такая: нужно сделать так, чтобы весь функционал из файла эксель работал в файле 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 не нашел таких вариантов, поэтому можно сделать через сочетание клавиш, например.
Хотелось бы понимать, насколько это трудозатратная задача и сколько это могло бы стоить. Файл вышлю в личку, если договоримся по цене.
Заранее спасибо!