Excel Betikleri
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
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 |
|---|---|---|
| Ocak | 2500 | 15 |
| Şubat | 3100 | 20 |
| Mart | 2800 | 18 |
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.