Bazen bir çalışma sayfasını satır satır okumak ve ondan seçmeli olarak veri almak yararlıdır. Aşağıdaki örnekte bunun nasıl yapılacağı gösterilmektedir.
Makale, okuyucunun Geliştirici şeridinin görüntülendiğini ve VBA Düzenleyicisine aşina olduğunu varsayar. Değilse, lütfen Google "Excel Geliştirici Sekmesi" veya "Excel Kod Penceresi".
Aşağıdaki örnek, her bir e-posta adresi satırını inceleyerek ve bunları tek bir adres satırında birleştirerek verileri değiştirir. Excel yerleşik Transpose işlevlerine sahipken, kodumuzla bazı belirli adresleri hariç tutmayı ve sınırlayıcılar eklemeyi amaçlıyoruz.
Uygulamamızın yalnızca bir sayfaya ihtiyacı var. Aşağıdaki bilgileri A1 hücresine kopyalayın:
| E-posta |
| tcruise@paramount.com |
| julia.R@disney.com |
| Jules.dassin@gaumont.co.fr |
| EnricoFellini@cinecitta.co.it |
| marymontrary@bedlam.org.uk |
Kodu başlatmak için forma bir düğme yerleştirin.
Diyelim ki sadece beş tane değil, yüzlerce e-posta var; her birine aynı mesajı ve senaryomuzun aynı kopyasını göndermek istiyoruz. Bunu yapmanın birkaç yolu var, en önemlisi VBA kodundan Outlook gibi bir e-posta göndericisini çağırmak. Ancak bu alıştırma iki amaca hizmet ediyor:
- Bir çalışma sayfasında nasıl kolayca dolaşılacağını gösterin;
- Excel'in her satırı inceleme ve üzerinde işlem yapma yeteneğini vurgulayın.
VBA Kodu
VBA kodu, e-postanın alıcı alanına tek seferde yapıştırılabilmesi için her birinin arkasına noktalı virgül ekleyerek tüm adresleri birleştirecektir. Koddan, satırları inceledikten sonra Fransızca olanları hariç tutacağını not edeceksiniz.
Bir modül yerleştirin ve aşağıdakileri girin:
Option Explicit
Dim strEmail As String
Dim strAll As String
Sub Main()
strAll = ""
Range("C2") = strAll 'clear previous program results
Sheets("Sheet1").Select
Range("A2").Select
Do While ActiveCell > "" 'loop until row 7
strEmail = ActiveCell
If Right(strEmail, 2) <> "fr" Then 'exclude France
strAll = strAll & strEmail & ";"
End If
Range("A" & ActiveCell.Row + 1).Select 'move on a row in the SAME column
Loop
Range("C2") = strAll
End Sub
Kod, aktif hücreyi A sütununda tutar, yalnızca satırlar hareket eder. Arka arkaya başka bir yerde bilgilere başvurmak için şunları kullanırdık:
Variable = Activecell.offset(offset rows, offset columns)
Örneğin, aktif satırdaki B sütunundan bir değer almak için kod şu şekilde olacaktır: Activecell.offset(0, 1). A2'teyken A3'nin değerini almak için şunu okuruz: Activecell.offset(-1, 0).
Kodunuzu test etmek için düğmeyi "Ana" makroya atayın.
Bazı İnternet Servis Sağlayıcıları, spam önleme önlemi olarak, tek seferde gönderebileceğiniz e-posta sayısını sınırlayabilir. Bu yöntemi kullanırsanız, tek seferde yüzlerce e-posta göndermeden önce onlarla kontrol etmek muhtemelen en iyisidir.
Excel Dosya Bozulmasını Yönetme

Yazar Tanıtımı:
Felix Hooker, veri kurtarma uzmanıdır. DataNumendahil olmak üzere veri kurtarma teknolojilerinde dünya lideri olan , Inc. onarım rar rüşvet ve sql kurtarma yazılımı ürünleri. Daha fazla bilgi için ziyaret edin www.datanumen.com
