programing

파이썬 또는 R을 사용하여 엑셀에서 대체 텍스트가 있는 그래프를 PDF로 내보내는 방법은 무엇입니까?

yellowcard 2023. 8. 18. 22:29
반응형

파이썬 또는 R을 사용하여 엑셀에서 대체 텍스트가 있는 그래프를 PDF로 내보내는 방법은 무엇입니까?

나는 VBA를 사용하여 엑셀에서 생성된 그래프가 500개 정도 있는데 pdf로 내보내야 합니다.이러한 그래프에는 시각장애인이 액세스할 수 있도록 대체 텍스트가 있습니다.VBA(ExportAsFixedFormat)를 사용하여 PDF를 생성하면 대체 텍스트가 PDF에 누락됩니다.그래프를 엑셀에서 PDF로 변환하고 대체 텍스트를 유지하기 위한 코드가 파이썬이나 R에 있습니까?

그래프를 수동으로 PDF로 저장하면 대체 텍스트가 그래프와 함께 PDF 파일로 저장됩니다.하지만 그래프가 너무 많아서 자동으로 할 수 있으면 좋을 것 같습니다.

 ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfFileName, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

VBA의 위 코드는 PDF를 만드는 데 도움이 되지만 대체 텍스트는 유지하지 않습니다.

다음 코드는 각각의 pdf 파일을 생성합니다.Sheet(어떤 것도 제외)Worksheet)에서.ThisWorkbook:

Sub Charts_Export()
Const kPath As String = "D:\@D_Trash\SO Questions\Output\#Name.pdf"    'Update as required
Dim oSht As Object, sPath As String
    With ThisWorkbook
        For Each oSht In .Sheets
            With oSht
                If oSht.Type <> xlWorksheet Then
                    sPath = Replace(kPath, "#Name", .Name)    'Update as required
                    .ExportAsFixedFormat _
                        Type:=xlTypePDF, _
                        Filename:=sPath, _
                        Quality:=xlQualityStandard, _
                        IncludeDocProperties:=True, _
                        IgnorePrintAreas:=False, _
                        OpenAfterPublish:=False
    End If: End With: Next: End With

    End Sub

PDF 파일이 열리면 + +를 동시에 눌러 활성화합니다.Read Out LoudPDF 형식의 옵션입니다.그런 다음 +를 동시에 눌러 다음을 읽습니다.AlternativeText.

enter image description here

OP가 발행한 동일한 작품을 사용하는 이전 코드는 차트를 PDF 파일로 내보냈습니다.Alternative text각각의

이는 문제가 다음을 추가하는 데 사용된 방법 때문일 수 있음을 나타내는 것으로 보입니다.AlternativeText에게Chart추가할 방법을 찾을 수 없습니다.AlternativeText아주Chart일단 그것이 로 옮겨지면.Sheet그래서AlternativeText이동하기 전에 추가해야 합니다.Chart아주Sheet그 때Chart여전히 객체입니다(Shape)를 워크시트에 표시합니다.

이 방법을 사용하여 다음을 추가합니다.AlternativeText각자에게Chart시트로 이동하기 전에.

Private Sub Charts_Add_AlternativeText()
Const kAltTxt As String = "This is a test of the Alt Text in graph [#Name]"    'Update as required
Dim ws As Worksheet
Dim co As ChartObject

    Set ws = ThisWorkbook.Worksheets("DATA")    'Update as required
    For Each co In ws.ChartObjects
        co.ShapeRange.AlternativeText = Replace(kAltTxt, "#Name", co.Name)    'Update as required
    Next

    End Sub

또는 이 방법을 사용하여 다음을 추가합니다.AlternativeText각자에게Chart시트지

Private Sub Charts_Add_AlternativeText()
Const kWsName As String = "!Temp"
Const kAltTxt As String = "This is a test of the Alt Text in graph [#Name]"     'Update as required
Dim wb As Workbook, ws As Worksheet
Dim oSht As Object, sp As Shape
Dim sChName As String, bIdx As Byte

    With Application
        .EnableEvents = False
        .DisplayAlerts = False
        .ScreenUpdating = False
        .Application.Calculation = xlCalculationManual
    End With

    Set wb = ThisWorkbook
    With wb

        Rem Add Temp Worksheet
        On Error Resume Next
        .Worksheets(kWsName).Delete
        On Error GoTo 0
        Set ws = .Worksheets.Add(After:=.Sheets(.Sheets.Count))
        ws.Name = kWsName

        Rem Work with Chart Sheets
        For Each oSht In .Sheets
            With oSht
                If oSht.Type <> xlWorksheet Then

                    Rem Move Chart to Temp Worksheet
                    bIdx = .Index
                    sChName = .Name
                    .Location Where:=xlLocationAsObject, Name:=kWsName

                    Set sp = ws.Shapes(1)
                    With sp

                        Rem Add AlternativeText to Shape (Chart)
                        .AlternativeText = Replace(kAltTxt, "#Name", sChName)    'Update as required

                        Rem Move Chart to Chart Sheet
                        .Chart.Location Where:=xlLocationAsNewSheet, Name:=sChName
                        wb.Sheets(sChName).Move Before:=wb.Sheets(bIdx)

    End With: End If: End With: Next: End With

    With Application
        .EnableEvents = True
        .DisplayAlerts = True
        .ScreenUpdating = True
        .Application.Calculation = xlCalculationAutomatic
    End With

End Sub

언급URL : https://stackoverflow.com/questions/57565138/how-to-export-a-graph-with-alternative-text-in-excel-to-pdf-using-python-or-r

반응형