Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python或R将Excel中带有可选文本的图形导出为PDF?_Python_R_Excel_Vba_Pdf - Fatal编程技术网

如何使用Python或R将Excel中带有可选文本的图形导出为PDF?

如何使用Python或R将Excel中带有可选文本的图形导出为PDF?,python,r,excel,vba,pdf,Python,R,Excel,Vba,Pdf,我用VBA在Excel中生成了大约500个图形,我需要将它们导出到pdf。这些图形有可供选择的文本,使盲人可以访问。当我使用VBA(ExportAsFixedFormat)生成pdf时,pdf中将丢失备选文本。python或R中是否有代码将图表从excel转换为pdf并保留备选文本 如果我手动将图形保存为pdf,则备选文本将与图形一起保存在pdf文件中。但是,因为我有太多的图表,所以能够自动完成这项工作会很好 ActiveSheet.ExportAsFixedFormat Type:=xlTy

我用VBA在Excel中生成了大约500个图形,我需要将它们导出到pdf。这些图形有可供选择的文本,使盲人可以访问。当我使用VBA(ExportAsFixedFormat)生成pdf时,pdf中将丢失备选文本。python或R中是否有代码将图表从excel转换为pdf并保留备选文本


如果我手动将图形保存为pdf,则备选文本将与图形一起保存在pdf文件中。但是,因为我有太多的图表,所以能够自动完成这项工作会很好

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

VBA中的上述代码有助于创建pdf,但不保留备选文本。

以下代码为
此工作簿中的每个
工作表
(不包括任何
工作表
)生成pdf文件:

子图表\u导出()
Const kPath As String=“D:\@D\u Trash\SO Questions\Output\\ Name.pdf”'根据需要更新
将oSht设置为对象,将sPath设置为字符串
使用此工作簿
对于每个oSht In.表
与奥什特
如果是oSht,则键入XLSHEEP
sPath=Replace(kPath,“#Name”,.Name)”根据需要更新
.ExportAsFixedFormat_
类型:=xlTypePDF_
文件名:=sPath_
质量:=xlQualityStandard_
IncludeDocProperties:=True_
IgnorePrintAreas:=假_
OpenAfterPublish:=False
结束如果:结束于:下一步:结束于
端接头
打开pdf文件后,同时按Shift+Ctrl+Y以激活pdf中的
大声朗读
选项。然后同时按Shift+Ctrl+V以读取
可选文本

前面的代码使用OP发布的同一部分,将图表导出为pdf文件,包括每个文件中的
备选文本

这似乎表明问题可能是由于将
可选文本
添加到
图表
的方法造成的。当
图表作为
工作表
移动后,我找不到将
可选文本
添加到
图表
的方法,因此当
图表
仍然是工作表中的对象(
形状
)时,必须在将
图表
移动到
工作表
之前添加

使用此方法将
可选文本
添加到每个
图表
,然后再将其移动到工作表中

Private子图表\u Add\u AlternativeText()
Const kalttext As String=“这是对图形[#Name]”中的Alt文本的测试”,根据需要进行更新
将ws设置为工作表
Dim co作为图表对象
设置ws=ThisWorkbook。工作表(“数据”)根据需要更新
对于ws.ChartObjects中的每个co
co.shaperage.AlternativeText=根据需要进行替换(kaltText,#Name,#co.Name)'更新
下一个
端接头
或者使用此方法将
可选文本
添加到每个
图表
工作表中

Private子图表\u Add\u AlternativeText()
Const kWsName As String=“!Temp”
Const kalttext As String=“这是对图形[#Name]”中的Alt文本的测试”,根据需要进行更新
将wb设置为工作簿,ws设置为工作表
将oSht设置为对象,sp设置为形状
Dim sChName作为字符串,bIdx作为字节
应用
.EnableEvents=False
.DisplayAlerts=False
.ScreenUpdate=False
.Application.Calculation=xlCalculationManual
以
设置wb=ThisWorkbook
与wb
Rem添加临时工作表
出错时继续下一步
.工作表(kWsName).删除
错误转到0
设置ws=.Worksheets.Add(后面:=.Sheets(.Sheets.Count))
ws.Name=kWsName
Rem使用图表表
对于每个oSht In.表
与奥什特
如果是oSht,则键入XLSHEEP
Rem将图表移动到临时工作表
bIdx=.Index
sChName=.Name
.位置,其中:=xlLocationAsObject,名称:=kWsName
设置sp=ws.Shapes(1)
与sp
Rem将可选文本添加到形状(图表)
.AlternativeText=根据需要更新(kaltText,#Name,#sChName)
Rem将图表移动到图表工作表
.Chart.Location其中:=xlLocationAsNewSheet,名称:=sChName
wb.Sheets(sChName).Move Before:=wb.Sheets(bIdx)
结束于:结束如果:结束于:下一步:结束于
应用
.EnableEvents=True
.DisplayAlerts=True
.ScreenUpdate=True
.Application.Calculation=xlCalculationAutomatic
以
端接头

如果在保存时打开宏录制器,生成的代码是否与您提供的相同?“如果我手动将图形保存为pdf”-您是如何做到这一点的?您可以将图表复制/粘贴为工作表上的图片,然后将图片上的alt文本设置为与图表相同。然后删除图表。如果需要保留图表,可以在工作簿副本上执行此操作。图表图片上的alt文本将转到PDF…我想我是假设嵌入了图表。你在用图表吗?相关:回答得很好!我希望OP能成功。谢谢