自定义文件命名规则,快速另存文件,省去手动编辑文件名称的麻烦
星邮发票按照指定文件名称规则,自动生成文件名称并弹出另存为窗口,省去手动编辑文件名称的动作
文件命名规则:
${内部订单号}-星邮-${渠道名称}-${货件数量,根据最后一个FBA箱号确定}
gif动图演示效果:
代码如下:
//添加功能按钮到WPS上方的功能区
function Workbook_Open() {
const arr = [
{
btn1: ['快速格式', 'cellFormat']
, btn2: ['选项', 'cellFormat_option']
}, {
btn1: ['单SKU体积重', 'SKUDimensionalWeight']
, btn2: ['选项', 'SKUDimensionalWeight_option']
}, {
btn1: ['装箱尺寸', 'boxSize']
, btn2: ['选项', 'boxSize_option']
}, {
btn1: ['皓鹏发票', 'haopeng']
, btn2: ['星邮发票', 'xingyou']
}
];
//设置功能区
arr.forEach((obj) => {
let bar = Application.CommandBars.Add(); //添加CommandBar对象
bar.Visible = true; //设置CommandBar对象为可见
for (let i in obj) {
let btn = bar.Controls.Add(msoControlButton); //向CommandBar对象添加Button控件
btn.Caption = obj[i][0]; //指定Button名称
btn.OnAction = obj[i][1]; //指定要执行的函数
}
})
}
//自动编辑星邮发票文件名称,并另存文件
function xingyou() {
//判断是否为星邮发票文件
let str = Range('A1').Value2 + Range('D2').Value2;
if (str != '渠道名称客户订单号*') return;
let vel1 = Range('B1').Value2; //获取渠道
let vel2 = GetSetting('addins', 'cellFormat', 'InternalOrder'); //获取内部单号
Range('E2').Value2 = vel2
//防止查找失败弹出报错
try {
//识别FBA货件数量
let arr = Range('A1:A500').Find('FBA箱号').CurrentRegion.Value2
let fba = arr[arr.length-1][0]
let cot = Number(fba.slice(-2))
//自动命名文件名称
let wname = Application.GetSaveAsFilename({
InitialFilename: `${vel2}-星邮-${vel1}-${cot}件`,
FileFilter: 'Microsoft Excel 97-2003 文件(*.xls), *.xls, Microsoft Excel 文件(*.xlsx), *.xlsx'
});
//另存文件
if (wname) ActiveWorkbook.SaveAs(wname);
} catch {
}
}