自定义文件命名规则,快速另存文件,省去手动编辑文件名称的麻烦

星邮发票按照指定文件名称规则,自动生成文件名称并弹出另存为窗口,省去手动编辑文件名称的动作

文件命名规则:

${内部订单号}-星邮-${渠道名称}-${货件数量,根据最后一个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 {
        
    }
    
}
广东省
浏览 132
1
5
分享
5 +1
1
1 +1
全部评论 1
 
恰同学少年
· 黑龙江省
回复