Çözüldü Kapalı Dosyalardan Veri Çekmek

YagizKc

Altın Üye
Katılım
10 Ekim 2020
Mesajlar
29
Excel Vers. ve Dili
Microsoft 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
30-10-2024
Merhaba,

2 tane kapalı kalacak veri dosyası var. Bunlar iki ayrı şirketin muhasebesel verileri.

Benim istediğimse ana excel dosyamda ilk sayfadaki hücreye, bu iki veri dosyasından herhangi birinin dosya ismini yazarak, ana dosyamdaki sayfaya o veri dosyalarını anında çekmek. bu şekilde istediğim gibi sadece bir hücredeki metni değiştirirerk iki ayrı dosyanın verileri arasında git-gel yapabilmek. ve bunu 3. bir dosyada yapmak.

Bunun için bilen kişilerin yardımına ihtiyacım var. Ne yazık ki macro bilmiyorum. Ama gerekli kodları sizlerden alabilirsem ben hangi hücrelerdeki verileri çekeceğini kodun üzerinde düzenleyebileceğimi düşünüyorum.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Alacağınız veri sayısı ne kadardır? Bir kaç hücre ile çok sayıda hücreden veri alınacaksa ise farklı kodlamalar önermek mümkün. Ayrıca veri alınacak dosyaların yapısı birebir aynı mıdır? Örnek dosyalar ekleyebilirseniz hızlı cevap alabilirsiniz.
 

YagizKc

Altın Üye
Katılım
10 Ekim 2020
Mesajlar
29
Excel Vers. ve Dili
Microsoft 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
30-10-2024
Alacağınız veri sayısı ne kadardır? Bir kaç hücre ile çok sayıda hücreden veri alınacaksa ise farklı kodlamalar önermek mümkün. Ayrıca veri alınacak dosyaların yapısı birebir aynı mıdır? Örnek dosyalar ekleyebilirseniz hızlı cevap alabilirsiniz.
Levent Bey,

ilgili dosyaları yükledim.

Ana Dosya kitabında "Ana Sayfa" içerisinde yeşil boyadığım "veriler" yazan hücredeki metin içeriğine göre, kapalı kalacak 2. excel kitabından veri çekecek. Bu kapalı kitap ismi neyse oradaki verileri çekecek. Mesela buraya yüklediğim ikinci kitabı "Veriler" diye adlandırdığım için "Ana Dosya" daki hücreye yine "Veriler" yazdım. 3. bir kitap ismi girdiğimde de oradaki verileri çekecek. Hedefim bu.

"Veriler" kitabında 2 sayfa mevcut. O iki sayfayı "Ana Dosya" kitabındaki benzer isimdeki iki ayrı sayfaya çekebilirsem ben önce "Bilgiler" sayfasına oradan veri çekeceğim, ardından da "Ana Sayfa"da bazı formüller oluşturacağım.

Ancak ilk paragrafta da söylediğim gibi "Ana Sayfa"daki kendi gireceğim değişkene göre veri çekmeyi çözemiyorum. "Veriler" gibi dosyalardan 100 adet excel kitabı, bir klasörün içinde bekleyecek ve "Ana Sayfa"mda hangisinden veri çekebileceğimi seçeceğim.
 

Ekli dosyalar

YagizKc

Altın Üye
Katılım
10 Ekim 2020
Mesajlar
29
Excel Vers. ve Dili
Microsoft 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
30-10-2024
Hala yanıt bulamadım..
 

emrebengul

Altın Üye
Katılım
5 Aralık 2015
Mesajlar
297
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2019 TR 32 Bit
Altın Üyelik Bitiş Tarihi
03-01-2028
dener misiniz?

Kod:
Option Explicit

Sub Düğme1_Tıkla()
    Dim WB As Workbook, WS As Worksheet, Target_File As Variant, Target_Sheet As Worksheet
   
    Set WB = ThisWorkbook
    Set WS = WB.Sheets("personel")
   
    Target_File = Application.GetOpenFilename(FileFilter:="Excel Dosyaları  (*.xls;*.xlsb;*.xlsx;*.xlsm),*.xls;*.xlsb;*.xlsx;*.xlsm", Title:="Lütfen bir dosya seçiniz...", MultiSelect:=False)

    If Target_File = Empty Then
        MsgBox "Lütfen önce dosya seçiniz!", vbExclamation
        Exit Sub
    End If
 
    Application.ScreenUpdating = False
 
    On Error Resume Next
    Set Target_File = Workbooks.Open(Target_File)
    Set Target_Sheet = Nothing
    Set Target_Sheet = Workbooks(Target_File.Name).Worksheets("buraya sayfa adı yazacak")
    On Error GoTo 0
 
    If Not Target_Sheet Is Nothing Then
        Target_Sheet.Cells.Copy WS.Range("A1")
        Target_File.Close 0
        WS.Select
        Application.ScreenUpdating = True
        MsgBox "Sayfadaki veriler kopyalanmıştır.", vbInformation
    Else
        Target_File.Close 0
        Application.ScreenUpdating = True
        MsgBox "Sayfa bulunamadı!", vbCritical
    End If

    Set Target_File = Nothing
    Set Target_Sheet = Nothing
    Set WB = Nothing
    Set WS = Nothing
End Sub
 

YagizKc

Altın Üye
Katılım
10 Ekim 2020
Mesajlar
29
Excel Vers. ve Dili
Microsoft 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
30-10-2024
dener misiniz?

Kod:
Option Explicit

Sub Düğme1_Tıkla()
    Dim WB As Workbook, WS As Worksheet, Target_File As Variant, Target_Sheet As Worksheet
  
    Set WB = ThisWorkbook
    Set WS = WB.Sheets("personel")
  
    Target_File = Application.GetOpenFilename(FileFilter:="Excel Dosyaları  (*.xls;*.xlsb;*.xlsx;*.xlsm),*.xls;*.xlsb;*.xlsx;*.xlsm", Title:="Lütfen bir dosya seçiniz...", MultiSelect:=False)

    If Target_File = Empty Then
        MsgBox "Lütfen önce dosya seçiniz!", vbExclamation
        Exit Sub
    End If

    Application.ScreenUpdating = False

    On Error Resume Next
    Set Target_File = Workbooks.Open(Target_File)
    Set Target_Sheet = Nothing
    Set Target_Sheet = Workbooks(Target_File.Name).Worksheets("buraya sayfa adı yazacak")
    On Error GoTo 0

    If Not Target_Sheet Is Nothing Then
        Target_Sheet.Cells.Copy WS.Range("A1")
        Target_File.Close 0
        WS.Select
        Application.ScreenUpdating = True
        MsgBox "Sayfadaki veriler kopyalanmıştır.", vbInformation
    Else
        Target_File.Close 0
        Application.ScreenUpdating = True
        MsgBox "Sayfa bulunamadı!", vbCritical
    End If

    Set Target_File = Nothing
    Set Target_Sheet = Nothing
    Set WB = Nothing
    Set WS = Nothing
End Sub
oldu çok teşekkür ederim.

peki ayrı ayrı sayfaları çekmek için ayrı düğmeler atamak yerine tek düğmeyle koda yazdığım sayfaları çekmek nasıl olabilir?
 

emrebengul

Altın Üye
Katılım
5 Aralık 2015
Mesajlar
297
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2019 TR 32 Bit
Altın Üyelik Bitiş Tarihi
03-01-2028
soruyu anlayamadım Yağız Bey :)
 

YagizKc

Altın Üye
Katılım
10 Ekim 2020
Mesajlar
29
Excel Vers. ve Dili
Microsoft 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
30-10-2024
soruyu anlayamadım Yağız Bey :)
Verdiğiniz kodla 1 dosyadaki verileri 1 düğmeye basarak çekiyorum. O dosyada 3 ayrı sayfa var ve 3 ayrı makro kodunu 3 ayrı düğmeye atayarak 3 ayrı sayfayı çekmeyi tek tek yapıyorum.

Tek düğmeye basarak 3 ayrı sayfayı tek seferde çekemez miyim yani.
 

emrebengul

Altın Üye
Katılım
5 Aralık 2015
Mesajlar
297
Excel Vers. ve Dili
Excel Vers. ve Dili Ofis 2019 TR 32 Bit
Altın Üyelik Bitiş Tarihi
03-01-2028
Kod:
Option Explicit

Sub Düğme1_Tıkla()
    Dim WB As Workbook, WS,UA,BH As Worksheet, Target_File As Variant, Target_Sheet As Worksheet
  
    Set WB = ThisWorkbook
    Set WS = WB.Sheets("SAYFA1")
    Set UA = WB.Sheets("SAYFA2")
   Set BH = WB.Sheets("SAYFA3")
    Target_File = Application.GetOpenFilename(FileFilter:="Excel Dosyaları  (*.xls;*.xlsb;*.xlsx;*.xlsm),*.xls;*.xlsb;*.xlsx;*.xlsm", Title:="Lütfen bir dosya seçiniz...", MultiSelect:=False)

    If Target_File = Empty Then
        MsgBox "Lütfen önce dosya seçiniz!", vbExclamation
        Exit Sub
    End If
 
    Application.ScreenUpdating = False
 
    On Error Resume Next
    Set Target_File = Workbooks.Open(Target_File)
    Set Target_Sheet = Nothing
    Set Target_Sheet = Workbooks(Target_File.Name).Worksheets("buraya sayfa adı yazacak")
    On Error GoTo 0
 
    If Not Target_Sheet Is Nothing Then
        Target_Sheet.Cells.Copy WS.Range("A1")
        Target_File.Close 0
        WS.Select
        Application.ScreenUpdating = True
        MsgBox "Sayfadaki veriler kopyalanmıştır.", vbInformation
    Else
        Target_File.Close 0
        Application.ScreenUpdating = True
        MsgBox "Sayfa bulunamadı!", vbCritical
    End If

    Set Target_File = Nothing
    Set Target_Sheet = Nothing
    Set WB = Nothing
    Set WS = Nothing
End Sub
Olarak deneyin lütfen
 

YagizKc

Altın Üye
Katılım
10 Ekim 2020
Mesajlar
29
Excel Vers. ve Dili
Microsoft 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
30-10-2024
Kod:
Option Explicit

Sub Düğme1_Tıkla()
    Dim WB As Workbook, WS,UA,BH As Worksheet, Target_File As Variant, Target_Sheet As Worksheet
 
    Set WB = ThisWorkbook
    Set WS = WB.Sheets("SAYFA1")
    Set UA = WB.Sheets("SAYFA2")
   Set BH = WB.Sheets("SAYFA3")
    Target_File = Application.GetOpenFilename(FileFilter:="Excel Dosyaları  (*.xls;*.xlsb;*.xlsx;*.xlsm),*.xls;*.xlsb;*.xlsx;*.xlsm", Title:="Lütfen bir dosya seçiniz...", MultiSelect:=False)

    If Target_File = Empty Then
        MsgBox "Lütfen önce dosya seçiniz!", vbExclamation
        Exit Sub
    End If

    Application.ScreenUpdating = False

    On Error Resume Next
    Set Target_File = Workbooks.Open(Target_File)
    Set Target_Sheet = Nothing
    Set Target_Sheet = Workbooks(Target_File.Name).Worksheets("buraya sayfa adı yazacak")
    On Error GoTo 0

    If Not Target_Sheet Is Nothing Then
        Target_Sheet.Cells.Copy WS.Range("A1")
        Target_File.Close 0
        WS.Select
        Application.ScreenUpdating = True
        MsgBox "Sayfadaki veriler kopyalanmıştır.", vbInformation
    Else
        Target_File.Close 0
        Application.ScreenUpdating = True
        MsgBox "Sayfa bulunamadı!", vbCritical
    End If

    Set Target_File = Nothing
    Set Target_Sheet = Nothing
    Set WB = Nothing
    Set WS = Nothing
End Sub
Olarak deneyin lütfen
Emre Bey,

Çekeceğim 3 ayrı sayfanın da isimleri farklı.

"
Set WS = WB.Sheets("SAYFA1")
Set UA = WB.Sheets("SAYFA2")
Set BH = WB.Sheets("SAYFA3")
"

kısmında hangi sayfalara çekeceğini ayrı ayrı yazacağım. ancak hangi sayfalardan çekeceğim kısmı;

"
Set Target_Sheet = Workbooks(Target_File.Name).Worksheets("buraya sayfa adı yazacak")
"

burada tek sayfa yazarsam olmayacak. buraya da 3 ayrı sayfa verisini nasıl yazabiliriz?
 

Erkan Akayay

Altın Üye
Katılım
8 Aralık 2006
Mesajlar
405
Excel Vers. ve Dili
Ofis 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2028
Veri sayfasında 2 sayfa gördüm. ADO ile veri alma üzerine bir kod yazdım. İnceleyiniz.
Bilanço ve gelir tablosu sayfaları içinde veriler silindi.
Ana sayfadaki butonu çalıştırınca bu 2 sayfaya veriler gelecek.
 

Ekli dosyalar

YagizKc

Altın Üye
Katılım
10 Ekim 2020
Mesajlar
29
Excel Vers. ve Dili
Microsoft 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
30-10-2024
Veri sayfasında 2 sayfa gördüm. ADO ile veri alma üzerine bir kod yazdım. İnceleyiniz.
Bilanço ve gelir tablosu sayfaları içinde veriler silindi.
Ana sayfadaki butonu çalıştırınca bu 2 sayfaya veriler gelecek.
Hepinize çok teşekkür ederim, çalışmam tamamlandı. Kendi dosyama uyarladım.

Erkan Bey, bu makroda sadece dosya seçme penceresi geldikten sonra iptal'e basınca hata veriyor, Emre Bey'in makrsoundaki gibi uyarı mesajı çıkmıyor. ama çok da sorun değil.
 
Üst