Excel içinden mail gönderme


Excel içerisinden makro ile direkt olarak outlook mesaj gönderme panelinin açılmasını sağlayabilirsiniz.

Kodlar aşağıda. Bu makro özellikle, excelde eposta adresleri barındırıp her birine mail atmak işi rutin halde ise işe yarar bir çözüm olacaktır. İşte kodlar:


Sub OutlookMesajOlustur()
Dim olApp As Object
Dim Msg As Object

Set olApp = CreateObject("Outlook.Application")

Set Msg = olApp.CreateItem(0)

Msg.Display

Set Msg = Nothing
Set olApp = Nothing
End Sub

Excel içinde makro yazarak herhangi bir internet sitesini açmak


Excel makroları ile ya da diğer adı ile VBA ile yapılamaycak şey yok gibi. Şimdi diyelim ki bir excel tablosu ile çalışırken, döviz kurları ve benzeri bir veriyi almak için sürekli ve sıkça aynı web sitesini açıp bakmanız gerekiyor. Bunu elle yapmak yerine excel içerisine bir makro yazarak, makroya ister kısayol eklemek suretiyle ister bir butona atamak suretiyle  otomatik olarak internet sitesini excel içinde açabilirsiniz.

Bunun direkt kodu vermek yerine teker teker ekran görüntüleri ile yapılışını gösteriyorum

Önce excel tablomuzu açıyor (2007 versiyon), Geliştirici sekmesinde Visual Basic butonunu tıklıyoruz.

Sonra açılan VBA ekranımıza kodlarımızı ekliyoruz.

En son olarak excel sayfamıza dönüp makromuzu test ediyoruz.

Açılan ekranda gelştirici sekmesinde makroları tıklayıp, GoToWebsite adlı fonksiyonu seçip çalıştır dediğimizde açılmasını istediğimiz suatatan.wordpress.com isimli sayfamız açılıyor.

Bu da kodlarımız

Sub GoToWebSite()
Dim appIE As Object ' InternetExplorer
Dim sURL As String
Application.ScreenUpdating = False

Set appIE = CreateObject("InternetExplorer.Application")

sURL = "http://www.codeforexcelandoutlook.com"

With appIE
.Navigate sURL
.Visible = True
End With

Application.ScreenUpdating = True

Set appIE = Nothing
End Sub

Excel VBA ile resim ekleme


Excel’de makro kaydederek resim eklemek sorunlu bir iştir. Bunun yerine makroyu elle yazarak resmin eklenmesini sağlayabilirsiniz.

Makro kodu şu

Sub AddPicture()

SuatAtanResimYolu= "C:/resimler/resim.jpg"

Set MyPict = ActiveSheet.Pictures.Insert(SuatAtanResimYolu)

End Sub

Bu kodda dikkat edeceğiniz husus SuatAtanResimYolu adlı değişkeni direkt resim.jpg diye tanımlama imkanı olmamasıdır. Ancak ve ancak makronunun çalışacağı bilgisayarda ilgili resmin bulunduğu yere resim konması gerekir.

Bu kodu bir kere yazdıktan sonra makronuza kısa yol tuşu atayarak istediğiniz her sayfaya hızlı bir şekilde sabit resim (imza, logo vb) ekleyebilirsiniz. Ayrıca yanılmıyorsam resmi gif olarak eklemek sorun oluyor o yüzden jpg olarak eklemekte fayda var.

Güzel değil mi? Suat ATAN Hayratıdır.

Excel VBA Makroları ile toplu alt sayfalar oluşturma ve çalışma sayfaları maniplasyonu


Bugün çoktandır merak edip araştırdığım Excel Makroları veya VBA denilen hizmeti öğrendim. Bir kaç saat içinde bundan sonraki toplu işlemleri tek kalemde yapmayı sağlayacak ‘ilaç’ gibi metotları öğrendim. (Daha önce programcılık yaptıysanız bir kaç saatte VBA’yı sökersiniz)

Excel VBA excel’de tabiri caizse hammallık yapmak gerektiğinde uzman excel kullanıcılarını hammallıktan kurtaran ve blok işlem yapabilen güçlü bir sihirli değnek.

Şimdi ilk örneğimi paylaşmak istiyorum. Bu örneği Hakediş tablosu hazırlarken geliştirdim. Temel amacı istenilen adette çalışma sayfasını (metraj için) otomatik olarak oluşturmak  icmal defterindeki her bir kalemdeki yer alan poz no ile poz tanımlarını her bir sayfaya ayrı yapıştırmak.

 

Aşağıdaki kodda gördüğünüz fonksiyonlardan KOPYALA() fonksiyonu halihazırdaki excel tablonuzda M isimli çalışma sayfasından 21 adet kopyalar

BosMetrajTablosuOlustur adlı fonksiyon ise KESIFOZETI tablosunda B sütüunda B5 ten başlayarak B sütunundaki bir veriyi alıp yeni açılmış M1 M2 diye giden çalışma sayfalarındaki B2 hücresine kaydeder ve her seferinde bir sonraki çalışma sayfasına sonraki satır değerini kaydeder. Diğer satırlarda da başka satırlardan veri alıp başka çalışma sayfalarındaki başka alanlara yapıştırır.

DeleteSheet adlı fonksiyon onay almadan parametre olarak verilen çalışma sayfasını siler. TopluSayfaSil ise DeleteSheet
fonksiyonu kullanılarak  belirtilen aralıkltaki çalışma sayfalarını siler.

Sub KOPYALA()
'
' KOPYALA Makro
'
' Klavye Kısayolu: Ctrl+q
'

For i = 1 To 18
Sheets("M").Copy After:=Sheets("M")
ActiveSheet.Name = "M" & i
Next i

End Sub

Sub BosMetrajTablosuOlustur()

For i = 1 To 18

Sheets("M" & i).Range("B2") = Sheets("KESIFOZETI").Range("B" & i + 4)
Sheets("M" & i).Range("B3") = Sheets("KESIFOZETI").Range("C" & i + 4)

Sheets("M" & i).Range("A6") = "Ayarla:" & Sheets("KESIFOZETI").Range("D" & i + 4)
Next i

End Sub

Sub TopluSayfaSil()
For i = 15 To 21

DeleteSheet ("M" & i)
Next i

End Sub

Sub DeleteSheet(strSheetName As String)
' deletes a sheet named strSheetName in the active workbook
Application.DisplayAlerts = False
Sheets(strSheetName).Delete
Application.DisplayAlerts = True
End Sub