Board logo

標題: [發問] excel 2021選取範圍複製成jpg檔失敗 [打印本頁]

作者: takeshilin88    時間: 2022-8-1 15:06     標題: excel 2021選取範圍複製成jpg檔失敗

各位大大好:
請教一下,下面代碼於excel 2013執行後可將選取的範圍複製成jpg檔存在桌面,
但近日換電腦,在excel 2021執行後複製到桌面的jpg檔卻是空白的,
請問要修改哪裡的代碼才會正常呢?

Sub copyrange()
    Dim MyDate
    MyDate = Format(Now, "yyyy-mm-dd") & "_" & Format(Now, "hhnnss")
          Sheets(1).Select '移動到Sheet1
          Selection.Copy  '複製選取範圍
           Selection.CopyPicture    '選取複製成圖片
           With ActiveSheet.ChartObjects.Add(0, 0, Selection.Width, Selection.Height).Chart  '通過在當前工作表添加相同大小的圖表的方式轉存成圖片
               .Paste  '粘貼複製後的圖片
               .Export "C:\Users\PC\Desktop\" & MyDate & ".JPG"    '導出到桌面目錄下,以日期_時間命名圖片檔名
               .Parent.Delete  '刪除該圖片
           End With
End Sub

謝謝~~
作者: samwang    時間: 2022-8-2 10:31

回復 1# takeshilin88

我的2016使用上沒問題,請問你的問題在哪裡,可以用F8除錯,謝謝
作者: takeshilin88    時間: 2022-8-2 14:47

本帖最後由 takeshilin88 於 2022-8-2 14:50 編輯

回復 2# samwang

     目前此代碼是做成按鈕方式執行,按鈕完成後查看產生的jpg檔內容:大小是選取範圍的大小,但是範圍內是空白的,如下圖:
    但是如果是按F8逐行偵錯的方式執行,卻是正常的(產生的jpg檔內容正常、大小正確)
    不知道是什麼原因造成的,可以幫我解惑嗎?
    補充一下:執行系統是win11下執行的excel 2021
作者: samwang    時間: 2022-8-2 16:47

本帖最後由 samwang 於 2022-8-2 16:48 編輯

回復 3# takeshilin88

依您的程式碼,要先選框擇範圍如附件然後在執行程式碼,請試看看,謝謝
框選區0張圖片,則轉出0張,如您描述空白
框選區1張圖片,則轉出1張
框選區2張圖片,則轉出2張
....
...
作者: takeshilin88    時間: 2022-8-2 17:22

本帖最後由 takeshilin88 於 2022-8-2 17:27 編輯

回復 4# samwang


    都有先選好範圍,但是測試過只要是做成按鈕,使用按鈕執行就是空白,但是大小是選取範圍的大小。用F8就正常
    也試過將選取的範圍做成的jpg檔放到不同資料夾,也是一樣的狀況
    相同的檔案,在win10,excel 2013上執行正常
作者: Andy2483    時間: 2022-8-2 19:49

回復 5# takeshilin88
建議前輩試試兩種方式

1.使用快速鍵執行,例如ctrl+q,
框選好之後再按ctrl+q

2.或在上面的命令區設自訂按鈕執行

供您參考
作者: Andy2483    時間: 2022-8-3 08:33

快速鍵設定

[attach]35099[/attach]
作者: Andy2483    時間: 2022-8-3 09:01

自訂功能區按鈕

[attach]35100[/attach]
作者: takeshilin88    時間: 2022-8-8 16:13

回復 8# Andy2483

感謝Andy大大的回饋,後來有到Microsoft去提問,得到的回饋是不要使用Select或Selection,改用其他方式取代Selection即可正常使用了。
作者: Joforn    時間: 2022-8-13 09:33

回復  Andy2483

感謝Andy大大的回饋,後來有到Microsoft去提問,得到的回饋是不要使用Select或Selectio ...
takeshilin88 發表於 2022-8-8 16:13


其实是并不是Selection的问题,而是小几率的Chart.Paste粘贴失败的问题。使用单步追踪运行时,由于按下F8的时间间隔非常大,Chat.Paste就不会出现粘贴失败。
可以改用http://forum.twbts.com/thread-22884-1-1.html中方式,即导入其文件内的basSaveRangeToPictrue模块,然后直接在自己的代码中使用if SaveRangeToPictrue(Selection,"C:\1.JPG") then方式直接保存。由于SaveRangeToPictrue是直接由系统剪切板内直接读取图片信息,所以不会出现保存空白图片的现象




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)