将 excel 行的多个图像保存到计算机
Save multiple images from excel row to computer
我的公司正在尝试将 excel 中的 800 张图片(每张图片各占一行)导出到计算机上的一个文件夹中。我们希望每个文件名都与它从中提取的行相同(1.png、2.png 等)。
我已经检查过执行此操作的脚本,但到目前为止我只看到一个关于从 URL 中提取图像的脚本。我对 excel 并不像我希望的那样熟悉。
只要我们可以拥有每个图像的本地副本,并且可以很容易地通过我们从哪一行中提取它们来识别,那么无论采用何种方法,它都是成功的。
我们这样做是为了将它们批量 import/upload 到 AirTable。
下面的示例 Link: 这只有 1 个示例,但整个文档中有 800 多行。
https://drive.google.com/file/d/0B8klLazhe0NTMWZZS01kRkNHZ1U/view?usp=sharing
感谢您对此提供的任何帮助。
谢谢,
我不得不做同样的事情。这是我使用过的改编版。我假设你的照片是 1 号 sheet,如果不是,请根据它进行更改。您还应该将路径更改为您希望保存所有图像的位置:
Option Explicit
Public Sub ExportAllPics()
Dim shp As Shape
Dim path As String: path = "C:\Temp\"
Dim cnt As Integer: cnt = 1
Application.DisplayAlerts = False
With Sheets(1)
For Each shp In .Shapes
If shp.Type = msoPicture Then
shp.Copy
With Charts.Add
.Paste
.Export Filename:=path & CStr(cnt) & ".jpg", FilterName:="jpg"
.Delete
End With
cnt = cnt + 1
End If
Next
End With
Application.DisplayAlerts = True
End Sub
这与其中一条评论中提供的 link 相似,它会设置一个图表,将图像复制到其中并将图表导出为 jpeg 文件(这是我唯一的方法'我们已经成功完成这项工作 - 也许其他人会 post 一个将图像直接复制到文件的解决方案)。设置的图表是用于导出的临时图表,并立即删除。必须禁用显示警报,否则每次图表删除都会弹出一个消息框。
编辑:
以下是上述的变体。每张图片复制(暂时到A1单元格),缩放,复制到剪贴板(之后删除A1中的临时图片),从剪贴板添加到一个新的清除图表,然后导出:
Option Explicit
Public Sub ExportAllPics2()
Dim shp As Shape
Dim path As String: path = "C:\Temp\"
Dim cnt As Integer: cnt = 1
Application.DisplayAlerts = False
With Sheets(1)
For Each shp In .Shapes
If shp.Type = msoPicture Then
shp.Copy
.Range("A1").Select
.Paste
With Selection
.Height = 600
.Width = 400
.Copy
.Delete
End With
With Charts.Add
.ChartArea.Clear
.Paste
.Export Filename:=path & CStr(cnt) & ".jpg", FilterName:="jpg"
.Delete
End With
cnt = cnt + 1
End If
Next
End With
Application.DisplayAlerts = True
End Sub
如果height/width作品中每张图片的比例都合适sheet,那么您应该可以通过锁定宽高比将它们缩放到合适的尺寸。不幸的是,我使用的工作簿中的图片尺寸变形,因此我将 height/width 设置为标准尺寸的原因 - 结果是大多数图片看起来都合适,但有一些例外。
Excel 解析器处理器是一个基于电子的开源项目,我开始帮助朋友下载 excel 文件列中列出的大量图像。它现在能够下载和重命名,但可能会随着时间的推移变得更好。可以在 github.
从我的仓库中结帐
我的公司正在尝试将 excel 中的 800 张图片(每张图片各占一行)导出到计算机上的一个文件夹中。我们希望每个文件名都与它从中提取的行相同(1.png、2.png 等)。
我已经检查过执行此操作的脚本,但到目前为止我只看到一个关于从 URL 中提取图像的脚本。我对 excel 并不像我希望的那样熟悉。
只要我们可以拥有每个图像的本地副本,并且可以很容易地通过我们从哪一行中提取它们来识别,那么无论采用何种方法,它都是成功的。
我们这样做是为了将它们批量 import/upload 到 AirTable。
下面的示例 Link: 这只有 1 个示例,但整个文档中有 800 多行。
https://drive.google.com/file/d/0B8klLazhe0NTMWZZS01kRkNHZ1U/view?usp=sharing
感谢您对此提供的任何帮助。 谢谢,
我不得不做同样的事情。这是我使用过的改编版。我假设你的照片是 1 号 sheet,如果不是,请根据它进行更改。您还应该将路径更改为您希望保存所有图像的位置:
Option Explicit
Public Sub ExportAllPics()
Dim shp As Shape
Dim path As String: path = "C:\Temp\"
Dim cnt As Integer: cnt = 1
Application.DisplayAlerts = False
With Sheets(1)
For Each shp In .Shapes
If shp.Type = msoPicture Then
shp.Copy
With Charts.Add
.Paste
.Export Filename:=path & CStr(cnt) & ".jpg", FilterName:="jpg"
.Delete
End With
cnt = cnt + 1
End If
Next
End With
Application.DisplayAlerts = True
End Sub
这与其中一条评论中提供的 link 相似,它会设置一个图表,将图像复制到其中并将图表导出为 jpeg 文件(这是我唯一的方法'我们已经成功完成这项工作 - 也许其他人会 post 一个将图像直接复制到文件的解决方案)。设置的图表是用于导出的临时图表,并立即删除。必须禁用显示警报,否则每次图表删除都会弹出一个消息框。
编辑:
以下是上述的变体。每张图片复制(暂时到A1单元格),缩放,复制到剪贴板(之后删除A1中的临时图片),从剪贴板添加到一个新的清除图表,然后导出:
Option Explicit
Public Sub ExportAllPics2()
Dim shp As Shape
Dim path As String: path = "C:\Temp\"
Dim cnt As Integer: cnt = 1
Application.DisplayAlerts = False
With Sheets(1)
For Each shp In .Shapes
If shp.Type = msoPicture Then
shp.Copy
.Range("A1").Select
.Paste
With Selection
.Height = 600
.Width = 400
.Copy
.Delete
End With
With Charts.Add
.ChartArea.Clear
.Paste
.Export Filename:=path & CStr(cnt) & ".jpg", FilterName:="jpg"
.Delete
End With
cnt = cnt + 1
End If
Next
End With
Application.DisplayAlerts = True
End Sub
如果height/width作品中每张图片的比例都合适sheet,那么您应该可以通过锁定宽高比将它们缩放到合适的尺寸。不幸的是,我使用的工作簿中的图片尺寸变形,因此我将 height/width 设置为标准尺寸的原因 - 结果是大多数图片看起来都合适,但有一些例外。
Excel 解析器处理器是一个基于电子的开源项目,我开始帮助朋友下载 excel 文件列中列出的大量图像。它现在能够下载和重命名,但可能会随着时间的推移变得更好。可以在 github.
从我的仓库中结帐