Office中国论坛/Access中国论坛
标题:
批量导出图片到Excel
[打印本页]
作者:
roych
时间:
2019-5-5 15:03
标题:
批量导出图片到Excel
前段时间,有网友在群里问,如何把图片导出到Excel上。当时分享了一个之前写的示例
批量插入图片并调整大小
,建议他把里面的语句修改下,也不知道后来他有没有完成。
为什么非要导出到Excel上呢?我很奇怪为什么会有这样的需求。是因为Access的窗体放图片不好吗?还是因为用报表格式导出PDF不好吗?还是因为很多人习惯用Excel?……对于想不明白的事情,我向来不会花太多时间去想,照做就是了。于是就把之前的例子找过来,随手改改,做成以下例子。
按惯例先上代码:
Sub exportImg()
Dim rst As New ADODB.Recordset
Dim exl As New Excel.Application
Dim wb As Workbook
Dim ws As Worksheet
Dim i As Long
Dim j As Long
Dim img As ImageSize
rst.Open "tblPic", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
Set wb = exl.Workbooks.Add(CurrentProject.Path & "\test.xltx")
Set ws = wb.ActiveSheet
'初始化
i = 0
j = 0
'写入表头
For i = 0 To rst.Fields.Count - 1
ws.Range("A1").Offset(0, i) = rst.Fields(i).Name
Next
'写入数据
Do Until rst.EOF
ws.Range("2:2").Offset(j, 0).Insert xlUp, xlFormatFromRightOrBelow
For i = 0 To rst.Fields.Count - 1
'如果不是最后一个(即图片列)
If i < rst.Fields.Count - 1 Then
'居中对齐
With ws.Range("A2").Offset(j, i)
.Value = rst(i)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Else
img = GetImageSize(rst(i))
ws.Shapes.AddPicture rst(i), msoFalse, msoTrue, ws.Range("A2").Offset(j, i).Left + 2, ws.Range("A2").Offset(j, i).Top + 2, img.Width, img.Height
ws.Range("A2").Offset(j, i).RowHeight = img.Height + 2
End If
Next
j = j + 1
rst.MoveNext
Loop
rst.Close
'删除已有文件
If Len(Dir(CurrentProject.Path & "\test0.xlsx")) > 0 Then Kill CurrentProject.Path & "\test0.xlsx"
'删除最后一列后保存
ws.Range("2:2").Offset(j, 0).Delete
wb.SaveAs CurrentProject.Path & "\test0.xlsx"
wb.Close
exl.Quit
End Sub
复制代码
主体思想是通过ADO把数据写入,在涉及图片的字段,通过插入图片的形式进行处理。此外,这里预设了模板,这样便于处理一些必要的格式问题(例如,字体大小,居中等等)。这里同样也提出了一个问题:
当图片尺寸差异比较大的时候,可能并不是那么美观(请留意小图片的显示),除非预先调整到固定的一个尺寸。
[attach]63352[/attach]
PS:这里不打算处理2003版本,主要原因在于2003版本的shapes方法和2007的有所不同。如需查看2003格式下的处理方式,请留意以下链接:
批量插入图片并调整大小
作者:
admin
时间:
2019-5-5 16:53
赞!
作者:
zpy2
时间:
2019-5-5 17:08
赞一个
作者:
yanwei82123300
时间:
2019-5-7 07:14
赞一个
来自: 微社区
作者:
wuwu200222
时间:
2020-11-19 15:33
学习
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3