Where Apps Script wins outright
Scheduled work
This is the decisive one. A trigger that runs at 6am every weekday, pulls yesterday's numbers, refreshes a summary and emails it, keeps working when the person who built it is on holiday. There is no VBA equivalent that does not involve a machine left switched on.
function dailyRefresh() {
const sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName('Raw');
const rows = fetchFromApi_(); // UrlFetchApp, with retry
sheet.getRange(2, 1, rows.length, rows[0].length).setValues(rows);
MailApp.sendEmail(RECIPIENTS, 'Daily numbers', buildSummary_());
}
Talking to other systems
UrlFetchApp makes any REST API a few lines of work, and OAuth to other Google services is handled for you. In VBA the same call is a WinHTTP object and manual JSON parsing.
Multi-user files
If several people are in the sheet while the script runs, Apps Script has LockService to serialise writes. VBA has no concept of this because the scenario does not arise.