JSA宏插入嵌入式图片
宏编辑器插入嵌入式图片
注意:不加延迟不行,延迟少了不行。我电脑上600毫秒也可以
function deletePicture(){
Application.Workbooks.Item(1).Worksheets.Item(1).Activate();
let basex = ActiveWindow.PointsToScreenPixelsX(0);
let basey = ActiveWindow.PointsToScreenPixelsY(0);
let dpiX = Application.ExecuteExcel4Macro(`CALL("user32","GetDpiForWindow","JJ",${Application.Hwnd})`)
let shapes = Application.Worksheets.Item(1).Shapes;
let izoom = ActiveWindow.Zoom; //excel的缩放率
let cellheight = 50;
let cellwidth =12 ;
let srows = 1;
let scolumns =2;
let drows = 10;
let dcolumns = 2;
for(var i = srows;i<=drows;i++ ){
for(var j=scolumns;j<=dcolumns;j++){
ActiveSheet.Cells.Rows.Item(i).Columns.Item(j).Select();
var topp = ActiveSheet.Cells.Rows.Item(i).Columns.Item(j).Top + 10;
var leftp = ActiveSheet.Cells.Rows.Item(i).Columns.Item(j).Left + 10;
console.log(topp,leftp)
var x = parseInt(basex + leftp * izoom/100 * dpiX/72);
var y = parseInt(basey + topp * izoom/100 * dpiX/72);
// console.log(x,y)
x=x+20;
y=y+20;
var shape = shapes.AddPicture("D:\\1.png",msoTrue,msoTrue,leftp,topp,-1,-1);
shape.Select();
Application.ExecuteExcel4Macro(`CALL("user32","PostMessageA","JJJJJ",${Application.Windows.Item(1).Hwnd},516,2,${y<<16|x})`);
Application.ExecuteExcel4Macro(`CALL("user32","PostMessageA","JJJJJ",${Application.Windows.Item(1).Hwnd},517,0,${y<<16|x})`);
Application.ExecuteExcel4Macro(`CALL("user32","PostMessageA","JJJJJ",${Application.Hwnd},256,82,0)`);
Application.ExecuteExcel4Macro(`CALL("user32","PostMessageA","JJJJJ",${Application.Hwnd},257,82,0)`);
//ActiveSheet.Rows.Item(i).RowHeight = cellheight;
//ActiveSheet.Columns.Item(j).ColumnWidth = cellwidth;
JSASLEEP(1000)
//sleep(200) } }
}
在shape.select前加入裁剪:
shape.PictureFormat.CropTop = 90;
shape.PictureFormat.CropBottom = 345;
shape.PictureFormat.CropLeft = 10;
shape.PictureFormat.CropRight = 340;
shape.Left = leftp;
shape.Top = topp;
同时,
var topp 最后的数值10改为5
var leftp 最后的数值10改为5
x=x+20语句改为x=x+10
y=y+20语句改为y=y+10
主要是图片小了,需要更精准定位
function JSASLEEP(ms)
{
//延时,毫秒。
const end = Date.now() + ms;
while (Date.now() < end) {
DoEvents();
}
}
创作者俱乐部成员