无法修改Excel行高及图片宽高比与高度的VBA技术问题
修正VBA操作Excel图片的错误代码
错误原因及修正要点
- 选中图片的方式错误:
Shapes.Range(...).Select在后期绑定场景下易出问题,且依赖选中状态并非最佳实践,应直接引用Shape对象 - 属性调用错误:Worksheet对象没有
ShapeRange属性,该属性属于Selection对象,直接通过Shapes("图片名称")获取目标对象更可靠 - 字符串语法错误:VBA中字符串必须用双引号包裹,原代码的
'test'会报错 - 常量使用问题:后期绑定(
CreateObject)场景下无法直接使用Excel内置常量(如msoFalse),需替换为对应数值(msoFalse对应0) - 笔误:
409**多了一个星号,qUIT拼写错误应为Quit - 冗余代码:获取激活工作表的写法可简化,同时需补充释放工作表对象的语句
修正后的完整代码
Set appExcel = CreateObject("Excel.Application") Set myWorkbook = appExcel.Workbooks.Open(sFileName) appExcel.Visible = True Set myWorkSheet = myWorkbook.ActiveSheet ' 简化获取激活工作表的代码 myWorkSheet.Range("Q3").Value = "test" ' 修正字符串引号 myWorkSheet.Range("6:6").RowHeight = 406 ' 直接操作目标图片,无需选中 With myWorkSheet.Shapes("Picture 33") .LockAspectRatio = 0 ' 后期绑定用数值0代替msoFalse .Height = 409 ' 修正笔误 End With myWorkbook.Save myWorkbook.Close True appExcel.Quit ' 修正拼写错误 Set myWorkSheet = Nothing ' 补充释放工作表对象 Set myWorkbook = Nothing Set appExcel = Nothing
内容的提问来源于stack exchange,提问作者Brent J Fanguy
相关产品推荐
相关产品推荐

