ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: witkeylaw

[求助] 如何导出图片并自动命名

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-12 20:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
landyway 发表于 2019-5-31 11:36
大神,我想直接在excel中实现这个效果,怎么改这个代码啊?求回复。。。。

通过引word也是可以的。。。

TA的精华主题

TA的得分主题

发表于 2024-3-12 22:24 来自手机 | 显示全部楼层
本帖最后由 wdpfox 于 2024-3-13 12:39 编辑
gwjkkkkk 发表于 2024-3-12 20:30
我测试没有问题。。。

可能和系统有关,我的是 win11,office2019。是我电脑的问题。

TA的精华主题

TA的得分主题

发表于 2024-4-4 23:38 | 显示全部楼层
vba在64位没有修改好,我借助GPT,用Python 实现了。更快更稳定
源代码代码如下:(注意需要安装os zip docx 库,不会都问AI)

import os
import zipfile
from docx import Document
from collections import defaultdict

# 提供的Word文件路径
word_file = 'D:\\OK.docx'
# 指定存储图片的文件夹路径
output_folder = 'D:\\TEST'

# 创建存储图片的文件夹
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 使用python-docx打开Word文档
doc = Document(word_file)

# 建立字典用于存储图片文件名和个数
image_data_dict = defaultdict(list)

# 从Word文件(ZIP包)中提取图片
image_files = []
with zipfile.ZipFile(word_file, 'r') as z:
    image_files = [f for f in z.namelist() if f.startswith('word/media/')]

for table in doc.tables:  # 添加表格遍历以获取文件名和图片数量
    for row in table.rows:
        cell_text = row.cells[0].text.strip()
        image_count = 0
        for paragraph in row.cells[1].paragraphs:
            image_count += len(paragraph.runs)  # 计算每行中的图片数量

        print(f"文件名: {cell_text}, 图片数量: {image_count}")

        if image_count > 0:
            image_files_per_cell = image_files[:image_count]  # 获取当前单元格对应的图片文件
            image_files = image_files[image_count:]  # 更新剩余的图片文件列表

            image_data_dict[cell_text].extend(image_files_per_cell)  # 存储对应关系

# 按照图片原始名称排序顺序提取图片
for key, value in image_data_dict.items():
    with zipfile.ZipFile(word_file, 'r') as z:  # 重新打开 ZIP 文件
        for index, image_file in enumerate(value):
            image_data = z.read(image_file)  # 读取图片数据

            image_name = f"{key}_image_{index+1}"  # 图片名称,按照图片原始名称排序
            _, extension = os.path.splitext(image_file)  # 获取文件扩展名
            image_path = os.path.join(output_folder, f"{image_name}{extension}")  # 构建图片路径

            # 保存图片
            with open(image_path, 'wb') as img_file:
                img_file.write(image_data)

print("Images have been extracted and saved.")

TA的精华主题

TA的得分主题

发表于 2024-6-7 09:01 | 显示全部楼层
gwjkkkkk 发表于 2024-3-11 19:17
请参考附件。。。

能否帮忙看看,这个程序 word第二页的图片就自动说 没有图片数据了

TA的精华主题

TA的得分主题

发表于 2024-6-7 21:47 | 显示全部楼层
summeren 发表于 2024-6-7 09:01
能否帮忙看看,这个程序 word第二页的图片就自动说 没有图片数据了

请参考附件。。。

当春寒料峭的时候.rar

68.7 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2024-6-7 22:05 | 显示全部楼层
gwjkkkkk 发表于 2024-6-7 21:47
请参考附件。。。

感谢,我是64位 win11系统,office2019专业增强版,执行以后第二页的图片还是无法显示;用您刚发的压缩包也无法执行。搞不懂了。
之前把前面的代码导入自己的normal文件, 第一页图片导出都没有问题;第二页就是不行。感谢 感谢

TA的精华主题

TA的得分主题

发表于 2024-6-7 22:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
summeren 发表于 2024-6-7 22:05
感谢,我是64位 win11系统,office2019专业增强版,执行以后第二页的图片还是无法显示;用您刚发的压缩包 ...

win7+office2010通过测试了,你这个配置我没有,待会我通过win 10+office365再试试...

TA的精华主题

TA的得分主题

发表于 2024-6-10 11:40 来自手机 | 显示全部楼层
gwjkkkkk 发表于 2024-6-7 22:08
win7+office2010通过测试了,你这个配置我没有,待会我通过win 10+office365再试试...

期待解决        
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-7-12 17:53 , Processed in 0.044499 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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