Kurulum İle Bir Makroyu,Buton Olarak Excel'e Nasıl Eklerim ?(Component Ekleme)

Katılım
5 Mart 2008
Mesajlar
10
Excel Vers. ve Dili
Excel 2003
Öncellikle herkese selamlar.
Yapmak istediğim olayı size kısaca anlatayım.

Bir tane Excel'den SMS yazılımı hazırlamak istiyorum.Excel'de çeşitli hücrelerde bulunan numara ve mesaj metinlerini göndermeye yarayacak bu program.Öncellikle ben Delphi'de kod yazıyorum ve Excel + VB bilgim profesyonel seviyede değil :) Ama uğraşarak Excel + VB'de kod sorununu aşabilirim.

Hemen asıl soruma geleyim.Diyelim ki kod olayını çözdüm ve bütün işleyişi bir butonla hallettim.Örneğin excel sayfamızın A1 hücresinde 532 123 45 67 diye bir numara,B1 hücresinde ise "merhaba" yazan mesaj metni var.Ben butona basıyorum ve bir form geliyor.Ordan iletim tarihi gibi ayarları yapıyorum.Ayarlar bittikten sonra formdaki gönder butonuna basıyorum mesaj gidiyor.

İşte benim sorum burda geliyor.Ben herhangi bir excel dosyasından veya herhangi bir bilgisayardaki excel'den mesaj gönderimini yapmak için, excel'e buton nasıl eklerim ??? Özetle kullanıcı bir kurulum dosyası indircek,kurulum yapıcak,kurulumu bittikten sonra yazdığımız program Excel'e buton olarak eklenecek.

Kısacası ben aşağıdaki programın benzerini yapmak istiyorum.

A Office Excel SMS
http://www.inndir.com/program.php?id=36688

Programı kurduysanız resimdeki gibi bir buton geliyo excel'e.


Umarım şimdi anlatabildim durumu.Yardımlarınız için şimdiden sağolun.
 
Katılım
5 Mart 2008
Mesajlar
10
Excel Vers. ve Dili
Excel 2003
Arkadaşlar ne yazıkki ben bu durumu hala çözemedim.
Birisi yardımcı olursa çok minnettar kalıcam.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Resimden anlaşıldığı kadarıyla, Excel'e yeni bir toolbar ve tollbara'a bir buton ilave edilecek.

Peki, bu butona basıldığında, sizin Delphi'de yazmış olduğunuz program mı çalışacak, yoksa butona basıldığı zaman çıkan form, Excel'de mi hazırlanacak?
 
Katılım
5 Mart 2008
Mesajlar
10
Excel Vers. ve Dili
Excel 2003
Resimden anlaşıldığı kadarıyla, Excel'e yeni bir toolbar ve tollbara'a bir buton ilave edilecek.

Peki, bu butona basıldığında, sizin Delphi'de yazmış olduğunuz program mı çalışacak, yoksa butona basıldığı zaman çıkan form, Excel'de mi hazırlanacak?
Ferhat hocam ikiside olabilir.Yani benim için öncelik,yapılacak bir kurulumla sizin de dediğiniz gibi bir toolbar ve buton eklenmesi.

Benim ilk mesajımda örnek gösterdiğim "A Office Excel SMS" programını indirip-kurduğunuzda, "C:\Program Files\ExcelSMS" altına "ExcelSMS.ocx" dosyası atılıyor.Bu dosyayı silip-değiştirmek isteyince Excel'de buton gözükmüyor.Böylece excel'e eklenen o butonun "ExcelSMS.ocx" adlı dosya ile alakalı olduğunu çözdüm.

Kısacası ben bir "ocx" veya "exe" dosyası hazırlayacağım ve excel'e ekleyeceğimiz o butona basılınca,hazırladığım dosya çalışacak.İşte burda bana yardımcı olursanız çok sevinirim.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdaki gibi bir yapı olabilir ama Delphi'ye nasıl entegre edersiniz bilemem .

Bu kodlar, sırasıyla, Yeni bir Excel uygulaması yaratır, Bu uygulama içinde yeni bir kitap açar. Kitaba yeni bir modul ekler, Yeni bir toolbar ve tollbarın üzerinde bir düğme yaratır, düğmeye makro atar.

NOT-1 : Excel'de "Visul Basic Erişimine güven" seçeneği işaretlenmiş olmalıdır. (veya bunu reg'den kodlarla da işaretleyebiliriz)

NOT-2 : xla (Excel eklentisi) olarak da eklenen kitap düzenlenebilir.

NOT-3 : Hata kontrolleri kısmen ihmal edilmiştir.

Kod:
Sub SMS_ToolBar_Yarat()
Dim TBar As CommandBar
Dim TBarDugme As CommandBarButton
Dim appXls As Application
Dim wb As Workbook
Dim vbModul As Object
Dim x As Integer
Set appXls = CreateObject("Excel.Application")
appXls.Application.Visible = True
Set wb = appXls.Workbooks.Add
Set vbModul = wb.VBProject.VBComponents.Add(1)
vbModul.Name = "SMS"
With vbModul.CodeModule
     x = .CountOfLines
     .InsertLines x + 1, "Public Sub SMS_Gonder()"
     .InsertLines x + 2, "MsgBox ""Bu kısımda kendi programınızı çağıracak kodlar gerekli!"""
     .InsertLines x + 4, "End Sub"
End With
On Error Resume Next
appXls.CommandBars("SMS Gönderim").Delete
Set TBar = appXls.CommandBars.Add(Name:="SMS Gönderim", Position:=msoBarFloating, temporary:=True)
With TBar
    Set TBarDugme = .Controls.Add(Type:=msoControlButton)
    With TBarDugme
        .Style = msoButtonCaption
        .Caption = "Webteyiz Office SMS"
        .OnAction = "SMS_Gonder"
    End With
    .Position = msoBarTop
    .Visible = True
End With
Set TBar = Nothing
Set TBarDugme = Nothing
Set vbModul = Nothing
Set wb = Nothing
Set appXls = Nothing
End Sub
 
Son düzenleme:
Katılım
5 Mart 2008
Mesajlar
10
Excel Vers. ve Dili
Excel 2003
Ferhat hocam yardımın için çok teşekkür ederim.
Vermiş olduğun kodları VB Düzenleyicisinde bir modüle yapıştırdım.
Ardından excel'e bir buton koydum ve kod bölümünde modülü çalıştır dedim.
Butona basılınca dediğin gibi yeni bir excel dosyası açılıyor ve toolbar geliyor.

İşte ben bu toolbarı nasıl kalıcı yapabilirim :)
xla ile ilgili bir bilgim yok.xla olarak kaydet deyince otomatik olarak dosyayı "C:\Documents and Settings\barkar\Application Data\Microsoft\AddIns" klasörüne kaydediyor.Son kez bu konuda yardımcı olursanız sevinirim.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Yani siz, Excel her açıldığında, bu araç çubuğunun da yüklenmesini mi istiyorsunuz?
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Baştan söyleseydiniz, bunun kodlaması daha kolay olurdu. Standart bir Excel Add-in'i (xla) tasarlanıp, "Kullanılabilir Eklentilere" eklenecek.

Ama bu tasarlayacağımız "xla"yı, programınızla birlikte taşımanız gerekir.

Bakalım...
 
Katılım
5 Mart 2008
Mesajlar
10
Excel Vers. ve Dili
Excel 2003
Baştan söyleseydiniz, bunun kodlaması daha kolay olurdu. Standart bir Excel Add-in'i (xla) tasarlanıp, "Kullanılabilir Eklentilere" eklenecek.

Ama bu tasarlayacağımız "xla"yı, programınızla birlikte taşımanız gerekir.

Bakalım...
Biraz daha bilgi verirseniz sevinirim hocam.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Yani sizin daha önce kaydetmeye çalıştığınız "C:\Documents and Settings\barkar\Application Data\Microsoft\AddIns" klasörüne bir add-in atılacak. Excel her başlatıldığında, bu xla devreye girecek ve toolbar ve toolbar üzerindeki butonu oluşturacak. Butonun çalıştıracağı kodları da; xla'nın içine yerleştirebiliriz.

Ama ne kadar ticari olur bunu bilemem ... (eğer ticari bir program geliştiriyorsanız tabi)

NOT : Tabi böyle bir yöntem izlersek, yukarıda verdiğim kodların revize edilmesi gerekecek
 
Katılım
5 Mart 2008
Mesajlar
10
Excel Vers. ve Dili
Excel 2003
Yani sizin daha önce kaydetmeye çalıştığınız "C:\Documents and Settings\barkar\Application Data\Microsoft\AddIns" klasörüne bir add-in atılacak. Excel her başlatıldığında, bu xla devreye girecek ve toolbar ve toolbar üzerindeki butonu oluşturacak. Butonun çalıştıracağı kodları da; xla'nın içine yerleştirebiliriz.

Ama ne kadar ticari olur bunu bilemem ... (eğer ticari bir program geliştiriyorsanız tabi)

NOT : Tabi böyle bir yöntem izlersek, yukarıda verdiğim kodların revize edilmesi gerekecek
Bizim sms göndermek için bir programımız var hocam.
Eğer yardımlarınızla bu excel'den mesaj gönderme eklentisini çözersem,programın yeni versiyonuna koymayı düşünüyoruz.

Örneğin biz bir kurulum dosyası hazırlayacağız ve kullanıcı bu dosyayı kurunca excel'e eklenti olarak toolbar ve butonumuz gelecek.Bunun sayesinde kullanıcı excel'den kolayca mesaj atabilecek.

Sizide uğraştırıyorum,hakkınızı helal edin :)
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdaki xla dosyayı, (kendinize göre düzenledikten sonra), kurulum esnasında, her bilgisayardaki Addins klasörüne atınız.

NOT : (Gerekirse) Menüden, Araçlar->Eklentiler'den bu isimdeki eklentiyi işaretleyiniz.

İçinde şunlar yazılı ...

Kod:
Public Sub auto_open()
Dim TBar As CommandBar
Dim TBarDugme As CommandBarButton
Dim x As Integer
On Error Resume Next
Application.CommandBars("SMS Gönderim").Delete
Set TBar = Application.CommandBars.Add(Name:="SMS Gönderim", Position:=msoBarFloating, temporary:=True)
With TBar
      Set TBarDugme = .Controls.Add(Type:=msoControlButton)
      With TBarDugme
            .Style = msoButtonCaption
            .Caption = "Webteyiz Office SMS"
            .OnAction = "SMS_Gonder"
      End With
     .Position = msoBarTop
     .Visible = True
End With
Set TBar = Nothing
Set TBarDugme = Nothing
End Sub
Public Sub SMS_Gonder()
[COLOR=green]'Bu kısımda, çalıştıracağınız programa gönderme yapabilirsiniz."[/COLOR]
Shell ("CALC.exe")
End Sub
 
Katılım
5 Mart 2008
Mesajlar
10
Excel Vers. ve Dili
Excel 2003
Aşağıdaki xla dosyayı, (kendinize göre düzenledikten sonra), kurulum esnasında, her bilgisayardaki Addins klasörüne atınız.

NOT : (Gerekirse) Menüden, Araçlar->Eklentiler'den bu isimdeki eklentiyi işaretleyiniz.

İçinde şunlar yazılı ...

Kod:
Public Sub auto_open()
Dim TBar As CommandBar
Dim TBarDugme As CommandBarButton
Dim x As Integer
On Error Resume Next
Application.CommandBars("SMS Gönderim").Delete
Set TBar = Application.CommandBars.Add(Name:="SMS Gönderim", Position:=msoBarFloating, temporary:=True)
With TBar
      Set TBarDugme = .Controls.Add(Type:=msoControlButton)
      With TBarDugme
            .Style = msoButtonCaption
            .Caption = "Webteyiz Office SMS"
            .OnAction = "SMS_Gonder"
      End With
     .Position = msoBarTop
     .Visible = True
End With
Set TBar = Nothing
Set TBarDugme = Nothing
End Sub
Public Sub SMS_Gonder()
[COLOR=green]'Bu kısımda, çalıştıracağınız programa gönderme yapabilirsiniz."[/COLOR]
Shell ("CALC.exe")
End Sub
Hocam çok teşekkür ederim.
Dediğiniz gibi oldu.Araçlar'dan Eklentiler'e girip,onay verdiğimde Her Excel açılışında buton eklenmiş oldu :) Onay vermeden otomatik olarak eklenmesini çözücem kısmet olursa.Yardımlarınız ve ilginiz için tekrar tekrar teşekkür ederim. :)
 
Katılım
5 Mart 2008
Mesajlar
10
Excel Vers. ve Dili
Excel 2003
Ferhat hocam sağolun halletim gibi :)
xla dosyamızı C:\Windows\System32 klasörüne attım.

Ondan sonra VB 6'da ufak bir exe derledim.Bu exe regedit'te bir anahtar yaratıyor ve excel'e buton otomatik ekleniyor.Kodları ekleyeyim belki ilerde birilerine lazım olur.

Kod:
Private Sub Form_Load()
Form1.Hide

Dim objShell, RegLocate, myVersion, objExcel
Set objExcel = CreateObject("Excel.Application")
  
  myVersion = objExcel.Version
  Set objShell = CreateObject("WScript.Shell")
  
  On Error Resume Next
  
  RegLocate = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & myVersion & "\Excel\Options\OPEN"
  objShell.RegWrite RegLocate, "C:\Windows\System32\TeknOfficeSMS.xla", "REG_SZ"

objExcel.Quit
WScript.Quit

Unload Form1
End Sub
Herşey için teşekkürler.
 
Üst