Excel Betikleri / Office Scripts

Web ve modern Excel için otomasyon reçeteleri.

VBA makrolarının web tarafındaki sınırlarını tamamlayan Office Scripts yaklaşımını öğrenin. Hazır betik örneklerini inceleyin, kopyalayın ve kendi dosyalarınıza uyarlayın.

10

Hazır Betik

7

Kategori

Masaüstünde VBA, modern bulut akışında Office Scripts.

İkisi rakip değil; doğru bağlamda birbirini tamamlayan iki farklı otomasyon yaklaşımıdır.

VBA mı Office Scripts mi?

1. VBA masaüstü Excel otomasyonlarında çok güçlüdür; olaylar, UserForm yapıları ve eski dosya ekosistemiyle uyumludur.

2. Office Scripts web, Windows ve Mac üzerinde bulut odaklı, paylaşılabilir ve Power Automate ile entegre otomasyonlar için uygundur.

Masaüstü ve gelişmiş Excel nesne modeli gerekiyorsa VBA; web ve bulut tabanlı tekrar eden işler için Office Scripts tercih edilir.

Power Query mi Office Scripts mi?

1. Power Query büyük dış veri kaynaklarını alma, temizleme ve dönüştürme tarafında daha uygundur.

2. Office Scripts Excel çalışma kitabı içindeki hızlı işlemler, biçimlendirme, tablo hazırlığı ve Power Automate senaryolarında daha uygundur.

Veri kaynağı ve dönüşüm akışı için Power Query; çalışma kitabı içi işlem otomasyonu için Office Scripts kullanın.

Script Kaydedici mi Kod Editörü mü?

1. Script Kaydedici, yaptığınız adımları kaydederek başlangıç için hızlı betik üretir.

2. Kod Editörü, daha kontrollü, yeniden kullanılabilir ve koşullu betikler yazmanızı sağlar.

Önce kaydediciyle başlayın; sonra kodu sadeleştirip yeniden kullanılabilir hale getirin.

10 betik gösteriliyor.

Başlangıç Tablo ve Biçim

Seçili aralığı Excel Tablosuna çevir

Seçili hücre aralığını başlıklı bir Excel Tablosu haline getirir.

Ne zaman kullanılır?

Düz veri aralıklarını hızlıca filtrelenebilir ve yapılandırılmış tabloya çevirmek istediğinizde kullanılır.

Office Script kodu

function main(workbook: ExcelScript.Workbook) {
  const selectedRange = workbook.getSelectedRange();
  const table = workbook.addTable(selectedRange, true);
  table.setName("VeriTablosu");
}

Dikkat edilmesi gerekenler

  • Seçili aralığın ilk satırı başlık olarak kabul edilir.
  • Tablo adı dosyada benzersiz olmalıdır.
  • Başlıksız veri için ikinci argümanı false yapabilirsiniz.
Başlangıç Temizlik

Tüm çalışma sayfalarındaki filtreleri temizle

Dosyadaki tüm tabloların filtrelerini temizlemeyi dener.

Ne zaman kullanılır?

Dosya farklı filtrelerle kaydedildiyse ve temiz başlangıç görünümü istiyorsanız kullanılır.

Office Script kodu

function main(workbook: ExcelScript.Workbook) {
  workbook.getTables().forEach(table => {
    const filter = table.getAutoFilter();
    filter.clearCriteria();
  });
}

Dikkat edilmesi gerekenler

  • Bu betik Excel tabloları üzerindeki filtreleri hedefler.
  • Normal aralık filtreleri için farklı yaklaşım gerekebilir.
  • Filtreleri kaldırmaz, yalnızca kriterleri temizler.
Başlangıç Dosya Analizi

Tüm sayfa adlarını listele

Çalışma kitabındaki sayfa adlarını yeni veya mevcut bir özet sayfasına yazar.

Ne zaman kullanılır?

Çok sayfalı dosyalarda hızlı içerik listesi oluşturmak istediğinizde kullanılır.

Office Script kodu

function main(workbook: ExcelScript.Workbook) {
  let sheet = workbook.getWorksheet("SayfaListesi");
  if (!sheet) {
    sheet = workbook.addWorksheet("SayfaListesi");
  }

  const names = workbook.getWorksheets().map(ws => [ws.getName()]);
  sheet.getRange("A1").setValue("Sayfa Adı");
  sheet.getRangeByIndexes(1, 0, names.length, 1).setValues(names);
  sheet.getUsedRange()?.getFormat().autofitColumns();
}

Dikkat edilmesi gerekenler

  • SayfaListesi adlı sayfa yoksa otomatik oluşturulur.
  • Dosyadaki tüm çalışma sayfalarının adlarını listeler.
  • Sayfa sayısı değiştikçe betik yeniden çalıştırılabilir.
Orta Veri Temizliği

Boş satırları sil

Aktif sayfadaki kullanılan aralıkta tamamen boş olan satırları siler.

Ne zaman kullanılır?

Dış sistemlerden gelen listelerde araya boş satırlar karıştıysa kullanılır.

Office Script kodu

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const usedRange = sheet.getUsedRange();

  if (!usedRange) {
    return;
  }

  const values = usedRange.getValues();
  const startRow = usedRange.getRowIndex();

  for (let i = values.length - 1; i >= 0; i--) {
    const isEmpty = values[i].every(cell => cell === "" || cell === null);
    if (isEmpty) {
      sheet.getRangeByIndexes(startRow + i, 0, 1, usedRange.getColumnCount()).delete(ExcelScript.DeleteShiftDirection.up);
    }
  }
}

Dikkat edilmesi gerekenler

  • Satır silme işlemi alttan üste doğru yapılır.
  • Sadece tamamen boş satırlar silinir.
  • Veri kaybı riskine karşı işlemden önce dosya kopyası almak iyi olur.
Başlangıç Biçimlendirme

Başlık satırını biçimlendir

Aktif sayfadaki kullanılan aralığın ilk satırını rapor başlığı gibi biçimlendirir.

Ne zaman kullanılır?

Rapor dosyalarında başlık satırını tutarlı hale getirmek istediğinizde kullanılır.

Office Script kodu

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const usedRange = sheet.getUsedRange();

  if (!usedRange) {
    return;
  }

  const header = sheet.getRangeByIndexes(
    usedRange.getRowIndex(),
    usedRange.getColumnIndex(),
    1,
    usedRange.getColumnCount()
  );

  header.getFormat().getFont().setBold(true);
  header.getFormat().getFill().setColor("#E2F0D9");
  header.getFormat().autofitColumns();
}

Dikkat edilmesi gerekenler

  • Renk kodu kurumsal stile göre değiştirilebilir.
  • Kullanılan aralığın ilk satırı başlık kabul edilir.
  • Tablo biçimi yerine temel hücre biçimlendirmesi yapar.
Başlangıç Temizlik

Aktif sayfadaki kullanılan aralığı temizle

Aktif sayfadaki kullanılan hücrelerin içeriğini temizler.

Ne zaman kullanılır?

Şablon dosyalarda veri giriş alanını hızlıca sıfırlamak istediğinizde kullanılır.

Office Script kodu

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const usedRange = sheet.getUsedRange();

  if (usedRange) {
    usedRange.clear(ExcelScript.ClearApplyTo.contents);
  }
}

Dikkat edilmesi gerekenler

  • Sadece içerikleri temizler; biçimlendirmeleri korur.
  • Tüm kullanılan aralığı etkilediği için dikkatli kullanılmalıdır.
  • Belirli bir alan temizlenecekse getRange("A2:D100") gibi sabit aralık kullanılabilir.
Başlangıç Raporlama

Bugünün tarihini rapor alanına yaz

Aktif sayfada belirli hücreye güncel tarih ve saat bilgisini yazar.

Ne zaman kullanılır?

Raporlarda son güncelleme zamanını göstermek istediğinizde kullanılır.

Office Script kodu

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const now = new Date();

  sheet.getRange("B1").setValue("Son Güncelleme");
  sheet.getRange("C1").setValue(now.toLocaleString());
}

Dikkat edilmesi gerekenler

  • Tarih/saat biçimi tarayıcı veya çalışma ortamına göre değişebilir.
  • Hücre adresleri rapor yapınıza göre düzenlenebilir.
  • Power Automate ile zamanlanmış çalıştırma senaryolarında faydalıdır.
Başlangıç Biçimlendirme

Belirli sütun genişliklerini otomatik ayarla

Aktif sayfadaki kullanılan aralığın sütunlarını ve satırlarını otomatik sığdırır.

Ne zaman kullanılır?

Dışarıdan gelen veri raporlarında okunabilirliği hızlıca düzeltmek istediğinizde kullanılır.

Office Script kodu

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const usedRange = sheet.getUsedRange();

  if (!usedRange) {
    return;
  }

  usedRange.getFormat().autofitColumns();
  usedRange.getFormat().autofitRows();
}

Dikkat edilmesi gerekenler

  • Çok geniş metin içeren hücrelerde aşırı geniş sütunlar oluşabilir.
  • Gerekirse belirli sütunlara sabit genişlik verilebilir.
  • Rapor hazırlama betiklerinin sonunda kullanılabilir.
Orta Veri Kontrolü

Seçili aralıktaki boş hücreleri vurgula

Seçili aralıkta boş hücreleri açık renkle işaretler.

Ne zaman kullanılır?

Eksik veri kontrolü yapmak ve boş alanları hızlıca görmek istediğinizde kullanılır.

Office Script kodu

function main(workbook: ExcelScript.Workbook) {
  const range = workbook.getSelectedRange();
  const values = range.getValues();

  for (let r = 0; r < values.length; r++) {
    for (let c = 0; c < values[r].length; c++) {
      if (values[r][c] === "" || values[r][c] === null) {
        range.getCell(r, c).getFormat().getFill().setColor("#FFF2CC");
      }
    }
  }
}

Dikkat edilmesi gerekenler

  • Sadece seçili aralık üzerinde çalışır.
  • Mevcut dolgu renklerini değiştirebilir.
  • Büyük aralıklarda çalıştırmadan önce performansı düşünmek gerekir.
Orta Raporlama

Aktif sayfayı PDF öncesi rapor görünümüne hazırla

Başlık, görünüm ve kullanılan aralık üzerinde temel rapor hazırlığı yapar.

Ne zaman kullanılır?

PDF veya çıktı almadan önce rapor sayfasını düzenli hale getirmek istediğinizde kullanılır.

Office Script kodu

function main(workbook: ExcelScript.Workbook) {
  const sheet = workbook.getActiveWorksheet();
  const usedRange = sheet.getUsedRange();

  if (!usedRange) {
    return;
  }

  usedRange.getFormat().autofitColumns();
  usedRange.getFormat().autofitRows();

  sheet.getRange("A1").getFormat().getFont().setBold(true);
  sheet.getRange("A1").getFormat().getFont().setSize(16);
}

Dikkat edilmesi gerekenler

  • Office Scripts doğrudan her PDF senaryosunu VBA gibi yönetmeyebilir.
  • Bu betik rapor görünümünü hazırlar; çıktı akışı için ortamınıza göre ek adım gerekir.
  • Power Automate ile daha gelişmiş belge süreçleri kurulabilir.

Sıradaki modern Excel alanı: Python in Excel.

Office Scripts tekrar eden Excel işlemlerini otomatikleştirirken, Python in Excel veri analizi ve görselleştirme tarafında ayrı bir kapı açar.