• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Kapalı Dosyadan Veri Alma

Katılım
4 Mayıs 2007
Mesajlar
12
Excel Vers. ve Dili
2000 - 2003 - 2007
Merhabalar

Ben Çalıştığım Kapalı olan KAPALI.xls excel dosyasının Fiyat isimli sayfasından AÇIK.xls excel dosyasının Fiyat adlı sayfasına A1 hücresini sonra C5 hücresini sonrada D3 hücresini kopyalayıp yapıştırmak istiyorum yani içeriklerini aktarmak istiyorum. Çok araştırdım ama becermedim hatta aşağıdaki koddan bişeyler çıkarmaya çalıştım ama yapamadım.

Kod:
Sub VeriAl()
    Eldeki = WorksheetFunction.CountA(Range("B:B"))
        Workbooks.Open Filename:="C:\Personel.xls"
            Mevcut = WorksheetFunction.CountA(Range("B:B"))
                Fark = Mevcut - Eldeki
                    Range(Cells(Eldeki + 4, 2), Cells(Mevcut + 3, 2)).Select
                        Selection.Copy
                    ActiveWindow.ActivateNext
                Cells(Eldeki + 4, 2).Select
            ActiveSheet.Paste
        ActiveWindow.ActivateNext
    ActiveWindow.Close
End Sub


Bunu makro kullanarak ADO kullanmadan yapabileceğim basit bir yol var mı? Acil yardımlrınızı bekliyorum, Yardımlarınız için şimdiden teşekkürler.
 
Selamlar,

Aşağıdaki kodu kullanabilirsiniz. Kodun çalışması için her iki dosyada aynı yerde olmalıdır.

Kod:
Option Explicit
 
Sub VERİ_AL()
    Dim DOSYA_YOLU As String
    
    DOSYA_YOLU = ThisWorkbook.Path & "\[KAPALI.xls]"
    Range("B65536").End(3).Offset(1).Value = Application.ExecuteExcel4Macro("'" & DOSYA_YOLU & "Fiyat'!R1C1")
    Range("B65536").End(3).Offset(1).Value = Application.ExecuteExcel4Macro("'" & DOSYA_YOLU & "Fiyat'!R5C3")
    Range("B65536").End(3).Offset(1).Value = Application.ExecuteExcel4Macro("'" & DOSYA_YOLU & "Fiyat'!R3C4")
End Sub
 
hocam çok teşekküre ederim fakat bu olmuyor. kodu kullandığımda bana dosya aç formu açılıyor. benim istediğim şu ;

Kapalı olan dosyadan hiç soru sormadan istediğim bir hücreyi açık olan (yani VERİ AL butonuna tıkladığım) aktif sayfada istediğim bir hücreye kopyalaması bukadar.
 
Selamlar,

Zaten önerdiğim kod istediğiniz işlemi yapıyor. Önerdiğim kodları mutlaka deneyerek gönderiyorum. Yanlış bir uygulama yapmış olabilirsiniz.

Kodun çalışması için her iki dosyayı aynı klasör içine alıp deneyin. Bir önceki mesajımda bu uyarıyı yapmıştım. Gözünüzden kaçmış olabilir.
 
hımmm anladımmm.. ozaman şu şekilde söyliyim. dosyalar aynı klasörde değil. Açık olan dosya Masaüstünde MÜŞTERİLER klasöründe kapalı olan dosya Masaüstünde MÜŞTERİLER\TEKLİF klasöründe. Bu şekilde nasıl düzenleriz?
 
Selamlar,

Aşağıdaki yolu kendinize göre uyarlayınız.

Kod:
DOSYA_YOLU = "C:\Admin\Kullanıcı_Adı\Desktop\MÜŞTERİLER\TEKLİF\KAPALI.xls"
 
Alternatif:
Aşağıdakini deneyiniz:
Kod:
DOSYA_YOLU = CreateObject("wscript.shell").SpecialFolders(0)
 
Sub VERİ_AL()
Dim DOSYA_YOLU As String
DOSYA_YOLU = ThisWorkbook.Path & "\TEKLİF\" & ComboBox1.Value
Range("B1").Value = Application.ExecuteExcel4Macro("'" & DOSYA_YOLU & "Fiyatlandırma'!C1")
Range("B2").Value = Application.ExecuteExcel4Macro("'" & DOSYA_YOLU & "Fiyatlandırma'!C3")
Range("B3").Value = Application.ExecuteExcel4Macro("'" & DOSYA_YOLU & "Fiyatlandırma'!C4")
End Sub




Kullandığım kod bu. bunu çalıştırınca ekteki resimdeki form açılıyor.
 

Ekli dosyalar

  • adsız.jpg
    adsız.jpg
    97.8 KB · Görüntüleme: 136
Selamlar,

Kodu yine yanlış uyguluyorsunuz. Kırmızı bölümle benim mesajımdaki bölümü karşılaştırın.

Kod:
"Fiyatlandırma'![COLOR=red]C1[/COLOR]"
 
Siz R1C1 yazmışsınız Bunun ne anlama geldiğin anlayamadım. Ben şey olarak düşündüm sadece C1 hücresini alıp mesela diğerinde B1 e yazsın. Sizinkini de aynısını denedim onda da resimdeki GÜNCELLEŞTİRİLECEK DEĞERLER diye kutu çıkıyor. Yoruyorum sizi kusura bakmıyorsunuz umarım. Ama mantığını anlayamadım. Çok teşekkür ediyorum şimdiden.
 
Selamlar,

Siz tam dosya yolunu ve veri alınacak hücreleri buraya yazın. Ben sizin için uyarlarım.
 
Çok sağol hocam

Şu Şekilde Masaüstünde MÜŞTERİLER Klasörüm Var. Bunun içinde Fiyatlandırma.xls (AÇIK olan yani içinde Veri al butonu olacak excel dosyası) Birde TEKLİF Klasörü var.

Benim yapmak istediğim

Fiyatlandırma.xls dosyasının içindeki Veri Al butonuna tıklayınca TEKLİF klasörü içerisindeki atıyorum "AYKUT SAKA.xls" dosyasının içerisindeki B1 hücresini Açık olan yani butona tıkladığım sayfadaki H1 hücresine kopyalıyacak. Sonra sırayla ben başka hücreleride kopyalıyacağım. Mesela Kapalı olandan Açık olana C3 , G6 , D13 gibi.
Bunu yaparken dosya açılsın veya bana herhangi bir soru sorsun istemiyorum. Sadece butona tıklayınca gitsin kapalıdaki veriyi alsın açık olana yazsın. Bukadar.
 
Selamlar,

Verdiğiniz bilgilere göre örnek dosyaları oluşturup aşağıdaki kodu denedim ve olumlu sonuç aldım. Sizde denermisiniz.

Bu makro kodları R1C1 formatına göre veri almaktadır. R harfi satırı, C harfide sütunu ifade etmektedir.

Buna göre kod içinde geçen;

R1C2 = B1 hücresidir.
R2C2 = B2 hücresidir.
R3C2 = B3 hücresidir.

Başka bir örnek;

R6C7 = G6 hücresidir.

Sanıyorum diğer hücreleri siz adreslendirebilirsiniz.


Kod:
Option Explicit
 
Sub VERİ_AL()
    Dim DOSYA_YOLU As String
 
    DOSYA_YOLU = "C:\Documents and Settings\Admin\Desktop\MÜŞTERİLER\TEKLİF\[" & Sheets("Fiyatlandırma").ComboBox1.Value & "]"
    Range("B1").Value = Application.ExecuteExcel4Macro("'" & DOSYA_YOLU & "Fiyatlandırma'!R1C2")
    Range("B2").Value = Application.ExecuteExcel4Macro("'" & DOSYA_YOLU & "Fiyatlandırma'!R2C2")
    Range("B3").Value = Application.ExecuteExcel4Macro("'" & DOSYA_YOLU & "Fiyatlandırma'!R3C2")
 
    MsgBox "Veriler güncellenmiştir.", vbInformation
End Sub
 
Tamamdır oldu çok teşekkürler elinize sağlık. Herkese çok teşekkür.
 
arkadaşlar işime çok yarayacak kodları buradan buldum. ancak kodlara değişken atamam gerekiyor. değişken atayınca error 2023 diye bir hata alıyorum.
şöyleki
korhan beyin kodları ile kapalı excel dosyasından istediğim hücreyi tek tek alabiliyorum.


Option Explicit
Sub VERİ_AL()
Dim DOSYA_YOLU As String
DOSYA_YOLU = ThisWorkbook.Path & "\[dis.xls]"
Range("a1").Value = Application.ExecuteExcel4Macro("'" & DOSYA_YOLU & "pgAgizVeDisSagligi'!R1C3")
End Sub

ancak alacağım hücre sayısı çok olunca değişken ile verileri aldırmam gerekiyor.

Option Explicit
Sub VERİ_AL()
Dim DOSYA_YOLU As String
For sayi = 1 To 100
DOSYA_YOLU = ThisWorkbook.Path & "\[dis.xls]"
eleman = Application.ExecuteExcel4Macro("'" & DOSYA_YOLU & "pgAgizVeDisSagligi'!R" & sayi & "C3")
Range("a" & sayi).Value = eleman
Next
End Sub

değişken atayınca da ilk satırı düzgün getiriyor. daha sonra ise error 2023 hatası veriyor. ve excele #BAŞV! şeklinde veri gönderiyor. bu sorunu nasıl çözeceğim konusunda yardımcı olursanız sevinirim. kolay gelsin
 
Selamlar,

Aşağıdaki kodla verdiğiniz dosyaları oluşturarak olumlu sonuç aldım.

Kod dis.xls dosyasının pgAgizVeDisSagligi sayfasındaki C sütunundaki verileri problemsiz aktarıyor.

Kod:
Option Explicit
 
Sub VERİ_AL()
    Dim Dosya_Yolu As String, Sayi As Byte, Eleman As Double
 
    Dosya_Yolu = ThisWorkbook.Path & "\[dis.xls]"
 
    For Sayi = 1 To 100
        Eleman = Application.ExecuteExcel4Macro("'" & Dosya_Yolu & "pgAgizVeDisSagligi'!R" & Sayi & "C3")
        Range("A" & Sayi).Value = Eleman
    Next
End Sub
 
Korhan hocam kapalı dosyadan alcağımız veriler bir aralık halinde ise nasıl düzenlememiz gerekiyor kodları. Örneğin A1:E50 aralığındaki değerlerin sadece değerlerini çekmek istesek ne yapmamız gerekiyor.
 
Selamlar,

Önerdiğim yöntemle (ExecuteExcel4Macro) bir hücre bloğunu/aralığını tek seferde aktaramazsınız. Mutlaka döngü kullanmanız gerekiyor. Bunun dışında ADO-DAO yöntemleri ile blok halinde aktarımlar yapabilirsiniz. Bununla ilgili olarakta forumda aşağıdaki başlık altında örnekler toplanmıştır. İncelermisiniz.

ADO-DAO-Kapalı Dosya Uygulamaları
 
korhan hocam canercan02 rümuzlu arkadaş için cevapladığınız soruyu kendim de denedim. Makro sorunsuz çalşıyor. Ancak veri alınacak dosyadan C1 hücresindeki değeri aldıktan sonra C2 deki değeri almak istediğimizde makroyu tekrar çalıştırmak gerekiyor. c sütünunda 100 tane değer varsa 100 defa çalıştırmamız mı gerekiyor. Tek seferde yapılamaz mı ? Yoksa ben mi yanlış yapıyorum.
 
Geri
Üst