KOD BİLMEDEN MAKRO YAZMAK!?

[vc_row][vc_column][vc_column_text]

KOD BİLMEDEN
MAKRO YAZABİLECEĞİNİZİN FARKINDA MISINIZ?

 

Bu ilginç bir konu başlığı öyle değil mi?
Tıpkı bulutlara dokunmak gibi. Çok istiyoruz ama yapamıyoruz.
Makroyu bilmeyenler, yazamayanlar için de durum tam olarak böyle.
Ama siz yine de bilmiyorum diye üzülmeyin, sıkılmayın, PEAKUP her zaman yanınızda.

Günlük, haftalık, aylık rutin işlerimizi makrolarla birkaç saniyede hazırlamayı kim istemez ki,
öyle değil mi?

Bu size büyük bir zaman tasarrufu sağlayacak, kendinize zaman ayırabilecek
veya başka işlerle ilgilenebileceksiniz. Sürekli aynı işleri tekrar tekrar yapmaktan bıkmadık mı?
Hani hep deriz ya; “hangi çağdayız!?” İşte biraz da bu yüzden artık Excel & VBA (Makro) öğrenmeyen kalmamalı.

Şimdi biraz heyecanlanmış olmalısınız.
Her ne kadar bu başlık size sihirli gelse bile, bizler büyücü ya da sihirbaz değiliz.
Yine her şey sizin elinizde.

Bir şeyi öğrenmek istiyorsanız onu gerçekten istemeli ve onun için zaman ayırmalısınız,
bunu unutmayalım.

Peki nasıl olacak bu iş?
Kod bilmeden, makro bilmeden kod yazabilmeyi hayâl bile edemezken,
yazabildiğinizi göreceksiniz.

Sizin için önemli olan bir şeyleri yapabilmenin mutluluğunu, en az sizin kadar iyi biliyoruz.
Sizden isteğimiz, sabırla bu yazıyı okumanız ve uygulamanız.
Günün sonunda göreceksiniz ki; hiçbir kod bilginiz olmadan da rutin olarak yaptığınız
günlük işlerinizi makro ile çok daha kolay yapabileceksiniz.

Hadi gelin yavaş yavaş bu işi nasıl yapabileceğimizi öğrenelim.
(Hızlıca öğrenmek isteyenler için uygulama videosunu da yazının sonunda ekliyor olacağız.)

 

EXCEL MAKROLARI NEDİR?

Önce Excel Makroları nedir, onu öğrenerek başlayalım.

Biz bu makroların genel adına Excel & VBA diyoruz.

VBA nedir?

VBA

‘nın açılımı; Visual Basic for Applications
Yani; Office uygulamaları için uyarlanmış, Visual Basic nesne, metot ve özelliklerine erişmemizi sağlayan yapıdır.

Microsoft Office paket programı içinde bulunan programların bazılarında,
kullanıcıya kolaylık olsun diye ve sürekli tekrar edilen (rutin) işlemleri
otomatik hale getirmek için Makro komutu kullanıcıya sunulmuştur.

Makrolar hazırlanırken, Excel’in arka plânında çalışan Visual Basic programlama dili de
hazır halde beklemektedir. Herhangi bir kayıt yapıldığında bu programlama dili
aktif hale gelir ve sizin yapmış olduğunuz herhangi bir makro komutunu
programlama diline çevirir. Böylece daha sonra, hazırlamış olduğunuz makroyu çalıştırmak
veya düzenlemek istediğinizde Excel bu imkanı size rahatlıkla sunar.

 

MAKRO KAYDET YÖNTEMİ NEDİR?

Excel’in arka plânında var olan Visual Basic dilini harekete geçirip, çalışma kitaplarında,
çalışma sayfalarında veya hücrelerde yaptığımız tüm işlemleri koda döken bir araçtır ve yöntemdir.
Size sunulan bu hazır kodlarla işlerinizi daha hızı halledebilirsiniz. Biz de bu özellikten
faydalanarak verilen hazır kodları kullanacağız.

Makro Kaydet özelliğine 3 farklı noktadan ulaşabilirsiniz.

1- Geliştirici (Developer) Menüsünden

Şeritte bu menü yoksa şu yolu izleyerek menüyü şeride ekleyebilirsiniz.
DosyaSeçeneklerŞeridi Özelleştir ‣ Sağdaki menüden Geliştirici seçeneği seçip Tamam’a basın.

 

2- Görünüm (View) Menüsünden

 

3- Durum (StatusBar) Çubuğundan

 

İstediğiniz herhangi bir yöntemi kullanarak Makro Kaydet yöntemini aktif edebilirsiniz.
Şimdi nasıl aktif edeceğinizi anlatacağım fakat sadece okuyun, daha sonra bunu uygulamalı olarak birlikte yapacağız.

Makro Kaydete bastığınızda karşınıza bu pencere gelecek.
Makro1 yazan kutucuğa yapacağınız işle ilgili bir isim verebilirsiniz.
Örneğin; filtreleme yapmak için kullanacaksanız oraya filtre yazıp Tamam butonuna basarız.
Bastığımız andan itibaren yapılan kayıt başlayacak ve her işlemi kaydedip arka plânda koda dökecektir.
İşiniz bitince de Kaydı Durdurmanız gereklidir. Yine aynı yerden Kaydı Durdura basabilirsiniz.

 

Evet.. şimdi gerçek bir örnek üzerinde bu işin ne kadar kolay olduğunu görelim.

Hepimiz Excel’de verilerimizi tablo hâline getiririz, yani ilk satırda başlıklarımız, altında da o başlıklara ait verilerimiz olur değil mi? Bu tabloda da gün içinde birçok kez filtreleme yapıyoruzdur. Filtreleme yaparken ne yaparız? Hangi alanda (sütunda) bir filtreleme yapacaksak, o alandaki filtre oklarına tıklarız ve açılan pencereden filtrelemek istediğimiz veriyi seçeriz ya da arayıp Tamama basarız ve istediğimiz veriye göre tablomuz filtrelenmiş olur.

Bu basit bir filtreleme işlemini dahi gün içinde birçok kez yapıyor ve üzerinde gereksiz yere fazla zaman kaybediyoruz. Sürekli filtreyi aç oradan seçim yap ve Tamama bas, başka bir veri aradığımızda da yine aynı şekilde filtreyi aç oradan seç Tamama bas işlemini tekrarlıyoruz.

Oysa bu filtreleme işlemi için kullanacağımız boş bir hücremiz olsa ve oraya aradığımızı yazıp Entera bastığımızda ya da butonu tıkladığımızda hemen filtrelense çok daha kolay ve hızlı olmaz mıydı?

Bu sadece gün içinde yapacağınız tek bir işlem için size hız kazandırıyor olacak. Ancak bütün işlerinizi böyle hızlandırdığınızı düşünün.

 

HANGİ DURUMLARDA YAZDIĞINIZ KODU ÇALIŞTIRABİLİRSİNİZ?

Herhangi bir hücreyi;

  • Seçtiğinizde
  • Sağ tıkladığınızda
  • Çift tıkladığınızda
  • Hücreye veri girişi yaptığınızda
  • Sayfayı açtığınızda
  • Sayfadan çıktığınızda
  • Dosyayı açtığınızda
  • Dosyayı kapattığınızda
  • Bir butonu tıkladığınızda
  • Klavyeden herhangi bir tuşa bastığımızda

vb. gibi.. birçok farklı şekilde yazdığınız kodları çalıştırabilirsiniz.

 

Hadi şimdi canlı bir örnek üzerinde işlemi gerçekleştirelim.

Resimdeki gibi dosyamız var, o dosya üzerinde siz de denemeler yapabilir, sonrasında kendi dosyalarınızda pratik uygulamalar gerçekleştirebilirsiniz.

Dosyayı buradan indirin.

Bu dosyada H1 hücresine herhangi bir Marka ismini yazarsak, o markaya ait olan veriler filtrelensin istiyoruz. Biz hücreye QUARTZ yazdığımızda Marka alanındaki QUARTZ olanlar filtrelenecek, YELKEN yazdığımızda da YELKEN olanlar filtrelenecek. Dolayısıyla biz o hücreyi bir filtreleme kutucuğu olarak kullanacağız.

 

Birazdan eyleme geçeceğiz.

Öncesinde şunu bilmenizde fayda var.
Yukarıda, Hangi Durumlarda Yazdığınız Kodu Çalıştırabilirsiniz? altında belirttiğimiz çalıştırma yöntemlerine göre kodları yazıldığı alanlar vardır.

 

Bu alanlar;

  • Module – (Makro Kaydet ile ya da manuel oluşturulan kodlar burada yer alır.)
  • Sayfanın Kod Penceresi – (İlgili sayfanın kod çalıştırma olayları burada yer alır.)
  • Kitabın Genel Kod Penceresi – (Kitabının tamamını etkileyecek olaylar burada yer alır.)

Biz şu an için bir sayfadaki hücreye veri girişi yaptığımızda filtreleme işlemi yaptırmak istediğimiz için, Makro Kaydet ile elde ettiğimiz hazır kodları Sayfanın Kod Penceresine yapıştıracağız. Hücreye veri giriş yapıldığında da Change olayı tetiklenecek ve filtre işlemi uygulanacak.

Makro Kaydet yöntemini her işiniz için kullanabileceğinizi unutmayın.

İzlenecek yol her zaman şöyle olsun;

  • Makro Kaydete basın.
  • Olmasını istediğiniz işlemi manuel olarak yapın.
  • Kaydı Durdur

Kodlar arka plânda hazırlanmış olacak.

 

BU KODLARA NEREDEN NASIL ULAŞABİLİRSİNİZ?

Hayatta olduğu gibi, Excel’de de bir işi yapmanın birden fazla yolu vardır. Oluşan kodlara yine birkaç farkı yoldan ulaşabilirsiniz.

  1. Makro Kaydet dediğimiz noktadan Makroları Görüntüle diyerek

2. Alt + F8 tuşlarına basıp aşağıdaki pencereye kısa yoldan ulaşarak.

 

3. Alt + F11 tuşlarına basıp VBE Penceresine direkt olarak erişerek.

4. Sayfa sekmesi üzerinde sağ tıklayıp Kod Görüntüle diyerek.

 

Eveeet.. Yeterince bilgi edindikten sonra artık eyleme geçiyoruz.

Verdiğimiz dosyayı indirdiyseniz Makro Kaydete basalım, makromuza herhangi bir isim verelim, örneğin; Filtre .. şimdi Tamama basarak kaydı başlatalım.

Tablomuzdaki herhangi bir hücreyi seçelim ve Veri menüsünden Filtreyi seçelim.
Not: Filtrenin üzerine gelip biraz beklerseniz; varsa kısayol tuşunu size verecektir. O kısayol tuşu ile de filtreyi aktif edebilirsiniz.

 

Sonrasında Marka alanından tümünün seçeneğini kaldırıp YELKEN’i seçin ve Tamama basın.

Temel olarak yapmak istediğimiz filtreleme olayının kodlarını edinmek olduğu için, eylemi gerçekleştirdik ve işimiz bitti.

Şimdi Kaydır Durdura basıp kaydı durduruyoruz. Makroları Görüntüleyi tıklıyoruz.
Makro Listesi penceresi Filtre makrosu seçili olarak ekrana gelecektir.
Düzenle butonuna basarak, oluşan Module1 içerisindeki kodları görüntüleyebilirsiniz.

Oluşan kodlarımız bu resimdeki gibi olacaktır.
Tek tırnak ile başlayıp yeşil renkli görünen satırlar yorum satırlarıdır, kodları etkilemez, sadece açıklama içindir.
Not: Selection.AutoFilter satırını silebilirsiniz. Asıl işi hemen bir altındaki satır yapmakta.

 

Gördüğünüz gibi filtreleme işleminin kodlarını kolayca elde ettik.

Ufak bir bilgi daha verelim; yukarıdaki gibi Module içerisine yazılıp Sub ile başlayan kodları bir butona atayarak, butonu tıkladığınızda makroyu çalıştırabilirsiniz, isterseniz bu yolu deneyin.

Biz bu yazıda size daha hızlı bir yol olan, hücreye veri girişi yaptıkça hemen filtrelemeyi göstereceğiz, o yüzden yazıyı okumaya devam edelim.

Evet.. kodları elde ettik.
Geriye, kodlarda kriter olarak belirtilen “YELKEN” yerine, biz H1 hücresine ne yazdıysak onu filtrelemesi için kriteri dinamik yapmak ve hücreye veri girişi yapınca çalıştırmak kaldı.

 

Bunun için şöyle basit bir düzeltme yapacağız; filtrelemeyi yapan kod satırımız bu;
ActiveSheet.Range(“$A$1:$E$52″).AutoFilter Field:=3, Criteria1:=”YELKEN”

 

Koddaki “YELKEN” yerine aşağıdaki gibi hücre adresini yazarsanız, o hücreyi dinamik biçimde filtreleme kutusu olarak kullanabilirsiniz.
ActiveSheet.Range(“$A$1:$E$52”).AutoFilter Field:=3, Criteria1:=Range(“H1”).Value

Kriteri hücreden alacak şekilde dinamik hâle getirdik. Hadi artık bu kodu hücredeki veriye göre değişecek şekilde çalıştıralım.
Sayfadaki bir hücredeki veri değişince çalışmasını istediğimiz için bu kodu Sayfanın Kod Penceresinde Change olayında yazacağımızı daha önce belirtmiştik.

 

Peki şimdi ne yapmamız lâzım?

 

Sekmenin üzerine sağ tıklayıp Kod Görüntüle diyerek ilgili sayfanın kod penceresine ulaşın, ilk etapta görseldeki gibi olacaktır.
General alanından Worksheeti seçin.

Declarations alanında, kullanabileceğimiz sayfa olayları yüklenecektir, oradan Change olayını seçin.

İlgili olay pencereye eklenecektir.
O olayın içerisine, oluşturduğumuz makronun adını aşağıdaki gibi Call Filtre olarak yazalım.
Selection_Change olayı artık gereksiz olduğundan o olayı silebilirsiniz.

Sayfada herhangi bir hücrede veri girişi/değişikliği olduğunda artık Filtre makrosu çalışacaktır.
Aslında bu noktada işleyişte karşımızı bazı zorluklar çıkabilir, o da şudur; kodumuzu, belirli bir hücrede veri girişi olduğunda değil de, herhangi bir hücreye veri girişi olursa şeklinde bıraktık. H1 hücresi haricinde de bir hücrede değişiklik yaparsak yine filtreleme işlemini yapacaktır. Dolayısıyla sayfadaki her hareketimizde sürekli filtreleme uygulayacaktır.

Sadece H1 hücresinde bir değişiklik olduğunda çalış dememiz daha mantıklı olurdu.
Bunu da kodun daha stabil çalışması için son bir dokunuş olarak kabul edersek, ufak bir şart ilave ederek olayı tatlıya bağlayabiliriz.

O son dokunuş da bu şart olacak; If Target.Address(0, 0) = “H1” Then

Açıklaması: Eğer veri girişi yapılan hücrenin adresi H1 ise.. diyerek kodumuza son hâlini veriyoruz.

Sayfada sonucunu bu şekilde göreceksiniz. H1’e ne yazarsanız Marka alanından o ismi filtreleyecektir.

Ufak bir ipucu daha verelim; eğer hücreye yel* yazıp Entera basarsanız ya da mevcut kodun sonuna & “*” ibaresini eklerseniz, hücrede markanın tamamını yazmadan da sonucu filtreleyecektir. Örneğin; yel yazıp Entera basarsanız size yel ile başlayan tüm kayıtları listeleyecektir.

ActiveSheet.Range(“$A$1:$E$52”).AutoFilter Field:=3, Criteria1:=Range(“H1”).Value & “*”

 

Her şey bittikten sonra sıra dosyayı kaydetmeye gelirse, artık o dosyayı Makro İçerebilen Excel Çalışma Kitabı olarak farklı kaydetmelisiniz. (Farklı Kaydet kısa yolu; F12’dir.)

 

Tebrikler!  👍🏻

İlk kod yazma (makro oluşturma) tecrübesini edinmiş oldunuz.

Bu konular işinizi kolaylaştırmanın yanında, oldukça zevkli konulardır, öğrendikçe daha fazlasını isteyeceğinize eminiz.
Bu yazı, Excel’de sürekli yaptığınız işleri koda dökerek, işlerinizi daha hızlı yapabileceğiniz noktasında farkındalık uyandırmak içindi.

Dosyanın son hâline buradan erişebilirsiniz.

 

PEAKUP olarak, verdiğimiz Excel & VBA (Makro) Eğitim ve Danışmanlık Hizmetimiz ile sizi Excel’de çok daha iyi konumlara taşıyabileceğimizi unutmayın.

Bu yazıyı paylaşarak daha çok kişinin bilgi sahibi olmasını sağlayabilir, Excel Eğitimi alarak da Excel‘i daha etkin ve verimli kullanabilirsiniz.  👍🏻[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][mk_image src=”https://peakup.org/wp-content/uploads/2023/12/office_imza_son-1.gif” image_size=”full”][/vc_column][/vc_row]

Excel ile Web Sitelerinden Veri Çekin

[vc_row][vc_column][vc_column_text css=”.vc_custom_1573717048716{margin-bottom: 0px !important;}”]

Excel ile dilediğiniz web sitesinden veri çekebileceğinizi biliyor musunuz?

 

Excel‘in Veri menüsünden Web Sitelerine bağlanıp oradan veri alma özelliği var, fakat bu özellik maalesef tam olarak bize istediğimiz verileri sağlayamıyor. O yüzden istediğimiz veriyi farklı bir yolla elde etmek durumundayız. Nasıl mı? Tabii ki VBA‘nın yani makroların gücünü kullanarak.

Makro bilmiyor olabilirsiniz, bunu dert etmeyin. Yazacağımız kodların birçok satırı klişedir, olabildiğince basit bir anlatımla bu işin ne kadar kolay olduğunu anlatacağım.

Normal şartlarda, webten veri alma işlerinizi yapabilmeniz için, VBA (Makro) bilginiz olmalı, web sitelerinin HTML kaynaklarından veri alacağımız için temel de olsa HTML yapıya, temel Css bilgisine sahip olmanız gerekmektedir. Fakat hiçbir bilginiz olmasa da, klişe olan noktaları zaten belirteceğim, sonrasında nereden nasıl veri aldığımızı da Document Object Model (DOM) üzerinde göstereceğim.

Bu sizi teşvik etmek adına basit bir başlangıç olsun, geliştirme tarafı size kalsın. Bu yazıda şunu yapacağız; kendi sitemizdeki blog sayfamızda www.peakup.org/blog  yayınlanan postların başlıklarını ve tarihlerini çekelim, başlıklara da o postun linkini köprü olarak ekleyelim ki; tıkladığımızda o linke gidebilelim. Bu resimde nereleri alacağımızı belirtiyorum.

 

Hadi artık başlayalım.

 

Öncelikle Excel‘de herhangi bir sayfadayken ALT + F11 tuşlarına basarak VBE (Visual Basic Editör) penceresine gidelim. Pencerenin üst menülerinden Insert ve Module tıklayıp boş bir modül açalım, kodlarımızı bu boş pencereye yazacağız. Adım adım her bir kod satırının ne anlama geldiğini de size aktarıyor olacağım. Bu arada yazının sonunda kodların son hâlini de bulabilirsiniz.

İlk satırımızda makromuza bir isim veriyoruz. Makromuzun adı PEAKUP_BLOG olsun.
Sub PEAKUP_BLOG()
hemen altına kodlarda kullanacağımız değişkenlerimizi tanımlıyoruz.
Dim ie As Object, meta As Object, i As Integer, basla As Single
Kodların sonunda sayfaya ekleyeceğimiz butona her batığımızda makromuzu çalıştıracağız, yani postları yeniden çektireceğiz, yeni post varsa o da gelecek. O yüzden eski verileri temizlemek için bu satırı kullanıyoruz. A2:B100 hücrelerinde ne varsa temizle diyoruz.
Range("A2:B100").Clear
sonrasında görev yöneticisinde açık olan tüm Internet Explorer pencerelerini kapatıyoruz, açık kalmaları hem uygulamanın şişmesine hem de bazı hatalar almamıza sebep olacağı için bu işlemi yapıyoruz.
Shell "taskkill /f /im iexplore.exe"
sonrasında tüm ie pencerelerinin kapandığından emin olmak için 1 sn. bekletme kodlarını ekliyoruz.
basla = Timer: While (Timer - basla) < 1: Wend
Şimdi Internet Explorer‘ı oluşturuyoruz.
Set ie = CreateObject("InternetExplorer.Application")
oluşturulan uygulamanın ekranda görünmemesi ama arka plânda yine çalışmaya devam etmesi için bu satırı ilave ediyoruz.
ie.Visible = False
sonrasında blog sayfamıza yönlendiriyoruz.
ie.navigate "https://peakup.org/blog/"
biliyorsunuz bir web adresine gittiğinizde o sayfanın tam olarak yüklenmesi biraz zaman alıyor. Bu zamanı aşağıdaki kodlarla kontrol ettiriyoruz ve sayfa tamamen yüklenene kadar dön/bekle diyoruz.
While ie.Busy Or ie.ReadyState < 4: DoEvents: Wend
şu ana kadar, şunları yaptık;

  • Makromuza isim verdik
  • Değişkenlerimizi tanımladık
  • Açık olan tüm IE tarayıcılarını kapattık ve ilave 1 sn. de bekle dedik
  • IE’yi oluşturduk ve gizledik
  • Blog sayfamıza yönlendirdik
  • Sayfanın meşguliyeti bitene ve tamamen yüklenene kadar bekle dedik

artık sayfa tam orak önümüzde olduğuna göre, HTML yapısından faydalanarak istediğimiz verilerin nerede olduğunu tespit edip, bütün postların başlıklarını, başlıkların linklerini ve tarihlerini hızlıca aldırabiliriz.

Blog sayfamız sürekli güncel ve aktif olduğundan dolayı birden fazla postumuz mevcut. Bütün postlara tek tek bakmamız ve başlıklarını almamız gerekiyor. Bunu VBA‘nın olmazsa olmazı Döngüler’i kullanarak yapacağız.  For veya For Each döngüsünden birini burada kullanabiliriz.

Almak istediğimiz başlığa ait, id, name, class, tag gibi özellikleri kullanarak tespit etmemiz gerekiyor. Nasıl yapacağımızı gif resimde görüyorsunuz. Alacağımız yer neresi ise, üzerine gelip sağ click yaparak İncele diyoruz.

Baktığınızda bütün verilerin  <div class=”mk-blog-meta”> altında tutulduğunu göreceksiniz.  HTML yapısı ağaç yapısı şeklindedir.

For döngüsü ile bütün bu mk-blog-meta class ismine sahip olan postları kontrol ettirelim;
Genellikle alacağımız ilk elemanın değeri sıfır olur ve aşağıdaki gibi sıfırdan başlayıp kaç tane ise -1 sayısı kadar dön/bak deriz.
For i = 0 To ie.document.getelementsbyclassname("mk-blog-meta").Length - 1
Biz bu noktada hem başlığı hem de tarihi almak istediğimiz için aynı satırları tekrar tekrar yazmak yerine bir kere set ediyoruz adına da meta diyoruz. Artık meta yazsını gördüğümüzde her bir post aklımıza gelsin. Aşağıdaki satırda parantez içindeki ( i ) ilk posttan  başlayıp kaç tane post varsa hepsinde dönmek için 0-1-2-3-4 … şeklinde ilerlememizi sağlayacak.
Set meta = ie.document.getelementsbyclassname("mk-blog-meta")(i)
Şimdi başlıklarımızı alabiliriz. Bu satırda diyoruz ki, her bir postun altındaki class adı the-title olan metni  A2 hücresinden itibaren alt alta yaz.
Range("A" & i + 2) = meta.getelementsbyclassname("the-title")(0).innertext
Başlıkları aldığı andan itibaren de hemen post linkine köprü yapalım. Bunun için de bu kodu kullanacağız..
Kodda der ki; A2‘ye köprü kur, adres olarak olarak postun altındaki a tagında bulunan linki kullan ve görünen yazı olarak da yine A2’deki metni yaz.
ActiveSheet.Hyperlinks.Add Anchor:=Range("A" & i + 2), _
Address:=meta.getelementsbytagname("a")(0).href, _
TextToDisplay:=Range("A" & i + 2).Value

Evet başlığımızı alıp köprümüzü kurduk. Şimdi tarih kısmını da B sütununa alalım. Aşağıdaki satırda, her bir postun altındaki mk-blog-meta-wrapper class’ındaki metni alıyoruz.
Cells(i + 2, "B") = meta.getelementsbyclassname("mk-blog-meta-wrapper")(0).innertext
Next i
satırı ile For döngüsünden çıkıp sonlandırıyoruz.
ie.Quit
satırı ile IE tarayıcıyı kapatıyoruz.
MsgBox "Islem Tamamlandi.", vbInformation, "PEAKUP BLOG"
İşimiz bitince İşlem Tamamlandı mesajı verdiriyoruz.
End Sub
satırı ile de makromuzu sonlandırıyoruz.

 

Her bir kod satırının ne anlama geldiğini yazdıktan sonra kodlarımızı bir toparlayıp görelim.


Sub PEAKUP_BLOG()
Dim ie As Object, meta As Object, i As Integer, basla As Single
Range("A2:B100").Clear
Shell "taskkill /f /im iexplore.exe"
basla = Timer: While (Timer - basla) < 1: Wend
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = False
ie.navigate "https://peakup.org/blog/"
While ie.Busy Or ie.ReadyState < 4: DoEvents: Wend
For i = 0 To ie.document.getelementsbyclassname("mk-blog-meta").Length - 1
Set meta = ie.document.getelementsbyclassname("mk-blog-meta")(i)
Range("A" & i + 2) = meta.getelementsbyclassname("the-title")(0).innertext
ActiveSheet.Hyperlinks.Add Anchor:=Range("A" & i + 2), _
Address:=meta.getelementsbytagname("a")(0).href, _
TextToDisplay:=Range("A" & i + 2).Value
Cells(i + 2, "B") = meta.getelementsbyclassname("mk-blog-meta-wrapper")(0).innertext
Next i
ie.Quit
MsgBox "Islem Tamamlandi.", vbInformation, "PEAKUP BLOG"
End Sub

Artık oluşturduğumuz kodları çalıştırmak kaldı. Onun için Ekle menüsündeki Şekillerden butona benzer bir şekil ekleyin ve sağ tıklayıp Makro Ata deyin, açılan pencereden PEAKUP_BLOG makrosunu seçip Tamama basın.

Oluşturduğumuz bu butona her bastığınızda eski verileri temizleyip yeni post varsa onlarla beraber yeniden çekecektir.

Sitemizdeki postları takipte kalmanız umuduyla, kodların da içinde olduğu Excel dosyasını resme tıklayarak indirebilirsiniz.

Daha fazla bilgi için Excel ile Webten Veri Alma Eğitim talebinde bulunabilirsiniz.
Eğitim sonrasında her türlü, haber, finans, spor, e-ticaret vb. sitelerden veri çekebilir hâle gelebilirsiniz.

Faydalı olması dileğiyle.. [/vc_column_text][/vc_column][/vc_row]

Makro ile Çok Fazla Sayfayı Hızlıca Silebilirsiniz!

Merhaba,

Excel belgelerinde eğer çok fazla sayfa var ise ve bu sayfaları silmek bir noktadan sonra zorlaşıyor ise bu makromuz, bu iş için tam biçilmiş kaftan…

Bu makalemizde bir veya daha çok sayfayı hızlıca silebileceğimiz bir makro uygulamasını form ara yüzü kullanarak nasıl silebileceğimizi göstereceğim. Uygulamanın çalışan son hali aşağıdaki gibidir. Silmek istediğimiz sayfaları seçerek, tarayarak, arama yaparak veya tümünü seç gibi işlemleri yaparak seçebilir ve silebiliriz. Çoklu seçim için Ctrl tuşuna basarak seçim yapmak oldukça kolay ve pratiktir.

Uygulamamız için ilk etapta yukarda görülen form’u tasarlıyoruz.

Daha sonra Tümünü Seç, Tümünü Kaldır ve Sil düğmeleri için kodlar yazıyoruz. Form arayüzünü açmak için Crtl+j kısayolu ile formu çağırabiliriz.

Form yüklendiğinde yani aktif olduğunda o Excel belgesinde normalde kaç tane sayfa var ise otomatik olarak listeye eklenmesini istiyoruz.

Bunun için aşağıdaki kod bloğunu kullanırız:

Private Sub UserForm_Activate()

‘Form önyükleme

For Each k In Sheets

ListBox1.AddItem k.Name

Next k

End Sub

Form açıldıktan sonra istediğimiz sayfaları tek tek seçerek, taratarak veya arama yaparak seçip Sil düğmesine tıkladığımızda otomatik olarak silebiliriz.

Tümünü seçmek için aşağıdaki kodu kullanırız. Bu kod çalıştığında form içinde kaç tane sayfa var ise hepsinin onay düğmesi seçili hale gelecektir.

Private Sub CommandButton2_Click()

‘Tümünü seç

For i = 0 To ListBox1.ListCount – 1

ListBox1.Selected(i) = True

Next i

End Sub

Seçili olan tüm sayfalarda Tümünü Kaldır düğmesine tıkladığımızda ne kadar seçili sayfa var ise hepsininde seçimleri iptal olur bunun için aşağıdaki kod bloğunu kullanırız.

Private Sub CommandButton3_Click()

‘Tümünü Kaldır

For i = 0 To ListBox1.ListCount – 1

ListBox1.Selected(i) = False

Next i

End Sub

Eğer arama kutucuğunu kullanarak silme yapmak istersek istediğimiz sayfa adını yazarak listbox içinden arama işlemini yaptırıp seçili olan sayfa veya sayfaları silebiliriz. Bu işlem için aşağıdaki kod bloğunu kullanırız.

Private Sub TextBox1_Change()

‘Arama

Dim i As Integer

Dim j As Integer

With ListBox1

.MultiSelect = fmMultiSelectSingle

.ListIndex = -1

.MultiSelect = fmMultiSelectMulti

For i = 0 To .ListCount – 1

For j = 0 To .ColumnCount – 1

If LCase(InStr(1, .Column(j, i), TextBox1.Text, vbTextCompare)) Then

.ListIndex = i

.Selected(i) = True

End If

Next j

Next i

End With

End Sub

Ve son olarak silmek istediğimiz sayfaları seçtikten sonra Sil düğmesine tıklayarak seçili sayfaları kolaylıkla silebiliriz. Bunun için Sil düğmesinin çift tıkladıktan sonra açılan sayfaya aşağıdaki kodu yazmamız yeterlidir. Böylece ne kadar seçili sayfa var ise silinecektir.

Private Sub CommandButton1_Click()

‘Sayfa veya Sayfaları Silme

On Error Resume Next

Application.DisplayAlerts = False

For k = ListBox1.ListCount – 1 To 0 Step -1

If ListBox1.Selected(k) Then

Worksheets(ListBox1.List(k, 0)).Delete

ListBox1.RemoveItem (k)

End If

Next k

Application.DisplayAlerts = False

End Sub

Yukardaki makro kodları ile işlemimizi çok kolaylaştıracağız. Tabi bu formu çağırmak içinde bir kısayol atamamız gerekir. Diğer türlü sayfa içinden bir düğme koyup onu tıklayarak çağırmak çok mantıklı olmayacaktır. Ama kendimize özel bir makro sekmesi yapıp bu makroyu oraya bir ikon aracılığı ile yerleştirip kullanabiliriz. Tüm bunların yanı sıra kısayol işlemi oldukça basit ve daha kullanışlıdır. Formları çağırmak için modül ekleyim ilgili formu çağırmamız gerekmektedir. Bunun için makromuza bir modül ekliyor ve içerisine aşağıdaki kodu yazıyoruz.

Kodda Forma verdiğimiz ismi Show ederek görüntüleyebiliyoruz.

Aynı şekilde Hide ederek de gizleyebiliriz. Ama bunun için formdaki varsayılan çıkış düğmesinden kapatmayı daha uygun gördüm.

Bir başka makro makalesinde görüşmek üzere,

Hoşçakalın.