Arcade Türü Oyun Programlamayıve Bilgisayar Bilimleri Öğrenin
Excel Makro Gösterimi
5.1 Giriş
İş dünyasında bir çalışma günü sık sık birçok tekrar eden işten oluşur. Bu sıkıcıdır, hata yapılması olasıdır ve pahalıdır. Bilgisayarlar bunları daha hızlı ve ucuz yapmakta daha üstün gelmektedir ve ayrıca işleri nasıl otomatikleştireceğini ortaya çıkarmak eğlenceli olabilmektedir. Okulda programlamayı öğrenen bir öğrenci, buna rağmen yıllar içerisinde üreticiliğini kaybederek tekrar eden görevleri programlamaya uyarlamakta başarısız olmaktadır.
Bu kitapta ilgilenilen dilin Python olmasına rağmen, burada öğrenilen fikirler herhangi bir dile uygulanabilir. Bu bölüm, Microsoft Excel ve Visual Basic programlama dili kullanılarak nasıl kullanışlı programlar yapılabileceğini gösterecektir.
Bu örnek aslında yazarın kendi tecrübesinden ortaya çıkmıştır. Bir yatırım firmasında kendi işini otomatikleştiren bir program oluşturmuştur. Bu farkedilen üreticilik onun firmada sorumluluklarında hızlı bir ilerleme kaydetmesine izin vermiştir.
Bu video eğitimin notları alttaki videoda yer almaktadır:
5.2 Eğitim
- İş hayatımıza bir amele olarak başlıyoruz. İşte işimiz:
- İnternetten veri almak zorundayız.
- Verinin grafiğini almak zorundayız.
- Bu grafiklerden farklı veri kümeleri için her gün 10 tane oluşturmak zorunda kalacağız.
- Şimdi, buna ihtiyaç duyabilecek herhangi bir işe bakalım. Bu veri her şey olabilir. Bu örnekte, borsa verilerini kullanacağız.
- Harika, bizim işimiz sıkıcı. Hata vermeye meyilli. Ayrıca çok uzun bir iş. Özellikle de
süslü görünen grafikler yapmak istiyorsanız.
- Ama bekleyin, biz Profesör Craven'in programlama dersini alıyoruz. Hadi bunu deneyelim.
- Bir Excel programı oluşturalım ve bu program internetten aldığı verilerle yeni borsa grafikleri oluştursun
- Bizim programımızın ne yapmasını istediğimizin planı:
- Yeni bir dosya aç
- İnternetten veri al
- Grafik oluştur
- Excel programlamanın aşamaları:
- Excel'i aç
- İlk hücreye “This spreadsheet has our program” yaz.
- Bunu “chart maker” olarak kaydet. Bunu bir Makro çalışma kitabı olarak kaydettiğinden emin ol!

- “view” sekmesine bas
- Makrolara tıkla, ve sonra “record macro”yu seç

- Makroya CreateChart ismini ver
- Dosya sekmesi...Yeni...Boş Kitap

- Veri sekmesi...Wen'den (Pencereyi yeniden boyutlandırmayın, Excel'de bir bug gösterir.)
- Yahoo'yu kullanın: http://finance.yahoo.com/q/hp?s=wfc
- İlgilendiğimiz tabloyu seçin ve import edin

- Grafiğini çizmek istediğimiz hücreleri seç (ctrl-shift-sol, sonra ctrl-shift aşağı, sonra bir yukarı)
- Ekle sekmesi...Çizgi Grafik

- Yeni sayfaya taşı

- Grafiğe sağ tıkla, "veri seç"

- Sadece grafik kapanmaya ayarlı

- Düzen menüsünü seçin
- Eksen etiketlerini belirleyin
- Lejandı silin
- Başlığı değiştirin
- Kaydediciyi durdurun (sekme, makro butonları, kaydı durdur)

- Yeni oluşturduğumuz tabloya yakın. (Grafik oluşturucu değil)
- Şunu deneyin:
- Grafik yapıcı makroyu çalıştır.
- Güzel, fakat bu bizim çalıştığımız şeyle bu birlikte ne yapmalı?
- Sorduğunuza sevinin. Makroyu oynatmak yerine, düzenlemeye basın.
- İlk satıra dikkat edin. Sub kelimesi subroutine(alt program)'in kısaltmasıdır. Bu da fonksiyon, metot için başka bir isimdir.
- Bakın, Workbooks.Add çalışma kitabına eklenecek bir fonksiyondur. Parametrelere bakın! Boolean'lar! Nesneler!
- Onaylayıcıyı(ticker) değiştirirsek ne olur?
- Güzel! Peki ya ticker'ı temsil eden bir değişkenimiz olsaydı?
- Tamam, sonuç olarak peki ya verdiğimiz adresi bir fonksiyona aktarsaydık?

- Daha sonra bütün bir onaylayıcı sembol yığını ile yeni bir fonksiyon çağıran bir fonksiyon oluşturduk.
Sub CreateCharts() CreateChart ("WMT") CreateChart ("INTC") CreateChart ("WFC") CreateChart ("BBY") CreateChart ("FDX") End Sub
5.3 Kodun Listelenmesi
Sub CreateChart()
'
' CreateChart Macro
'
'
Workbooks.Add
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://finance.yahoo.com/q/hp?s=wfc", Destination:=Range("$A$1"))
.Name = "hp?s=wfc"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "16"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$G$69")
ActiveChart.Location Where:=xlLocationAsNewSheet
ActiveChart.ChartArea.Select
ActiveChart.Legend.Select
Selection.Delete
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(5).Select
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.ChartArea.Select
ActiveChart.ChartTitle.Select
ActiveChart.ChartTitle.Text = "WFC"
Selection.Format.TextFrame2.TextRange.Characters.Text = "WFC"
With Selection.Format.TextFrame2.TextRange.Characters(1, 3).ParagraphFormat
.TextDirection = msoTextDirectionLeftToRight
.Alignment = msoAlignCenter
End With
With Selection.Format.TextFrame2.TextRange.Characters(1, 3).Font
.BaselineOffset = 0
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "+mn-ea"
.Fill.Visible = msoTrue
.Fill.ForeColor.RGB = RGB(0, 0, 0)
.Fill.Transparency = 0
.Fill.Solid
.Size = 18
.Italic = msoFalse
.Kerning = 12
.Name = "+mn-lt"
.UnderlineStyle = msoNoUnderline
.Strike = msoNoStrike
End With
End Sub
Sub CreateChart(ticker)
'
' CreateChart Macro
'
'
Workbooks.Add
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://finance.yahoo.com/q/hp?s=" + ticker, Destination:=Range("$A$1"))
.Name = "hp?s=wfc"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "16"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$G$69")
ActiveChart.Location Where:=xlLocationAsNewSheet
ActiveChart.ChartArea.Select
ActiveChart.Legend.Select
Selection.Delete
ActiveChart.ChartArea.Select
ActiveChart.SeriesCollection(1).Select
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.SeriesCollection(1).Delete
ActiveChart.ChartArea.Select
ActiveChart.ChartTitle.Select
ActiveChart.ChartTitle.Text = ticker
Selection.Format.TextFrame2.TextRange.Characters.Text = ticker
With Selection.Format.TextFrame2.TextRange.Characters(1, 3).ParagraphFormat
.TextDirection = msoTextDirectionLeftToRight
.Alignment = msoAlignCenter
End With
With Selection.Format.TextFrame2.TextRange.Characters(1, 3).Font
.BaselineOffset = 0
.Bold = msoTrue
.NameComplexScript = "+mn-cs"
.NameFarEast = "+mn-ea"
.Fill.Visible = msoTrue
.Fill.ForeColor.RGB = RGB(0, 0, 0)
.Fill.Transparency = 0
.Fill.Solid
.Size = 18
.Italic = msoFalse
.Kerning = 12
.Name = "+mn-lt"
.UnderlineStyle = msoNoUnderline
.Strike = msoNoStrike
End With
End Sub
Sub CreateCharts()
CreateChart ("WMT")
CreateChart ("INTC")
CreateChart ("WFC")
CreateChart ("BBY")
CreateChart ("FDX")
End Sub
5.4 Tekrar
Çoktan seçmeli test için buraya tıklayın.
English version by Paul Vincent Craven
Spanish version by Antonio Rodríguez Verdugo
Russian version by Vladimir Slav
Turkish version by Güray Yildirim
Portuguese version by Armando Marques Sobrinho and Tati Carvalho
Dutch version by Frank Waegeman
Hungarian version by Nagy Attila
Finnish version by Jouko Järvenpää
French version by Franco Rossi
Korean version by Kim Zeung-Il
Chinese version by Kai Lin
