Image 将范围导出为图像
一段时间以来,我的同事和我一直在使用各种方法创建一个模板,以便轻松制作志愿者空缺表格 理想情况下,负责该项目的人员只需输入详细信息,空缺表就会自动生成 在这一点上,我已经让表单自动完成,但我们仍然需要复制范围并手动将其粘贴到paint中,以将其保存为图像。同样在图片的左上角,仍然有一个非常薄的空白,我们需要调整 所以我的两个问题是:什么样的代码能让我成功地将一个范围(A1:F19)导出为图像(格式对我来说并不重要,除非你们看到(dis)在任何方面的优势),以及薄的空白得到纠正 如果图像保存在与代码执行位置相同的文件夹中,并且文件名为cell J3,这将是理想的选择 我一直在尝试在这里和其他网站上找到的几个宏,但没有任何效果,但这一个对我来说似乎最符合逻辑/实用-归功于;: 嗨!谢谢你的回答!所以我稍微修改了代码,因为创建了一个没有扩展名的文件,在图像的左上方留下了一点空白。结果是:Image 将范围导出为图像,image,vba,excel,export,Image,Vba,Excel,Export,一段时间以来,我的同事和我一直在使用各种方法创建一个模板,以便轻松制作志愿者空缺表格 理想情况下,负责该项目的人员只需输入详细信息,空缺表就会自动生成 在这一点上,我已经让表单自动完成,但我们仍然需要复制范围并手动将其粘贴到paint中,以将其保存为图像。同样在图片的左上角,仍然有一个非常薄的空白,我们需要调整 所以我的两个问题是:什么样的代码能让我成功地将一个范围(A1:F19)导出为图像(格式对我来说并不重要,除非你们看到(dis)在任何方面的优势),以及薄的空白得到纠正 如果图像保存在与代
Sub Tester()
Dim sht As Worksheet
Set sht = ThisWorkbook.Worksheets("Activiteit")
ExportRange sht.Range("A1:F19"), _
ThisWorkbook.Path & "\" & sht.Range("J3").Value & ".png"
End Sub
Sub ExportRange(rng As Range, sPath As String)
Dim cob, sc
rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
Set cob = rng.Parent.ChartObjects.Add(0, 0, 200, 200)
'remove any series which may have been auto-added...
Set sc = cob.Chart.SeriesCollection
Do While sc.Count > 0
sc(1).Delete
Loop
With cob
.Height = rng.Height
.Width = rng.Width
.Chart.Paste
.Chart.Export FileName:=sPath, Filtername:="PNG"
.Delete
End With
End Sub
现在,它是完美的,除了一个小细节;现在图像周围有一个(非常非常)薄的灰色边框。这并不是一个大问题,只有训练有素的眼睛才会注意到。如果没有办法摆脱它-没什么大不了的。但以防万一,如果你知道一种方法,那绝对是很棒的
我已经尝试更改这行中的值
Set cob = rng.Parent.ChartObjects.Add(0, 0, 200, 200)
到-10,但这似乎没有帮助。编辑:添加一条线以删除chartobject周围的边框
Sub Tester()
Dim sht as worksheet
Set sht = ThisWorkbook.Worksheets("Sheet1")
ExportRange sht.Range("B2:H8"), _
ThisWorkbook.Path & "\" & sht.Range("J3").Value
End Sub
Sub ExportRange(rng As Range, sPath As String)
Dim cob, sc
rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
Set cob = rng.Parent.ChartObjects.Add(10, 10, 200, 200)
'remove any series which may have been auto-added...
Set sc = cob.Chart.SeriesCollection
Do While sc.Count > 0
sc(1).Delete
Loop
With cob
.ShapeRange.Line.Visible = msoFalse '<<< remove chart border
.Height = rng.Height
.Width = rng.Width
.Chart.Paste
.Chart.Export Filename:=sPath, Filtername:="PNG"
.Delete
End With
End Sub
子测试仪()
将sht变暗为工作表
Set sht=此工作簿。工作表(“表1”)
出口量程短量程(“B2:H8”)_
ThisWorkbook.Path&“\”&sht.Range(“J3”)值
端接头
子导出范围(rng作为范围,sPath作为字符串)
淡咖啡豆
rng.CopyPicture外观:=xlScreen,格式:=xlPicture
设置cob=rng.Parent.ChartObjects.Add(10,10200200)
'删除可能已自动添加的任何系列。。。
设置sc=cob.Chart.SeriesCollection
当sc.计数>0时执行此操作
sc(1).删除
环
用棒子
.shaperage.Line.Visible=msoFalse'我已经使用了几个月,但升级到windows 10/excel 2016后,导出的是一个空白图像。发现Excel 2016有点慢,需要一点一点地完成所有工作。。。
与…有关的。。。节不应包含删除方法,粘贴前需要激活图表
像这样:
mychart.Activate
With mychart
.Height = rng.Height
.Width = rng.Width
.Chart.Paste
.Chart.Export Filename:=strTempfile, Filtername:="PNG"
End With
mychart.Delete
嗨,蒂姆!谢谢!我在我的问题中添加了一点,我想知道您是否愿意看一看?我不知道如何去除边框-您可以尝试修改正在复制的区域上的单元格边框…这确实可以删除边框,但现在图像周围有一个白色(空白)边框。。。这很奇怪,因为原始文件中没有这样的东西,宏会像屏幕上显示的那样捕获工作表,对吗?是否有一些代码可以裁剪图像?因为这可能是最简单的解决办法——只是划掉边界?你应该把问题全部编辑掉,然后把它变成答案。
mychart.Activate
With mychart
.Height = rng.Height
.Width = rng.Width
.Chart.Paste
.Chart.Export Filename:=strTempfile, Filtername:="PNG"
End With
mychart.Delete