Clever-Excel-Forum

Normale Version: Office Scripts: Spalten einblenden
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Moin

Ich versuche mich gerade auf dem Firmen-Laptop mit der "Konvertierung" von VBA-Code auf Office-Scripts.
Frustrierend ist schon mal dass es keine Events gibt. Alles muss manuell angestoßen werden.

Dieser Code läuft auf den Fehler: Range setColumnHidden: Dieser Vorgang ist für das aktuelle Objekt nicht zulässig.
Code:
function main(workbook: ExcelScript.Workbook)
{
  // Zuweisungen
  let selectedSheet = workbook.getWorksheet("Aufgaben");

  // Alle Spalten einblenden
  selectedSheet.getRange("A:XFD").setColumnHidden(false);
}


Dieser Code läuft ohne Fehler durch:
Code:
function main(workbook: ExcelScript.Workbook)
{
  // Zuweisungen
  let selectedSheet = workbook.getWorksheet("Aufgaben");

  // Alle Spalten einblenden
  selectedSheet.getRange("A:XFC").setColumnHidden(false);
}

Ich hätte schon eine Vermutung warum das so ist. Dennoch ist es eine Einschränkung. Schließlich kann ich im Blatt manuell alle Spalten einblenden.
Moin,

in ScriptLab taucht dasselbe Verhalten auf. Ich denke allerdings nicht, dass das ein Bug ist, denn ich vermute,
das Script blendet nach rechts ein. Nach XFD ist aber nichts mehr.

PHP-Code:
$("#run").click(() => tryCatch(run));

async function run() {
  await Excel.run(async (context) => {
    context.workbook.worksheets.getActiveWorksheet().getRange("A:XFC").columnHidden=false;
    await context.sync();
  });
}

async function tryCatch(callback) {
  try {
    await callback();
  } catch (error) {
    console.error(error);
  }


Gruß
Meine Vermutung hängt mit der Bezeichnung setColumnHidden() zusammen. D.h. es geht um das Ausblenden. Und man kann ja nie alle Spalten ausblenden; eine muss sichtbar bleiben.
Mit B:XFD geht es auch.

Lustigerweise wird der Code mit A:XFD so aufgezeichnet.
Hallo,

stimmt, da hast Du Recht. Auch was die Aufzeichnung betrifft, die ich nachstellen konnte. Mit folgendem Code bekomme ich alle ausgeblendet ...

PHP-Code:
function main(workbookExcelScript.Workbook) {
 
let selectedSheet workbook.getActiveWorksheet();
 
selectedSheet.getRange("A:XFC").setColumnHidden(true);
 
selectedSheet.getRange("XFD:XFD").setColumnHidden(true);


Office Scripts spricht die Basisbibliothek OfficeJS an und setColumnHidden dürfte somit eine Kapselung von columnHidden sein.
Von daher liegt das Problem meiner Ansicht nach eher dort. Das gleiche Problem besteht übrigens auch bei den Zeilen. 

Allerdings fällt mir auch folgendes auf: wenn ich in Excel Online alle Spalten markiere und dann das Kontextmenü aufrufe, taucht dort
nicht der Befehl zum Ausblenden auf, sondern nur zum Einblenden. Wenn ich allerdings Spalte A oder Spalte XFD nicht auswähle,
also Spaltenanzahl - 1, erscheint dann der Befehl zum Ausblenden. Einmal alle Spalten - 1 ausgeblendet, kann ich dann wieder
die verbleibende Spalte per Kontextmenü ausblenden. Markiere ich alle Spalten und gehe statt über das Kontextmenü dann
über das Menüband > Zellen > Format, bekomme ich alle Spalten auf einmal ausgeblendet.

Ich werde mal Sudhi (MS) darauf ansprechen.

Gruß