吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 438|回复: 6
收起左侧

[求助] VBA中用copypicture实现表格转图片失败

[复制链接]
pan_jianpeng 发表于 2024-10-24 17:10
本帖最后由 pan_jianpeng 于 2024-10-25 19:18 编辑

6#已解决该问题

用VBA写的代码,如下:
Sub 表格转图片()
    '该代码逐步执行正常,但是连续执行得到的图片为空
    Dim rng As Range
    Dim cht As Chart
   
    '设置保存路径
    MyPath = ActiveWorkbook.Path & "\"
    Filename = "1.jpg"
    myp = MyPath & Filename
   
    '设定需要复制的表格位置
    Set rng = Range("A1:K6")
   
    '创建图表
    Set cht = ActiveSheet.ChartObjects.Add(Left:=rng.Left, Top:=rng.Top + 100, Width:=rng.Width, Height:=rng.Height).Chart
   
    '复制表格,粘贴为图片,并导出
    rng.CopyPicture
    With cht
        .Paste
        .Export myp
        .Parent.Delete
    End With
End Sub
image.png image.png

求大神救救是什么问题?
又或者VBA可以如何将表格中A1:K6的内容,原内容输出另存为图片?



发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

kingc138 发表于 2024-10-24 20:59
本帖最后由 kingc138 于 2024-10-24 21:01 编辑

Sub ExportRangeToImage()
    Dim rng As Range
    Dim chartObj As ChartObject
    Dim wb As Workbook
    Dim imagePath As String
   
    ' 设置工作簿和工作表
    Set wb = ActiveWorkbook
    Set rng = ActiveSheet.Range("A1:K6")
   
    ' 设置图片保存路径,使用Excel文件的路径和名称,扩展名为.jpg
    imagePath = wb.Path & "\" & wb.Name & "_A1_K6.jpg"
   
    ' 复制指定区域,设置为屏幕显示的图片格式
    rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
   
    ' 在当前活动工作表中创建一个临时的图表对象
    Set chartObj = ActiveSheet.ChartObjects.Add(Left:=rng.Left, Top:=rng.Top, Width:=rng.Width, Height:=rng.Height)
   
    ' 将复制的区域粘贴到图表中
    chartObj.Chart.Paste
    chartObj.Chart.Export Filename:=imagePath, FilterName:="JPG"
   
    ' 删除临时创建的图表对象
    chartObj.Delete
End Sub
这样试试,该代码针对的是活动工作表A1:K6的范围,如果要指定工作表,可修改工作表名称。
smallppgirl 发表于 2024-10-24 21:32
DZHH 发表于 2024-10-25 08:59
之前VBA可以直接将图片嵌入表格,后面我再用vba处理的时候全部变成超链接了,好奇怪
lisongmei 发表于 2024-10-25 10:07
rng.copypicture
set cht=.....   不带chart
cht.activate     #不能连续执行主要是这里,需要加上activate     ,如果cht带chart,好像用 chartarea.select,然后 paste也可以,你自己去试吧。
with  cht.chart
.paste
.export "picture path"
cht.delete
grekevin 发表于 2024-10-25 12:12
[Visual Basic] 纯文本查看 复制代码
Sub 表格转图片()
    '该代码逐步执行正常,但是连续执行得到的图片为空
    Dim rng As Range
    Dim cht As Chart
   
    '设置保存路径
    MyPath = ActiveWorkbook.Path & "\"
    Filename = "1.jpg"
    myp = MyPath & Filename
   
    '设定需要复制的表格位置
    Set rng = Range("A1:K6")
   
    '创建图表
    Set cht = ActiveSheet.ChartObjects.Add(Left:=rng.Left, Top:=rng.Top + 100, Width:=rng.Width, Height:=rng.Height).Chart
   
    '复制表格,粘贴为图片,并导出
    rng.CopyPicture
    With cht
        .Parent.Select
        .Paste
        .Export myp
        .Parent.Delete
    End With
End Sub

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
pan_jianpeng + 2 + 1 谢谢@Thanks!

查看全部评分

 楼主| pan_jianpeng 发表于 2024-10-25 19:16
grekevin 发表于 2024-10-25 12:12
[mw_shl_code=vb,true]Sub 表格转图片()
    '该代码逐步执行正常,但是连续执行得到的图片为空
    Dim  ...

原来是少了个选择的过程,感谢大神!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 13:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表