Excel ile Başka Bir Programı Entegre Kullanmak

Katılım
1 Ocak 2010
Mesajlar
87
Excel Vers. ve Dili
Türkçe 2007
Merhaba Arkadaşlar;

Excel deki verileri kullanarak vba makro ile başka bir programı entegre kullanmamız mümkün mü? Ekteki dosyada detaylı ve resimli olarak anlattım, inceleyerek daha net anlaşılabilir.

Yardımlarınız için şimdiden teşekkür ederim.
 

Ekli dosyalar

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
bildiğim kadarı ile bir ofis uygulamasından başka bir programı kontrol edebilmek için vbe'de o program ile ilişki kurmanız gerekir. çoğunlukla o programlar yüklenirken kütüphaneleri de yüklenir. vbe'de tools references'dan bakın programınızın ismi geçiyor mu? geçiyorsa işaretleyin. geçmiyorsa temin edin. progmı hazırlayandan bu konuda destek almak doğru bir yaklaşım olacaktır.
 
Katılım
1 Ocak 2010
Mesajlar
87
Excel Vers. ve Dili
Türkçe 2007
bildiğim kadarı ile bir ofis uygulamasından başka bir programı kontrol edebilmek için vbe'de o program ile ilişki kurmanız gerekir. çoğunlukla o programlar yüklenirken kütüphaneleri de yüklenir. vbe'de tools references'dan bakın programınızın ismi geçiyor mu? geçiyorsa işaretleyin. geçmiyorsa temin edin. progmı hazırlayandan bu konuda destek almak doğru bir yaklaşım olacaktır.
Öncelikle ilginiz için çok teşekkür ederim. Siz değerli insanlar sayesinde biz de bir şeyler öğrenmeye çabalıyoruz ve işlerimizi kolaylaştırıyoruz. İnanın hakkınız ödenmez.

Program yurtdışında yazılıyor ve program yapımcıları çok yoğun oldukları için programa istediğimiz çok basit şeyleri bile ekleyemiyorlar. Çok ağır bir program ve çok kapsamlı bir database olduğundan fazla manüpile edilemiyor sanırım.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
rica ederim.

aslında shell comutu ve sendkeys yöntemi ile bir şeyler yapılabilir belki. ben biraz çalışayım.
belki bu arada konuya hakim üstadlardan bilgi gelebilir.
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
aşağıdaki gibi bir uygulama olabilir.

gerçek yolu vs vs ve programı açtığınızda fiilen yaptıklarınızı siz uyarlarsınız.

VBE'de işaretlenmesi gereken referans : '- Microsoft Forms X.X Object Library

excel'de A2'yi kopyalar, cosis'i açar, 4 defa Tab tuşuna basar, Ctrl+V tuşlarına basar (yani yapıştırır.

Kod:
'- Microsoft Forms 2.0 Object Library
'- MSDN Help
  
Sub cosis()
    
    Dim yol As String
    Dim DonenDeger
    
    Range("A2").Copy
    yol = "C:\Program Files\Cosis Work System\cosis.exe"
    DonenDeger = Shell(yol, 1)
    AppActivate DonenDeger
    
    SendKeys "{tab 4}", True
    SendKeys "^V", True
   
    Application.CutCopyMode = False

End Sub
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
tabii örnek kapalı uygulamayı açarak çalışıyor. zaten açık olan bir uygulamada nasıl olur derseniz aşağıdaki 2 örneği inceleyin.

1. açar ve A2'yi yapıştırır.
2. açık olan uygulamaya B2'yi yapıştırır.
sizin kırmızı font olan bölümü uyarlamanız lazım.
mesela: AppActivate ("Cosis Work System")

Kod:
Sub ornek1()

Range("A2").Copy

DonenDeger = Shell("notepad.exe", 1)
SendKeys "{tab 4}", True
SendKeys "^V", True

Application.CutCopyMode = False

End Sub
Kod:
Sub ornek2()

Range("B2").Copy
[COLOR="Red"]AppActivate ("Untitled - Notepad")[/COLOR]
SendKeys "{tab 4}", True
SendKeys "^V", True

Application.CutCopyMode = False

End Sub
 
Katılım
1 Ocak 2010
Mesajlar
87
Excel Vers. ve Dili
Türkçe 2007
tabii örnek kapalı uygulamayı açarak çalışıyor. zaten açık olan bir uygulamada nasıl olur derseniz aşağıdaki 2 örneği inceleyin.

1. açar ve A2'yi yapıştırır.
2. açık olan uygulamaya B2'yi yapıştırır.
sizin kırmızı font olan bölümü uyarlamanız lazım.
mesela: AppActivate ("Cosis Work System")
[/CODE]
Sanırım bunu kullanmam gerekecek. Burada da örnek 1 ile örnek 2 aynı makroda olması gerekiyor galiba. Bir de a2 b2 bittikten sonra otomatik olarak a3 b3, sonra a4 b4 şeklinde devam edecek mi? Şuan şirkette olmadığımdan maalesef deneyemiyorum. Pazartesi deneyip sonucu yazacağım. İlginiz için çok teşekkür ediyorum..
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
talebinizde belirttiğiniz üzere sadece A2 hücresi için yazıldı.
tabii çalışacağının garantisi yok. çünkü bende sizin programınız yok.
denemeye göre geliştirilebilir. genellikle uygulamalarda sahalar arasında TAB tuşu ile ilerlendiği için ona göre oluşturuldu.

tabii yüzlerce veri girecekseniz bunu sendkeys ile yapmanız doğru değil. hata verebilir, ki verir.

tavsiyem ne kadar yoğun olursalar olsunlar excel'den veri alma konusunda size yardımcı olsunlar. ben programcı vb uzmanlıkta biri değilim ama çok zor olmayacağını tahmin ediyorum.
 
Katılım
1 Ocak 2010
Mesajlar
87
Excel Vers. ve Dili
Türkçe 2007
talebinizde belirttiğiniz üzere sadece A2 hücresi için yazıldı.
tabii çalışacağının garantisi yok. çünkü bende sizin programınız yok.
denemeye göre geliştirilebilir. genellikle uygulamalarda sahalar arasında TAB tuşu ile ilerlendiği için ona göre oluşturuldu.

tabii yüzlerce veri girecekseniz bunu sendkeys ile yapmanız doğru değil. hata verebilir, ki verir.

tavsiyem ne kadar yoğun olursalar olsunlar excel'den veri alma konusunda size yardımcı olsunlar. ben programcı vb uzmanlıkta biri değilim ama çok zor olmayacağını tahmin ediyorum.
Anlıyorum. İlginiz için çok teşekkür ederim. Emeğinize; bilginize sağlık..
 
Katılım
12 Kasım 2007
Mesajlar
327
Excel Vers. ve Dili
excel 2003
Sayın Mancubus
Benzer konu ile ben de ilgiliyim.
Bu konuda bazı tesbitlerim ve sormak istediklerim var.

Örneğin herhangi bir web sayfasının bir textbox'ına veri girmek gerektiğinde ilgili web sayfasnın kaynak kodundan textbox'un ismini öğrenip textbox'un ismi ile doğrudan doğruya vba ile bilgi yazabiliyoruz.

Şimdi şunu sormak istiyorum.
Sayın use2000 arkadaşımızın kullandığı gibi "cosis" gibi bir programda yani kaynak kodları gizli olan ve exe olarak çalıştırılan bir programın ilgili textbox'ına bilgi göndermenin (sendkey komutları dışında) başka bir yolu varmıdır.

Veya kaynak kodları kapalı bir programda ilgili textbox'ın kodlarında bulunan ismini bir şekilde öğrendiğimizde (programcı şirketten veya kişiden) ilgili textbox'a direkt olarak bilgi göndermek mümkünmüdür.

Bu konuda bilgisi olan tüm arkadaşlardan cevap bekliyorum.
Saygılarımla
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
ben tabii uzman olmadığımı her fırsatta vurguluyorum.

excel'in konuşabileceği her programı excel vasıtası ile kontrol etmek mümkün olabilir zannediyorum. eğer bu konuşma sağlanır ise send keys dışında da yöntemler olabilir.

size kendi gündelik hayatımda kullandığım bir örnek vereyim daha açıklayıcı olsun. konunun uzmanı daha güzel ifade edebilir elbette.

kullandığım verilerin bir kısmını business objects (BO) raporu olarak alıyorum. raporu açıyorum, verileri güncelliyorum ("refresh"), veri az ise edit/copy ile "clipboard"a kopyalıyorum, excel'e dönüp yapıştırıyorum, veri çok ise txt dosyası olarak save edip, txt dosyası üzerinden verileri alıyorum.

bu iş rutin ve zaman alıcı olduğu için süreci otomatize etmek üzere çözüm aramaya başladım. teknik destek alamayınca, google ne güne duruyor diyerek aramaya başladım.
bana lazım olan BO dosyasını açacak, güncelleyecek ve excel'deki ctrl+c işlevini yapacak bir koddu.

aşağıdakine benzer bir kod buldum.

Kod:
Sub GetBOData()

Dim BoApp As busobj.Application, BODoc As busobj.Document, BORep As busobj.ReportSet

BoApp = CreateObject("BusinessObjects.application")

With BoApp
    .LoginAs "username", "password"
    .Visible = True
    .Documents.Open ("FilePath\FileName.rep")
    With .ActiveDocument
        .Refresh
        i = 1
        For Each rpt In .Reports
            rpt.Activate
            BoApp.[COLOR="Red"]CmdBars(2).Controls("&Edit").Controls(20).Execute[/COLOR]
            Sheets(i).Range("A1").PasteSpecial Paste:=xlPasteValues
        i = i + 1
        Next
    End With
End With

Set BoApp = Nothing
Set BODoc = Nothing

End Sub
kırmızı yaptığım satırın "ctrl+c" anlamına geldiği açıktı.

VBE'de tools'dan references'a girdim. evet BO'nun kütüphanesi referanslar arasında vardı (BO programı yüklenirken kendisi ilgili kütüphaneye kopyalar zaten). hemen işaretledim ve denedim.

önce bir sürü hata verdi. oraya bir darbe, buraya ufak bir dokunuş kendim için amatörce de olsa bir çözüm ürettim. şimdi 15-20 tane rapor arka arkaya açılıyor, güncelleniyor, access'e tablo olarak geliyor. ben de bu arada çay kahve içiyor veya başka işlerimle ilgileniyorum.

eğer kırmızı yaptığım satırdaki kodu VBA yardımdan bulmam mümkün değildi. siz de sizin ofis dışı programlarınızla işlem yapmak istiyorsanız bu kırmızı satırı veya daha başka yararlı şeyleri bullmanız gerekir.

umarım amatörce de olsa fikir verebilmişimdir.
 
Katılım
12 Kasım 2007
Mesajlar
327
Excel Vers. ve Dili
excel 2003
Sayın Mancubus
Çok teşekkür ederim. Sizin bildikleriniz yanında bizler çok amatörüz.
Verdiğiniz kod birçok arkadaşa ilham verecektir.
Yazdıklarınızdan şunu anladım.
Hangi program olursa olsun bilgisayara kurulurken kendi kütüphanesini reference klasörüne kopyalıyor anlaşılan.
Excel başka programlarla haberleşirken bu kütüphanedeki bilgilerimi kullanıyor?

Sizin bahsettiğiniz örnekte siz BO programından verileri alıp excele atıyorsunuz. Çok güzel çözüm.
Sizin örnekte herhalde username ve password kelimeleri yerine gerçek username ve şifre kelimeleri yazılması lazım değilmi?
Benim projemde ise excelden başka programların tecxtbox'ına veri girmek. Bu programlar kaynak kodu gizli programlar. Bununla ilgili örnekleriniz varmı acaba?
Saygılarımla
 

mancubus

Destek Ekibi
Destek Ekibi
Katılım
6 Ocak 2010
Mesajlar
2,224
Excel Vers. ve Dili
İŞ: 2021 Win Eng
rica ederim.

tabii BO'nun yeni versiyonlarında "save as excel" seçeneği varmış. benim kullandığımda olmadığı için ilave iş yapmak durumunda kaldım. evet kodun içine gerçek kullanıcı ve şifre bilgilerimi yazıyorum. (kodlar parola korumalı elbette.)

ağırlıklı ofis / ofis uyumlu programlar ile çalıştığım için elimde başka bir şey yok maalesef.
 
Katılım
17 Mayıs 2006
Mesajlar
19
Açık olan bir Word dosyasında geçip, sendkey ile Ctrl-A ile göndererek excele kopyalayıp yapıştırmak mümkünmü?
 

catalinastrap

Özgür ALTAY
Destek Ekibi
Katılım
19 Ağustos 2006
Mesajlar
606
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO /64 bit /Türkçe
send keys

Konu ile ilgili benimde bir problemim var yardımcı olabilirmisiniz arkadaşlar
 

catalinastrap

Özgür ALTAY
Destek Ekibi
Katılım
19 Ağustos 2006
Mesajlar
606
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO /64 bit /Türkçe
send keys

dosya eklemeyi unutmuşum
 

Ekli dosyalar

Üst