Превращение макроса PDF в Excel - PullRequest
1 голос
/ 24 января 2020

Я пытаюсь преобразовать этот код, чтобы вместо сохранения PDF-копий он сохранял отдельные листы как книги Excel. Я попытался изменить экспорт как фиксированный формат на xlsm, но, похоже, произошла ошибка во время выполнения. Очень новичок в этом, но любая помощь будет оценена.

Sub PDF()

 Dim xWs As Worksheet
 Application.ScreenUpdating = False
 For Each xWs In ThisWorkbook.Worksheets
  If xWs.Visible = True Then
   If xWs.Name <> "HOME" And xWs.Name <> "DATA" Then
       xWs.Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ThisWorkbook.Path & "\PDF P&L\" & Range("G1").Value & ".pdf", _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=False, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
   End If
  End If
 Next xWs
 Application.ScreenUpdating = False

End Sub

1 Ответ

1 голос
/ 24 января 2020

Метод .ExportAsFixedFormat не поддерживает экспорт в форматы файлов Excel согласно документации

Действие, которое вы, скорее всего, ищете, - .move. Если не указано, куда перемещать, будет создана новая рабочая книга с перемещенным листом. Затем вы можете использовать workbooks(Workbooks.count) для доступа к последней созданной книге. См. Пример кода ниже:

Dim wb As Workbook

ActiveSheet.Move
Set wb = Workbooks(Workbooks.Count)

wb.SaveAs Filename:="yournamehere", FileFormat:=xlOpenXMLWorkbookMacroEnabled 'etc...

Обратите внимание, что при выполнении этого действия с последним оставшимся или единственным листом в рабочей книге это приведет к ошибке. Для получения дополнительной информации о .move методе см. Ссылку. О форматах файлов для использования см. Здесь .

Кроме того, при перемещении листа весь код VBA на листе будет перетягиваться, а модули, связанные с книгой, - нет. Поэтому попытка сохранить его как что-либо, кроме xlsm, когда на нем есть какой-либо код, приведет к появлению приглашения или ошибки.

...