• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Alle regels van alle tables op alle sheets verwijderen/leegmaken

  • Onderwerp starter Onderwerp starter vrouw
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

vrouw

Terugkerende gebruiker
Lid geworden
27 mrt 2010
Berichten
1.477
Beste Helpmij`ers

Ik hoop dat iemand mij kan helpen met een script voor Excel-Online.
Op deze site ben ik tot onderstaande script gekomen en probeer ik die aan te passen om alle regels uit alle tabellen uit alle sheets te verwijderen.

Ik krijg geen foutmelding op onderstaande maar het werkt ook niet:shocked:
alleen de eerste tabel op de eerste sheet word verwijderd.
Ziet iemand wat er fout gaat?


Code:
function main(workbook: ExcelScript.Workbook) {
 
  const tables = workbook.getTables();
  tables.forEach(table => {
    
  let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
  try {
    table.deleteRowsAt(0, rowCount);
  } catch (e) {
    if (rowCount === 1 && e.code === 'InvalidArgument') {
      console.log("This error means there's no row to delete.")
    }}})}
 
Laatst bewerkt:
Terugkomend op mijn bericht van hierboven en inmiddels een paar uur verder ben ik tot onderstaande code gekomen.

Niet ideaal volgens mij omdat het script ook best wel lang bezig is om de tabellen te 'legen' op deze manier.
Het werkt nu wel maar traag en ook worden niet alle tabellen op alle sheets iedere keer leeggemaakt.



Code:
function main(workbook: ExcelScript.Workbook) {
  // ==>> For each table in this workbook sort date <<==
  const tables = workbook.getTables();

    // ==>> For each Sheet Filter only Blank Outcome <<==
    {
      let table = workbook.getTable("Table1");
      let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
      try {
      table.deleteRowsAt(0, rowCount);
      } catch (e) {
      if (rowCount === 1 && e.code === 'InvalidArgument') {
      console.log("This error means there's no row into table 1 delete.");
      }
    }
  }
  {
  let table = workbook.getTable("Table2");
  let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
   try {
   table.deleteRowsAt(0, rowCount);
    } catch (e) {
    if (rowCount === 1 && e.code === 'InvalidArgument') {
      console.log("This error means there's no row into table 2 delete.");    	
     }
    }
   }
   {
   let table = workbook.getTable("Table3");
    let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
try {
  table.deleteRowsAt(0, rowCount);
} catch (e) {
  if (rowCount === 1 && e.code === 'InvalidArgument') {
    console.log("This error means there's no row into table 3 delete.");
  }
 }
}
  {
    let table = workbook.getTable("Table4");
    let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
    try {
      table.deleteRowsAt(0, rowCount);
    } catch (e) {
      if (rowCount === 1 && e.code === 'InvalidArgument') {
        console.log("This error means there's no row into table 4 delete.");
      }
    }
  }
  {
    let table = workbook.getTable("Table5");
    let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
    try {
      table.deleteRowsAt(0, rowCount);
    } catch (e) {
      if (rowCount === 1 && e.code === 'InvalidArgument') {
        console.log("This error means there's no row into table 5 delete.");
      }
    }
  }
  {
    let table = workbook.getTable("Table6");
    let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
    try {
      table.deleteRowsAt(0, rowCount);
    } catch (e) {
      if (rowCount === 1 && e.code === 'InvalidArgument') {
        console.log("This error means there's no row into table 6 delete.");
      }
    }
  }
  {
    let table = workbook.getTable("Table7");
    let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
    try {
      table.deleteRowsAt(0, rowCount);
    } catch (e) {
      if (rowCount === 1 && e.code === 'InvalidArgument') {
        console.log("This error means there's no row into table 7 delete.");
      }
    }
  }
  {
    let table = workbook.getTable("Table8");
    let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
    try {
      table.deleteRowsAt(0, rowCount);
    } catch (e) {
      if (rowCount === 1 && e.code === 'InvalidArgument') {
        console.log("This error means there's no row into table 8 delete.");
      }
    }
  }
  {
    let table = workbook.getTable("Table9");
    let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
    try {
      table.deleteRowsAt(0, rowCount);
    } catch (e) {
      if (rowCount === 1 && e.code === 'InvalidArgument') {
        console.log("This error means there's no row into table 9 delete.");
      }
    }
  }
}
 
Laatst bewerkt:
in VBA schrijf je dat zo in 2 loops, maar dat is de vraag blijkbaar niet meer.
Bestaat VBA niet meer in de online-versie ?
Code:
Sub AllesLeeg()
   For Each sh In ThisWorkbook.Worksheets
      For Each lo In sh.ListObjects
         If lo.ListRows.Count Then lo.DataBodyRange.Delete
      Next
   Next
End Sub
 
Laatst bewerkt:
in VBA schrijf je dat zo in 2 loops, maar dat is de vraag blijkbaar niet meer.
Bestaat VBA niet meer in de online-versie ?

Niet dat ik weet, wel gedaan dan?
Volgens mij alleen met scripts.
 
Kun je niet beter een een kopie van een leeg bestand bewaren?
 
Code:
function main(workbook: ExcelScript.Workbook) {
    workbook.getTables().forEach(table => {
        if (table.getRowCount() > 0) {
            table.deleteRowsAt(0, table.getRowCount() )
        }
    })
}

Zie https://docs.microsoft.com/en-us/office/dev/scripts/
Tip: download de pdf, links onderin de pagina, en lees hem eens door.

@cow18: nee, geen vba meer in Excel online, is er nooit geweest. Interessant: de collectie tables is nu op workbook level bereikbaar, dus geen dubbele loop meer nodig.
Als je liever de Databodyrange cellen verwijdert: die heet nu table.getRangeBetweenHeaderAndTotal()
 
@pixcel, super bedankt voor de hulp, daar kom ik wel weer mee weg :thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan