Kapalı Dosyaya Veri Kopyalama

Katılım
12 Temmuz 2008
Mesajlar
90
Excel Vers. ve Dili
2003 TÜRKÇE
Kapalı ve örnekteki şekilde şifre girişi olan bir dosyaya, bu dosyayı hiç açmadan sabit bir hücreden sabit bir hücreye (Örneğin 1 kitabın A3 hücresinden diğerinin A1 hücresine) veri aktarmak mümkün mü?
Not: Orjinal dosya boyutu oldukça büyük olduğu için gizli aç-kapat şeklinde olmaması ve sayfanın hiçbir şekilde açılmaması gerekiyor.
Dosyanın açılması için:
Kullanıcı: SS
Şifre: 1234
 

Ekli dosyalar

Katılım
12 Temmuz 2008
Mesajlar
90
Excel Vers. ve Dili
2003 TÜRKÇE
Bu konuda hala yardıma ihtiyacım var. İlgilenen arkadaşlara şimdiden teşekkür ederim.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,580
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kod ile istediğiniz hücredeki bilgiyi alabilirsiniz. Kodun son kısmındaki kırmızı renkli bölüm hücre adresini belirtmektedir. R1C1 hücre stili kullanılmıştır.

R harfi satırı C harfide sütunu ifade etmektedir.

R3C1 = A3 hücresini eşittir.

İki kitapta aynı klasörde olmalıdır. Aksi durumda dosya yolunu değiştirmek gerekir.

Kod:
Option Explicit
 
Sub VERİ_AL()
    Range("A1").Value = ExecuteExcel4Macro("'" & ThisWorkbook.Path & "\[Örnek.xls]2009'![COLOR=red]R3C1[/COLOR]")
End Sub
 
Katılım
12 Temmuz 2008
Mesajlar
90
Excel Vers. ve Dili
2003 TÜRKÇE
Sn. Ayhan ilginiz için teşekkür ederim ama galiba sorunu tam anlatamamışım. Benim asıl istediğim "örnek.xls" dosyasını hiçbir şekilde açmadan, açık olan diğer bir kitabın sabit bir hücresindeki veriyi "örnek.xls" içindeki sabit bir hücreye yazmak. Dahada basitce söylersek kapalı dosyadan veri almak değilde kapalı dosyaya veri göndermem gerekiyor.
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Teşekkürler sayın Korhan Ayhan
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Sayın Korhan Ayhan. Alınmak istenenler tablo ise (belirli bir alan ise) örneğin A1:C3 arası ise alan tanımlaması nasıl olmalıdır ? Ben şu şekilde bazı denemeler yaptım ama olmadı.

!R3C1:R1C1
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,580
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Serdar bey,

Sanırım tek bir komutla bu yöntemle tabloyu bir bütün olarak alamıyoruz. Fakat döngü yöntemi ile alabiliyoruz. Tabiki bunun kötü yanı eğer veri alınacak tablo hacmi büyükse veri alımında yavaşlama söz konusu olacaktır. Zaten bu durumda ADO yada DAO yöntemlerini kullanmak daha mantıklı olacaktır.

Döngü yöntemi ile aşağıdaki kodu kullanarak veri alabilirsiniz. Dosya yolunu ve sayfa adını kendinize göre değiştirmeyi unutmayın.

Kod:
Option Explicit
 
Sub VERİ_AL()
    Dim Satır As Long, Sütun As Byte, Son_Satır As Long, Son_Sütun As Byte
 
    Son_Satır = ExecuteExcel4Macro("CountA('" & ThisWorkbook.Path & "\[Kitap1.xls]Sayfa1'!C1)")
    Son_Sütun = ExecuteExcel4Macro("CountA('" & ThisWorkbook.Path & "\[Kitap1.xls]Sayfa1'!R1)")
 
    Range(Cells(1, 1), Cells(Son_Satır, Son_Sütun)).ClearContents
 
    For Satır = 1 To Son_Satır
        For Sütun = 1 To Son_Sütun
            Cells(Satır, Sütun) = ExecuteExcel4Macro("'" & ThisWorkbook.Path & "\[Kitap1.xls]Sayfa1'!R" & Satır & "C" & Sütun & "")
        Next
    Next
 
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Sayın Korhan Ayhan. Kodu aynen uyguladım. Kodu çalıştırınca aşağıdaki durum oluyor.

* "Güncelleştirilecek değerler Kitap1.xls" ekranı açılıyor.
* Dosya adı boş geliyor
* Dosya seçilse bile Tamam sekmesi aktif olmuyor
* Bir de bu ekran hiç açılmadan, dosya kapalı iken veri alması söz konusu mudur ?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,580
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Serdar bey,

Kitap1 ve Kitap2 adında iki adet dosya oluşturun. Kitap1 isimli dosyanın "Sayfa1" isimli sayfasında hücrelere veriler girip kaydedin ve kapatın. Kitap2 isimli dosyayı açın. Vermiş olduğum makroyu bu dosyaya uygulayın ve çalıştırın.

İki kitapta aynı klasör altında olursa hata almadan verileri alabilirsiniz.
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Sayın Korhan Ayhan çok özür dilerim. Nasıl olduysa gözümden kaçmış, meğerse verileri getireceğim dosyayı dalgınlıkla başka bir kataloğa kaydetmişim. Vaktinizi ziyan ettim, özür dilerim. Sağlıcakla kalın.
 
Katılım
12 Temmuz 2008
Mesajlar
90
Excel Vers. ve Dili
2003 TÜRKÇE
Serdar beyin problemi çözüldü ama benim sorunum arada kaynadığı için tekrar hatırlatma gerği duydum. Kapalı dosyaya veri yazma konusunda yardımcı olacak bir arkadaş çıkarsa çok memnun olurum.
 
Katılım
12 Temmuz 2008
Mesajlar
90
Excel Vers. ve Dili
2003 TÜRKÇE
Alttaki forumdan alıp ufak tefek değişiklik yaptığım kodla sorunun bir kısmını çözdüm ama;
bu kod sadece rakam girişine izin veriyor benim rakam ve harf birlikte karışık olarak girmem gerekiyor.
kod TextBox1'deki değeri "B2" hücresine yazıyor bunu nasıl değiştirebiliriz. (benim "AZ9" hücresine yazmam lazım.)

Private Sub CommandButton1_Click()
Dim Baglan As ADODB.Connection
Dim Kayit As ADODB.Recordset
Dim sira As Long

Set Baglan = New ADODB.Connection ' baglan adlı değişkene ADO bağlantı özelliği ata
Baglan.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ThisWorkbook.Path & "\örnek.xls;" & "Extended Properties=""Excel 8.0;HDR=yes""" 'ADO' nun anlayacağı dilden Connection String oluşturup bağlantı kur
Set Kayit = New ADODB.Recordset ' kayit adlı değişkene ADO kayıtseti özelliği ata
Kayit.Open "SELECT * FROM [2009$] ", Baglan, adOpenKeyset, adLockOptimistic '2009 adlı veritabanı tablosunu kullanılabilir durumda aç
Kayit.Fields(1) = TextBox1 ' A sütununa textbox1 yazılacak yazılacak
Kayit.Update 'Güncelle
Kayit.Close ' kayit adlı kayıtseti bağlantısını Kapat
Set Kayit = Nothing ' kayit değişkenini boşalt
Baglan.Close ' baglan bağlantısını kapat
Set Baglan = Nothing ' baglan adlı değişkeni boşalt
sira = Empty ' sira adlı değişkeni boşalt
MsgBox "aktarma işi tamamlandı"
Unload Me
End Sub
 

Ekli dosyalar

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Merhaba. Kodu ben de uygulamaya çalıştım. ama 2. satırda hata verdi.

Dim Baglan As ADODB.Connection
 
Katılım
12 Temmuz 2008
Mesajlar
90
Excel Vers. ve Dili
2003 TÜRKÇE
makronun çalışması visual basic düzenleyiciyi açıp (alt+f11) "tools" menüsünde "references" i açıp "microsoft activeX data objects 2.8 library' i " işaretlemeniz gerekli.
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Sayın Arthassss, kodu kendime uyarlamak isterim. Sizin eklediğiniz programın açılış şifrelerini verir misiniz !!
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,580
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sn. Arthassss,

Dosyayı gizli olarak açıp istediğimiz hücreye veri yazdırmanın dışında ADO ile ilgili tam bir bilgiye henüz ulaşamadım. Sanırım dosyayı gizli olarak açan ve veriyi istediğiniz hücreye aktaran kodlar sizde mevcut. Eğer ADO ile ilgili bir bilgiye ulaşırsam mutlaka cevap yazarım.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,255
Excel Vers. ve Dili
Ofis 365 Türkçe
Kapalı ve örnekteki şekilde şifre girişi olan bir dosyaya, bu dosyayı hiç açmadan sabit bir hücreden sabit bir hücreye (Örneğin 1 kitabın A3 hücresinden diğerinin A1 hücresine) veri aktarmak mümkün mü?
Not: Orjinal dosya boyutu oldukça büyük olduğu için gizli aç-kapat şeklinde olmaması ve sayfanın hiçbir şekilde açılmaması gerekiyor.
Dosyanın açılması için:
Kullanıcı: SS
Şifre: 1234
Merhaba

Ekte 2 dosya var

Kapalı olan dosya : KapaliDosya.xls
Kapalı olan dosyaya yazan dosya : KapaliDosyayaYaz

KapaliDosyayaYaz dosyasında A2 hücresi KapaliDosya da E4 hücresine yazılır, bu dosyanın şifresi "aa" dır.

Kullanıcıyı kontol etmedim, açıkça nasıl edilir onu da bilmiyorum, şimdilik böyle idare ediniz, dosayyı inceleyiniz.

Her iki dosyanın da aynı dizinde olması gerekir.
 

Ekli dosyalar

Katılım
12 Temmuz 2008
Mesajlar
90
Excel Vers. ve Dili
2003 TÜRKÇE
Sn. Ayhan, evet sayfayı gizli olarak açıp kapatan kodlar mevcut. fakat bunlar malesef işime yaramıyor.
Sn. Yeşertener, verdiğiniz örnekteki kodlarda sayfayı bir şekilde açıp geri kapatmak için yapılmış bu sebeplede malesef işime yaramıyor.
Aslında üstte verdiğim kodlarla yazma olayını çözdüm ama sadece 2 numaralı satır üzerindeki bir hücreye ve sadece rakam yazıyor. bunuda çözebilirsem sorun kalmayacak.
 
Katılım
12 Temmuz 2008
Mesajlar
90
Excel Vers. ve Dili
2003 TÜRKÇE
Alttaki kod ile yazma işlemini sağladım (örnek dosyasında "az1" 'e "burayayazılacak" yazıp makronun az2 'ye yazmasını sağlayıp ordanda formül ile "az9 'a alarak)
Alttaki kod TextBox1'e sadece rakam girilirse işlemi gerçekleştiriyor. Rakamlarla birlikte harf yada harf rakam karışık şekilde girilirse "tür uyuşmazlığı" şeklinde bir hata veriyor.
Sadece rakam yerine harf- rakam karışık şekilde yazmasını sağlayacak bir düzenlemeye ihtiyacım kaldı. Bu konuda yardım edecek olursa memnun olurum.

Private Sub CommandButton1_Click()
Dim Baglan As ADODB.Connection
Dim Kayit As ADODB.Recordset
Dim sira As Long

Set Baglan = New ADODB.Connection ' baglan adlı değişkene ADO bağlantı özelliği ata
Baglan.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ThisWorkbook.Path & "\örnek.xls;" & "Extended Properties=""Excel 8.0;HDR=yes""" 'ADO' nun anlayacağı dilden Connection String oluşturup bağlantı kur
Set Kayit = New ADODB.Recordset ' kayit adlı değişkene ADO kayıtseti özelliği ata
Kayit.Open "SELECT * FROM [2009$] ", Baglan, adOpenKeyset, adLockOptimistic '2009 adlı veritabanı tablosunu kullanılabilir durumda aç
Kayit.Fields("burayayazılacak") = TextBox1 ' AZ2 hücresine textbox1 yazılacak
Kayit.Update 'Güncelle
Kayit.Close ' kayit adlı kayıtseti bağlantısını Kapat
Set Kayit = Nothing ' kayit değişkenini boşalt
Baglan.Close ' baglan bağlantısını kapat
Set Baglan = Nothing ' baglan adlı değişkeni boşalt
sira = Empty ' sira adlı değişkeni boşalt
MsgBox "aktarma işi tamamlandı"
Unload Me
End Sub
 
Üst