【问题标题】:Excel Office Add-In API Worksheet Protection PasswordExcel Office 加载项 API 工作表保护密码
【发布时间】:2016-08-09 09:39:50
【问题描述】:

我有一个关于 Excel 工作表保护的问题...

上下文是我需要为不同的用户组提供不同的工作表来编辑,但所有组必须至少看到所有工作表,例如usergroup1 可以编辑工作表二和三以及工作表一的部分内容,usergroup2 只能编辑工作表一。

我可以相应地设置 FormatProtection (range.format.protection.locked = false;) 和 WorksheetProtection (worksheet.protection.protect();) 以启用此功能,但我似乎无法通过 API 设置密码以防止 Worksheet Protection?这意味着,例如,任一组都可以简单地单击审阅功能区中的取消保护工作表选项并编辑我不希望他们这样做的工作表。

我已尝试浏览以下文档,但不幸的是无济于事。

举个例子,我想完成一个函数:

function CopyWorksheet() {

        var newAddress;

        Excel.run(function (ctx) {

            var worksheet = ctx.workbook.worksheets.getActiveWorksheet();
            var range = worksheet.getUsedRange();
            range.load();

            // insert new worksheet
            var newWorksheetName = "Copied_Sheet";              
            var newWorksheet = ctx.workbook.worksheets.add(newWorksheetName);

            return ctx.sync().then(function () {

                // copy the old values to the new worksheet
                newAddress = range.address.substring(range.address.indexOf("!") + 1);
                newWorksheet.getRange(newAddress).values = range.values;
                newWorksheet.getRange(newAddress).formulas = range.formulas;
                newWorksheet.getRange(newAddress).text = range.text;

                // protect both worksheets
                worksheet.protection.protect();
                newWorksheet.protection.protect();

                // requirement here to set a password so that no one can 
                // edit the worksheets by selecting 'Unprotect Sheet' in excel
                // ...
            })
            .then(ctx.sync)})
            .catch(function(error) {
                    console.log("Error: " + error);                     
            });
        }

目前,我使用的是 Excel 2016(桌面版)。这可以实现还是我错过了一些可以实现相同结果的现有功能?

感谢您的帮助。

【问题讨论】:

  • 到目前为止你尝试过什么?请显示更多您的代码。关于实际编程的这么少的细节很难提供帮助。
  • @Tom 感谢您的快速回复。我在帖子中添加了一些代码以获取更多上下文。

标签: excel ms-office office-addins excel-addins office-js


【解决方案1】:

我们的 API 不提供密码保护功能。您可以保护工作表以避免随意编辑,但不能使用密码保护。原因是并非所有端点都提供密码保护(IIRC,Excel Online 存在问题)。

如果您想在 UserVoice 上提出建议错误,您可以查看我们是否会考虑将密码保护作为仅限桌面的 API。到目前为止,我们一直避免在 Excel 中执行这些操作,但我知道 Word 已经完成了一些“WordApiDesktop”API。因此,根据它对您(和其他人)场景的阻碍程度,这可能是一种选择。在这种情况下,您可以在桌面上设置密码保护和取消保护,但无法在线执行这些操作。

【讨论】:

    【解决方案2】:

    有一个针对此问题的更新:我们现在支持密码保护。检查https://docs.microsoft.com/en-us/javascript/api/excel/excel.workbookprotection?view=office-js#protect-password-

    【讨论】:

    • @Jaun Balmori,我有一个“使用密码加密”的 Excel 工作簿,但是当我登录 workbook.protection.protected 时,运行链接中的代码返回 false。这是预期的吗?我希望能够在将工作簿发送到服务器之前确定它是否受到保护......
    猜你喜欢
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多