vba excel读入png文件转为jpg文件,采用逐语句执行可以得到想要的结果,而直接运行却得到一个空白的jpg? 10

Subaa()SetoS=ActiveSheet.Shapes.AddPicture("d:\ttt\1.png",msoCTrue,msoCTrue,10,10,980... Sub aa() Set oS = ActiveSheet.Shapes.AddPicture("d:\ttt\1.png", msoCTrue, msoCTrue, 10, 10, 980, 710) oS.Copy With ActiveSheet.ChartObjects.Add(0, 0, oS.Width, oS.Height).Chart .Paste .Export "d:\ttt\1.jpg", "JPG" .Parent.Delete End With oS.DeleteEnd Sub 展开
 我来答
K_BEAT
2016-11-01 · TA获得超过1245个赞
知道小有建树答主
回答量:879
采纳率:91%
帮助的人:401万
展开全部

测试下来没问题


如果拷贝的是分辨率较大的图片,

请在调用 Shape.Copy 和 Chart.Paste 方法的前后加入下面的延时函数试试(可单独复制到一个空白模块中)。

#If VBA7 Then
    Private Declare PtrSafe Function timeGetTime Lib "winmm.dll" () As Long
#Else
    Private Declare Function timeGetTime Lib "winmm.dll" () As Long
#End If
 
'################################
' [功能描述] 延时等待指定的毫秒数.
' [参数列表] Milliseconds  毫秒数.
' [返回类型] 无.
'################################
Public Sub Delay(ByVal Milliseconds As Long)
    Dim lngTime As Long
   
    lngTime = timeGetTime
   
    While timeGetTime < lngTime + Milliseconds
        DoEvents
    Wend
End Sub

 比如在 Shape.Copy 的前后加上延时

...
oS.Copy
Delay 1000 ' 延时 1 秒
...
.Paste
Delay 1000 ' 延时 1 秒
追问
感谢您的回答,但我测试还是不行,我也试过在.copy和.paste后加Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 5)应该是等效的,也是不行
追答
运行的时候关闭其他软件再试试,
因为之前碰到过迅雷软件打开的时候调用 Copy 方法会卡很久。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式