FARKLI DOSYALARDAKİ MODÜLLERDEN GERİ VERİ AKTARIMI (ÇÖ

Katılım
12 Eylül 2004
Mesajlar
7
FARKLI DOSYALARDAKÝ MODÜLLERDEN GERÝ VERÝ AKTARIMI (ÇÃ?

:yardim: YARDIMLARINIZ LÜTFEN....
AAA modülüm book2.xls içinde...
BBB modülüm book3.xls içinde....
AAA modülündeki kodlar çalıştırıldığında "BUSAYI" değişkeninin değeri 0 yapılıyor.
Sonra book3.xls içindeki BBB modülündeki kodlar çağırılıyor. Burada "BUSAYI" değişkeninin değeri 5 yapılıyor. AAA modülüne geri dönüldüğünde BUSAYI=5 değeri korunmuyor, BUSAYI=0 (ilk değeri) olarak kalıyor.
BBB modülünde atadığım değeri AAA modülüne geri döndüğüm zaman nasıl koruyabilirim.....

AAA ve BBB modülleri book1.xls içinde olduğu zaman kodlar çalışıyor. ama bu şekilde kullanmam imkansız. BBB gibi bir sürü modülüm var, bunları ayrı bir workbook'tan çağırmalıyım...

çözümü bilen arkadaş yok mu????

... :yardim:
 

Hüseyin

Administrator
Yönetici
Admin
Katılım
2 Haziran 2004
Mesajlar
3,535
Excel Vers. ve Dili
Excel 2010 - Türkçe
Merhaba Sayın engindiler,
sorunuz cevapsız kaldı diye düşünmeyin dedim.
Akşam ilk fırsatta sorunuza vakit ayıracağım.

Saygılar
 

Hüseyin

Administrator
Yönetici
Admin
Katılım
2 Haziran 2004
Mesajlar
3,535
Excel Vers. ve Dili
Excel 2010 - Türkçe
Merhaba,
aşağıdaki kodlar sizin verdiğiniz örnekteki sorunu çözüyor, ancak sizin uygulamanızda yeterli olurmu bilmiyorum.

Ben yinede bir yazayım, bir değerlendirin. Olmuyor diyorsanız tekrar yazarsınız.

Book2.xls için :

Kod:
Sub EED1()
Application.Run "'BOOK3.XLS'!BBB.EED2"
ActiveSheet.Paste Destination:=Worksheets("Sheet1").Range("IV65536")
    BUSAYI = Range("IV65536")
MsgBox ("BU SAYI = " & BUSAYI)
End Sub
Book3.xls için :

Kod:
Sub EED2()
    BUSAYI = 5
    Range("IV65536") = BUSAYI
    Range("IV65536").Copy
End Sub
 
Katılım
12 Eylül 2004
Mesajlar
7
merhaba hüseyin bey:

yanıtınız için teşekkürler. örnekte BUSAYI gibi tek bir değişken var. ama benim uygulamamda farklı modüller içinde, formülasyona dayalı değişkenler var.
benim anlayamadığım aynı dosya içindeyken farklı modüllerden veriler taşınıyorda, farklı dosyalardayken verileri niye taşıyamıyoruz.
decleration kısmına birşeyler yazarak bunu yapabilirmiyiz. registry'ye yazdırma çözümü office.gen.tr forumundan geldi, her modülden 50-60 değişkeni registry'ye yazdır, geri çağır buda kodları uzatıyor. BBB modülü gibi en az 50-60 modülüm var ve her modül en az 1000 satırlık kod içeriyor. bunlar otomasyonla modül içine yazdırılıyor. bunları ana dosyadan ayrı tutmak istiyorum o yüzden de eed1 modülünü book2.xls içine aldım. kısa bir çözüm arıyorum, yani decleration kısmına public komutu yazmak gibi bir şey. yoksa da registry'ye yazma-okutma yoluna gideceğim.

kolay gelsin.
engin
 
Katılım
12 Eylül 2004
Mesajlar
7
aşağıdaki komutları kullanarak bunu çözebiliyorsunuz.

aşağıdaki komutlar windows registry'ye değişkenlerin son değerlerini yazdırıyor ve diğer modülden geri çağırıyor. böylece değerler korunmuş oluyor. Sayın Muhammet AYTAÞ'ın önerdiği çözümdür. kendisine teşekkür ederim.

book2.xls'ye yazılacak kod:

Option Explicit

Public Sub EED1()
Dim BUSAYI As Integer
BUSAYI = 0
SaveSetting "Engin", "Dosya", "Anahtar", BUSAYI
Application.Run "'BOOK3.XLS'!BBB.EED2", BUSAYI
BUSAYI = GetSetting("Engin", "Dosya", "Anahtar")
MsgBox ("BU SAYI = " & BUSAYI)
End Sub


book3.xls'ye yazılacak kod:

Option Explicit
Public BUSAYI As Integer
Public Sub EED2(BUSAYI)
BUSAYI = 5
SaveSetting "Engin", "Dosya", "Anahtar", BUSAYI
End Sub


BİLGİ PAYLAÞTIKÇA DEÐERLENİR VE ARTAR.....

ilginize teşekkürler.
engin
 
Katılım
12 Eylül 2004
Mesajlar
7
:hihoho: :hihoho: :hihoho: :hihoho: :hihoho: :hihoho: :hihoho:


arkadaşlar konu çözüme kavuştu.... mutlu son....

artık diğer yöntemlere gerek kalmadan bu aktarımı yapabilirsiniz.
book2.xls ve book3.xls gibi iki excel dosyanız var ve her ikiside "c:\excelkod\" dizini altında

book2.xls içindeki kodlarınız aşağıdaki gibi diyelim:

Option Explicit
Public BUSAYI As String

Public Sub EED1()
BUSAYI = "0"
Application.Run "'C:\EXCELKOD\BOOK3.XLS'!BBB.EED2", BUSAYI
MsgBox ("BU SAYI = " & BUSAYI)
End Sub

book2.xls deki proje adınız "project1", modul adınız ise "AAA"...

book3.xls içindeki kodlarınız ise aşağıdaki gibi :

Option Explicit
Public BUSAYI As String

Public Function EED2(BUSAYI)
project1.BUSAYI = "5"
End Function

book3.xls deki proje adınız "project2", modul adınız ise "BBB" ....

book2.xls içindeki kodu çalıştırdığınızda BUSAYI önce "0" oluyor, sonra book3.xls içindeki BBB isimli modülden eed2 fonksiyonu çağırılıyor ve BUSAYI'nın değeri "5" olarak atanıyor. ve book2.xls içindeki AAA modülüne geri dönüldüğünde msgbox tan 5 yanıtını alıyorsunuz.

Bunlar daha önce yapılanlarla aynı ama sonuç alamıyorduk. tek yapmamız gereken BOOK3.XLS'nin VBA kısmında, tools menüsünde references'ı tıklayıp "project1" seçeneğini işaretleyip çıkmanız.

ENGİN DİLER
 
Üst