ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 运行时错误 ’-2147024809 (80070057):参数错误

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-10-26 16:53 | 显示全部楼层 |阅读模式
编写了一段批量调整图片尺寸的代码,运行后只有第一张图片处理成功了,弹出错误提示:“运行时错误 ’-2147024809 (80070057):参数错误”,调试后提示Set Img = IP.Apply(Img)这句出问题了,但是不知道问题出在哪里。有哪位好心人帮忙看一下吗?

Sub piczoom()
'#####设置固定数值的宽高等比列缩放图片
Dim Img 'As ImageFile
Dim IP 'As ImageProcess
Dim arr()
irow = Range("a65536").End(xlUp).Row
arr = Range("a1:d" & irow)

Set Img = CreateObject("WIA.ImageFile")
Set IP = CreateObject("WIA.ImageProcess")

For i = 2 To irow
    Img.LoadFile arr(i, 1)
    IP.Filters.Add IP.FilterInfos("Scale").FilterID
        w = Img.Width
        h = Img.Height
        k = h / w

        IP.Filters(1).Properties("MaximumWidth") = arr(i, 4) * k
        IP.Filters(1).Properties("MaximumHeight") = arr(i, 4) * k
    Set Img = IP.Apply(Img)
    Img.SaveFile Left(arr(i, 1), InStrRev(arr(i, 1), "\")) & arr(i, 3) & ".jpg"

Next

End Sub

TA的精华主题

TA的得分主题

发表于 2020-10-26 17:50 | 显示全部楼层
next 上面加一句

IP.Filters.Remove 1

https://docs.microsoft.com/en-us ... aut-ifilters-remove

Filters.Remove( _
  ByVal Index As LONG _
) As HRESULT

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-10-27 21:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Datous 发表于 2020-10-26 17:50
next 上面加一句

IP.Filters.Remove 1

按照您的指点,问题解决了,十分感谢!

TA的精华主题

TA的得分主题

发表于 2022-8-26 22:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Datous 发表于 2020-10-26 17:50
next 上面加一句

IP.Filters.Remove 1

您好!想请教您个问题
您能看一下我这个为什么报错吗?想做地图热力图
Sub heatmap()
    Dim arr(1 To 10)
    With ActiveSheet
        Rem 设置颜色所在单元格区域,
        For Each Rng In .Range("H2:H6") '设置颜色所在单元格区域
        i = i + 1
        arr(i) = Rng.Interior.Color
        Next
        
        For Each Rng In .Range("A2:A33") '设置数据源中的分析对象所在单元格区域
        
            Rem 对各省的图形使用对应编号的颜色填充
            
            .Shapes(Rng.Value).Fill.ForeColor.RGB = arr(Rng.Offset(, 2).Value)
            
        Next
        
    End With

End Sub

TA的精华主题

TA的得分主题

发表于 2023-11-8 10:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
VM_H{PVVB(Y7Q`Z}W9V~`3K.png 请问大师这个咋个处理?谢谢!

TA的精华主题

TA的得分主题

发表于 2023-11-8 10:30 | 显示全部楼层
djp1018 发表于 2023-11-8 10:30
请问大师这个咋个处理?谢谢!

Sub pic()
Dim Shp As Shape, Rg_zp As Range, ksh As String, sht As Worksheet, Ppath As String, oldrg As Range
Set sht = Sheets("在校生档案信息")
Ppath = ThisWorkbook.Path & "\证件批量打印\"
For Each Shp In sht.Shapes
    If Shp.Name Like "ksh_*" Then Shp.Delete
Next
On Error Resume Next
Set Rg_zp = sht.Cells.Find(What:="照片", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False)
Set oldrg = Rg_zp
While Not Rg_zp Is Nothing
    ksh = Rg_zp.Offset(17, 0).Value
    With sht.Pictures.Insert(Ppath & ksh & ".jpg")
        .Name = "ksh_" & ksh
        .Top = Rg_zp.Top
        .Left = Rg_zp.Left
        .Width = Rg_zp.Width * 0.45
    End With
    Set Rg_zp = sht.Cells.FindNext(Rg_zp)
    If Rg_zp.Address = oldrg.Address Then Exit Sub
Wend

End Sub

TA的精华主题

TA的得分主题

发表于 2024-8-11 10:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
djp1018 发表于 2023-11-8 10:30
Sub pic()
Dim Shp As Shape, Rg_zp As Range, ksh As String, sht As Worksheet, Ppath As String, old ...

For Each Shp In sht.Shapes
    If Shp.Name Like "ksh_*" Then Shp.Delete
Next

不能改变循环变量本身,否则影响后面的循环。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 11:41 , Processed in 0.042225 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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