2016-08-09 50 views
1

Ich habe eine Frage in Bezug auf den Schutz von Excel-Arbeitsblatt ...Excel Office Add-In-API-Arbeitsblatt Schutz Passwort

Der Kontext ist, dass ich verschiedene Arbeitsblätter für verschiedene Benutzergruppen zu bearbeiten, aber alle Gruppen müssen, muss das bei mindestens alle Blätter sehen zB usergroup1 kann Blätter zwei und drei und Teile von Blatt eins bearbeiten, Benutzergruppe2 kann nur Blatt eins bearbeiten.

Ich kann die FormatProtection (range.format.protection.locked = false;) entsprechend und WorksheetProtection (worksheet.protection.protect();), um dies zu aktivieren, aber ich habe nicht die Möglichkeit, ein Kennwort über die API gegen den Arbeitsblattschutz festlegen? Dies bedeutet zum Beispiel, dass jede Gruppe einfach die Option "Blattschutz entfernen" im Überprüfungs-Menüband anklicken und die Blätter bearbeiten kann, die ich nicht haben möchte.

Ich habe versucht, durch die folgenden Unterlagen, aber leider vergeblich.

Als Beispiel hier ist eine Funktion, die Ich mag würde vervollständigen:

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);      
      }); 
     } 

Derzeit bin ich Excel 2016 mit (Desktop Ausführung). Ist es möglich, einige Funktionen zu implementieren, die das gleiche Ergebnis erzielen können?

Danke für Ihre Hilfe.

+0

Was haben Sie bisher versucht? Bitte zeigen Sie mehr Code von Ihnen. Es ist ziemlich schwer mit so wenig Details über die eigentliche Programmierung zu helfen. –

+0

@Tom Vielen Dank für die schnelle Antwort. Ich habe dem Beitrag einen Code für zusätzlichen Kontext hinzugefügt. – Nigel

Antwort

2

Passwortschutz ist in unseren APIs nicht verfügbar. Sie können das Blatt schützen, um gelegentliche Änderungen zu vermeiden, aber Sie können kein Kennwort schützen. Der Grund dafür ist, dass der Passwortschutz nicht auf allen Endpunkten verfügbar ist (IIRC, es gab ein Problem mit Excel Online).

Wenn Sie einen Vorschlagsfehler unter UserVoice einreichen möchten, können Sie sehen, ob wir einen Kennwortschutz als Desktop-only-API in Erwägung ziehen würden. Wir haben es bis jetzt vermieden, diese in Excel zu machen, aber ich weiß, dass Word ein paar "WordApiDesktop" APIs gemacht hat. Je nachdem, wie sehr es Ihr (und anderes) Szenario blockiert, könnte das eine Option sein. In diesem Fall können Sie den Desktop mit einem Kennwort schützen und den Schutz aufheben. Diese Aktionen können jedoch nicht online ausgeführt werden.