自定义函数 JSAIMAGE 将本地或网络图片嵌入单元格
function JSAIMAGE(source/*, alt_text, sizing, height, width*/) { //图片嵌入单元格
source = (source === undefined || source === -2147352572) ? undefined : source.valueOf();
//alt_text = (alt_text === undefined || alt_text === -2147352572) ? source : alt_text.valueOf();
//sizing = (sizing === undefined || sizing === -2147352572) ? 0 : sizing.valueOf();
//height = (height === undefined || height === -2147352572) ? undefined : height.valueOf(); // 以磅为单位
//width = (width === undefined || width === -2147352572) ? undefined : width.valueOf(); // 以磅为单位
let temp = Env.GetTempPath(); // 取系统临时目录的路径
//let hwnd = Application.Hwnd; // ET窗口的最高级别的窗口句柄
let rng = Application.Caller();
//let address = rng.Address();
//rng = Range(address);
//let formula = rng.Formula;
//let height2 = rng.Height; // 以磅为单位返回“区域”的高度
//let width2 = rng.Width; // 以磅为单位返回“区域”的宽度
let left = rng.Left;
let top = rng.Top;
let ws = rng.Worksheet;
//let wsName = ws.Name;
//let wb = ws.Parent;
//let wbName = wb.Name;
let pattern = /^https?:\/\//i;
try {
if (pattern.test(source)) { // 网络图片
let shape = ws.Shapes.AddPicture(source, msoTrue, msoTrue, left, top, -1, -1);
//shape.LockAspectRatio = msoTrue; // 比例保持不变
//shape.AlternativeText = source; // 可选文字 - 说明
//let height3 = shape.Height; // 以磅为单位
//let width3 = shape.Width; // 以磅为单位
//let rng2 = shape.TopLeftCell;
//let address2 = rng2.Address();
const RANDNAME = (prefix = 'tmp') => { // 随机名称
const suffix = Math.random().toString(36).substring(2);
return prefix + suffix + Date.now();
}
let local_file = temp + "/" + RANDNAME() + "." + "png";
shape.SaveAsPicture(local_file); // 另存工作表中的这张图片为文件
shape.Delete(); // 删除工作表中的这张图片
rng.RangeEx.InsertCellPicture(local_file);
FileSystem.unlinkSync(local_file); // 删除文件
//console.log(rng.Formula); // 公式为原来的
} else { // 本地图片
rng.RangeEx.InsertCellPicture(source);
//console.log(rng.Formula); // 公式为原来的
}
} catch(err) {
return "按{F9}查看";
}
}插入函数对话框、函数参数对话框:
加载宏文件function Workbook_Open(){}中添加以下代码。
Application.MacroOptions("JSAIMAGE","将图片从数据源位置嵌入单元格。",undefined,undefined,undefined,undefined,14,undefined,undefined,undefined,["图片文件的路径。"]);