Excel Betikleri

**Okuma Süresi:** 10 dk **Kategori:** İleri Düzey ve Otomasyon

Hızlı Özet:

Excel Betikleri rehberi ile tekrarlayan görevleri otomatikleştirmeyi öğrenin! VBA'dan farklılıklarını, kod yazmayı, hata ayıklamayı ve paylaşmayı adım adım keşfedin. Zamandan tasarruf edin, verimliliğinizi artırın!

Excel Betikleri Rehberi

Excel Betikleri Rehberi

Geleceğin otomasyon aracı: Bulut tabanlı, modern ve güvenli.

Giriş: Excel Betikleri (Office Scripts) Nedir?

Excel Betikleri (Office Scripts), Excel'deki tekrarlayan görevleri otomatikleştirmek için kullanılan modern bir araçtır. Microsoft 365'in bir parçası olarak, özellikle bulut tabanlı ve web'de Excel kullanımı için tasarlanmıştır. Betikler, yaptığınız işlemleri kaydedebilir ve bu işlemleri yeniden kullanılabilir, düzenlenebilir kodlara dönüştürebilir. Bu sayede, rapor biçimlendirme, veri temizleme gibi zaman alan işleri tek bir tıklamayla otomatikleştirebilirsiniz.

1. Excel Betikleri ve VBA Makroları Arasındaki Farklar

Her iki araç da otomasyon için kullanılsa da, temel yapıları, dilleri ve kullanım alanları farklıdır. Doğru aracı seçmek için bu farkları anlamak önemlidir.

Özellik VBA Makroları Excel Betikleri
Dil Visual Basic for Applications (VBA) TypeScript (JavaScript'in bir üst kümesi)
Platform Sadece Excel masaüstü uygulaması **Hem Excel masaüstü hem de web uygulaması.** Özellikle mobil kullanım için kritik.
Güvenlik Tüm sisteme erişebilir, güvenlik riski taşır. Sadece betiğin çalıştığı Excel dosyasına erişebilir, daha güvenlidir.
Entegrasyon Office dışı sistemlerle sınırlı entegrasyon. **Power Automate, Power BI gibi bulut hizmetleriyle güçlü entegrasyon.**
Çalışma Alanı Aktif Çalışma Kitabı dışında diğer dosyalara erişebilir. Sadece betiğin çalıştığı **aktif çalışma kitabına** erişebilir.

2. VBA ve Betik Sözdizimi Karşılaştırması

Aynı görevi gerçekleştiren iki farklı kod bloğu üzerinden sözdizimi farklarını inceleyelim. Bu örnekte, 'Satış Miktarı' sütunundaki değerleri `1000`'den büyük olan hücrelerin arka planını yeşile boyama işlemi gösterilmiştir.

VBA Kodu:

Sub KosulluRenklendirme()
    Dim sonSatir As Long
    Dim i As Long
    
    sonSatir = ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row
    
    For i = 2 To sonSatir
        If Cells(i, "C").Value > 1000 Then
            Cells(i, "C").Interior.Color = vbGreen
        End If
    Next i
End Sub

Betik (TypeScript) Kodu:

function main(workbook: ExcelScript.Workbook) {
    let sheet = workbook.getActiveWorksheet();
    let range = sheet.getUsedRange();
    let lastRow = range.getRowCount();

    for (let i = 1; i < lastRow; i++) {
        let cell = sheet.getRangeByIndexes(i, 2); // C sütunu (0'dan başladığı için 2)

        if (cell.getValue() > 1000) {
            cell.getFormat().getFill().setColor("green");
        }
    }
}

**Ana Farklar:** VBA, `ActiveSheet` ve `Cells` gibi nesneleri doğrudan kullanırken, Betikler `workbook.getActiveWorksheet()` ve `sheet.getRangeByIndexes()` gibi daha nesne odaklı ve fonksiyonel bir yapıya sahiptir. Betikler, `let` ve `const` gibi modern JavaScript sözdizimi kullanır.

3. Betik Kaydedicisi ile Başlangıç

Kod yazmayı bilmenize gerek kalmadan, yaptığınız işlemleri kaydederek ilk betiğinizi oluşturabilirsiniz. Bu, VBA'daki makro kaydediciye benzer bir mantıkla çalışır.

Adım Adım Betik Kaydetme

  • Excel'de **Otomatikleştir** sekmesine gidin.
  • **Eylemleri Kaydet** butonuna tıklayın. Sağ tarafta bir görev bölmesi açılacaktır.
  • Betik haline getirmek istediğiniz işlemleri (hücreleri biçimlendirme, formül ekleme, tablo oluşturma vb.) gerçekleştirin.
  • İşlemler bitince, görev bölmesindeki **Durdur** butonuna basın.
  • Excel, yaptığınız işlemleri otomatik olarak bir betik kodu haline getirecektir.

4. Kod Editörü ve Betik Mantığı

Kaydettiğiniz betiği görüntülemek, düzenlemek veya sıfırdan yeni bir betik yazmak için **Kod Editörü**'nü kullanabilirsiniz. Betiklerin JavaScript tabanlı olması, modern kodlama dünyasına bir kapı açar.

Örnek Betik Kodu

function main(workbook: ExcelScript.Workbook) {
                    // Aktif sayfayı al
                    let selectedSheet = workbook.getActiveWorksheet();
                    
                    // A1:B5 aralığını al ve tabloya dönüştür
                    let table = selectedSheet.getRange("A1:B5").getTables()[0];
                    
                    // Tabloya bir toplam satırı ekle
                    table.getShowTotals();
                    table.setShowTotals(true);

                    // B sütununu para birimi olarak biçimlendir
                    selectedSheet.getRange("B:B").getFormat().setNumberFormatLocal("$#,##0.00");
                }

Bu kod, seçili bir aralığı tabloya dönüştürür, toplam satırı ekler ve bir sütunu para birimi olarak biçimlendirir. Bu adımları Kaydedici ile yapabilir veya bu kodu kendiniz yazarak otomatikleştirebilirsiniz.

🚀 İnteraktif Simülasyon: Raporu Tek Tıkla Hazırla

Bu simülasyon, bir betiğin ham veriyi nasıl otomatik olarak temizleyip biçimlendirdiğini gösterir. Amacı, VBA'nın aksine Betiklerin nasıl bir iş akışını baştan sona otomatikleştirdiğini göstermektir.

Ham Veri

Aylar Satış Miktarı Birim Fiyat
Ocak250015
Şubat310020
Mart280018

Betik Kodunun Açıklaması

Bu betik, tablonuza otomatik olarak "Gelir" adında yeni bir sütun ekler, bu sütunu `Miktar * Fiyat` formülüyle doldurur ve tüm tabloyu para birimi formatına dönüştürür. Bu, Power Query'deki gibi veriyi dinamik olarak dönüştürme ve formatlama işlemlerinin tek bir kod bloğunda nasıl birleştirilebileceğini gösterir.

Simülasyonun Arkasındaki Betik Kodu:

function main(workbook: ExcelScript.Workbook) {
                        let sheet = workbook.getActiveWorksheet();
                        let table = sheet.getUsedRange().getTables()[0];
                        
                        // "Gelir" adlı yeni bir sütun ekle
                        table.addColumn(3, "Gelir");

                        // "Gelir" sütununu formül ile doldur
                        let newColumn = table.getColumnByName("Gelir");
                        newColumn.getRange().setFormulaR1C1("=RC[-2]*RC[-1]");
                        
                        // Tablodaki tüm sayıları para birimi formatına dönüştür
                        let dataRange = table.getRange();
                        dataRange.getFormat().setNumberFormat("$#,##0.00");
                    }

5. Farklı Kullanım Senaryoları

Betikler, basit görevlerden daha karmaşık iş akışlarına kadar birçok senaryoda kullanılabilir.

Senaryo 1: Dinamik Raporlama Tablosu Oluşturma

Web'den alınan ham bir veri setini otomatik olarak biçimlendirmek ve analiz için hazırlamak.

function main(workbook: ExcelScript.Workbook) {
                            let sheet = workbook.getWorksheet("HamVeri");
                            let range = sheet.getUsedRange();
                            
                            // Veriyi tabloya dönüştür
                            sheet.addTable(range, true);
                            
                            // Sütun başlıklarını kalın yap ve ortala
                            let headerRange = range.getRow(0);
                            headerRange.getFormat().getFont().setBold(true);
                            headerRange.getFormat().getHorizontalAlignment();
                            headerRange.getFormat().setHorizontalAlignment(ExcelScript.HorizontalAlignment.center);
                        }

Senaryo 2: Koşullu Değer Güncelleme

Belirli bir koşula uyan hücreleri bulup, değerlerini otomatik olarak değiştirmek.

function main(workbook: ExcelScript.Workbook) {
                            let sheet = workbook.getActiveWorksheet();
                            let range = sheet.getUsedRange();
                            
                            let lastRow = range.getRowCount();
                            for (let i = 1; i < lastRow; i++) {
                                let statusCell = sheet.getRange("C" + (i + 1));
                                let valueCell = sheet.getRange("B" + (i + 1));
                                
                                // Durum 'Tamamlandı' ise, değeri 0 yap
                                if (statusCell.getValue() === "Tamamlandı") {
                                    valueCell.setValue(0);
                                }
                            }
                        }

Senaryo 3: Sayfalar Arası Veri Taşıma

Bir tablodaki belirli satırları bulup, başka bir sayfaya kopyalamak ve ana sayfadan silmek.

function main(workbook: ExcelScript.Workbook) {
                            let activeSheet = workbook.getActiveWorksheet();
                            let archiveSheet = workbook.getWorksheet("Arşiv");
                            let dataTable = activeSheet.getUsedRange();
                            
                            // 'Tamamlandı' durumundaki satırları filtrele
                            dataTable.getAutoFilter().applyValuesFilter("Durum", ["Tamamlandı"]);
                            
                            // Filtrelenmiş satırları al ve kopyala
                            let filteredRange = dataTable.getFilteredRange();
                            let newRow = archiveSheet.getUsedRange().getRowCount() + 1;
                            archiveSheet.getRange("A" + newRow).copyFrom(filteredRange, ExcelScript.RangeCopyType.values);
                            
                            // Filtreyi temizle ve satırları sil
                            dataTable.getAutoFilter().clear();
                            filteredRange.delete(ExcelScript.DeleteShiftDirection.up);
                        }

6. Hata Ayıklama ve Güvenli Betikler Yazma

Betiklerinizle çalışırken hata ayıklama ve güvenli kod yazma pratiği, projelerinizin daha güvenilir olmasını sağlar.

Hata Ayıklama İpuçları

  • **Kod Editörü:** Kod Editörü, hatalı kodları otomatik olarak renklendirerek size anında geri bildirim verir.
  • **Hata Mesajları:** Bir betik çalışmadığında, size hatanın nedenini ve kodun hangi satırda olduğunu gösteren bir hata mesajı sunar.
  • **`console.log()`:** Betiğinizin içine `console.log()` komutları ekleyerek, değişkenlerin değerlerini veya kodunuzun işleyişini takip edebilirsiniz.

Güvenlik ve İzinler

Betikler, VBA'ya kıyasla daha güvenlidir çünkü yalnızca çalıştıkları Excel dosyasına erişim iznine sahiptir. Ancak yine de, güvenli kod yazma pratiklerine dikkat etmek önemlidir.

  • **Kodunuzu Gözden Geçirin:** Kodu paylaşmadan veya çalıştırmadan önce, beklenmedik veya potansiyel olarak zararlı bir işlem içerip içermediğini kontrol edin.
  • **Paylaşım:** Betikleri sadece güvendiğiniz kişilerle paylaşın.

7. Betikleri Çalıştırma ve Paylaşma

Oluşturduğunuz betikleri, VBA'da olduğu gibi bir butona atayarak kolayca çalıştırabilirsiniz. Ayrıca, ekibinizle paylaşarak herkesin bu otomasyonu kullanmasını sağlayabilirsiniz.

Betik Çalıştırma ve Paylaşma Adımları

  • Kaydedilen betikleriniz "Tüm Betikler" altında listelenir.
  • Bir betiği çalıştırmak için, üzerine tıklayıp "Çalıştır" butonuna basmanız yeterlidir.
  • Betikleri ekibinizle paylaşmak için, betiğin yanındaki üç noktaya tıklayarak "Paylaş" seçeneğini kullanabilirsiniz.
  • Betiklerinizi Power Automate ile entegre ederek, tetiklenen olaylarla (örneğin, yeni bir e-posta geldiğinde) otomatik olarak çalışmalarını sağlayabilirsiniz.
© 2025 Excel Ustalık Serisi. Tüm hakları saklıdır.
" isimli orjinal betikler.html kodumda simülasyon çalışıyor ve menü de sorunsuz. Şimdi bu koda header ve footer alanlarını ekleyerek eksiksiz bir tam halini paylaşır mısın? Ayrıca footer ı eklediğin yere "Footer (altbilgi) buraya eklendi." y