"set" komutu ile başka belgede alan tanımlama

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Bilgi alışverişi yaptığım başka bir excel belgesinden set komutu ile veya başka bir şekilde nasıl alan tanımlayabilirim.

mesela; "a" harfi KAYNAK.xls deki, sayfa1'de bulunan "A1" hücresi olabilir mi?

( set a= .....? )

İyi çalışmalar dilerim..

Bütün öğretmenlerimizin öğretmenler günü kutlu olsun.
 
Katılım
22 Haziran 2005
Mesajlar
998
Excel Vers. ve Dili
Office 2007 Türkçe
Öncelikle belirttiğiniz dosya açık olmalıdır.
Dosyayı açmak için
Workbooks.Open ("c:\KAYNAK.xls")
A1 hücresini tanımlamak için
dim a as range
Set a = workbooks("KAYNAK.xls").sheets("Sayfa1").range("A1")
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Set a = workbooks("KAYNAK.xls").sheets("Sayfa1").range("A1:F1")

ve

Set b = workbooks("KAYNAK.xls").sheets("Sayfa2").range("A1:F1")

ve

b=a

yazmak istedim, olmuyor, hata veriyor. Nerede yanlış yapıyorum acaba !

Yani, sayfa1 deki alanı, sayfa ikide belirttiğim alana taşımak istiyorum.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki gibi deneyin.

Kod:
b.Value = a.Value
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
value uzantısı işime yaradı; ama iki farklı excel dosyası söz konusu iken, (Mesela, yukarıda verdiğim örnek kodda, belge adları KAYNAK1 ve KAYNAK2 olursa) Set komutundan önce ilgili dosya ve sayfaları faal (aktif / activate - select ) yapmam gerekiyor; İlgili belgenin açık olması yeterli olamaz mı? Yani, bağlantı kurulacak sayfanın o anda açık olmasına ne gerek var, ben zaten set komutundan sonra sheets ile sayfa adı belirtiyorum, ama o sayfayı o anda seçtirmezsem, yani o sayfa, o anda faal olmazsa hata veriyor.

Bunun da bir çaresi vardır muhtemelen. Bir çare dostlar!
 
Son düzenleme:

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
2 farklı belge ile çalışırken, ilgili belge ve sayfayı faal hale getirmeden de "Set" komutunu kullanamaz mıyız?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
2 farklı belge ile çalışırken, ilgili belge ve sayfayı faal hale getirmeden de "Set" komutunu kullanamaz mıyız?
Bundan kastınız dosya kapalı iken mi? öyle ise bu kodlama ile olmaz bu durumda kapalı dosyadan veri alma ile ilgili kodlamaları kullanmalısınız. Eğer her iki dosyada açık ise birinden veri almak için o dosyayı aktif hale getirmek gerekmez. Veri alınacak dosyanın ve sayfası ile hücre adının birlikte yazılması yeterlidir. Örneğin,


a = Workbooks("Kitap2.xls").Sheets("Sayfa1").Range("A1 ")
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
(masaüstüne kitap1 ve kitap2 açtım, ikisi de açıkken denedim.)



Sub dene()

Windows("Kitap2").Activate '***
Sheets("sayfa1").Select '***

b = Workbooks("Kitap2.xls").Sheets("Sayfa1").Range((Cells(1, 1)), (Cells(1, 6)))

Windows("Kitap1").Activate '***
Sheets("sayfa1").Select '***

a = Workbooks("Kitap1.xls").Sheets("Sayfa1").Range((Cells(1, 1)), (Cells(1, 6)))

b.Value = a.Value

End Sub

yıldızlı satırları çıkarırsam, yani ilgili belgeleri faal yapmazsam makro hata veriyor. İlk söylediğim olay buydu..
 
Son düzenleme:

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Alan tanımlama tek hücre değil de birden fazla hücre olursa veya

RAnge ((cells.... şeklinde yazılırsa diğer belgeyi faal yapmayı gerektiriyor. Lütfen anlayan arkadaşlar yardım etsinler, arka tarafta bir o belgeyi bir bu belgeyi açtırmadan bu işi nasıl çözeriz?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki gibi deneyin.

Kod:
Sub dene()
Set s1 = Workbooks("Kitap1.xls").Sheets("Sayfa1")
Set s2 = Workbooks("Kitap2.xls").Sheets("Sayfa1")
s1.Range(s1.Cells(1, 1), s1.Cells(1, 6)) = s2.Range(s2.Cells(1, 1), s2.Cells(1, 6)).Value
End Sub
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Sayın Leventm, ben de cevap vermenizi bekliyordum.

Teşekkürler, şimdi istediğim gibi oldu, hatta ben, haddim olmayarak, kodda az bir değişiklik de yaptım. Teşekkürler. (Talebeniz Meslekî)

Sub dene()
Set s1 = Workbooks("Kitap1.xls").Sheets("Sayfa1")
Set s2 = Workbooks("Kitap2.xls").Sheets("Sayfa1")
Set a = s1.Range(s1.Cells(1, 1), s1.Cells(1, 6))
Set b = s2.Range(s2.Cells(1, 1), s2.Cells(1, 6))
a.Value = b.Value
End Sub
 
Üst