Range("A1:B3").Select
Selection.Copy
這兩句代碼在excel中執行,可以正常把單元格內容拷貝至剪切板中。
但是在Excel Application Scope=>Invoke VBA中,
Range("A1:B3").Select生效;
Selection.Copy執行不生效……
VBA在執行Copy后,任何操作都可能會導致Copy的失效。
一般情況下,如果是從excel粘貼到excel,一般會直接在Copy 后面接Range。
但是,我的需求場景是粘貼到網頁上。
經過排查,是Excel Application Scope的AutoSave屬性導致。
Excel Application Scope會默認選中AutoSave,取消AutoSave勾選,即可讓Selection.Copy生效。
在Excel中,ctrl+c復制了單元格后,ctrl+s保存excel,也會導致之前的復制內容失效。
更多的嘗試和探究:
默認AutoSave勾選。
在Invoke VBA后,放置一個log message,並在該活動上,F9設置斷點,重新調試,
發現執行到log message 停住時,Excel Application Scope並未觸發AutoSave。Excel Application Scope會在Scope結束時觸發。
這里未觸發保存,但是Selection.Copy依舊未生效。
很奇怪……
另外,之前我在其他項目中,也未取消勾選AutoSave,也不會存在這個問題。
一個玄學。