• Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü VERİ AKTARIMI

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

hilmierdinc

Yeni Üye
Katılım
28 Ağu 2021
Mesajlar
42
Aldığı beğeni
5
Excel V
Office 2016 TR
Birden fazla excel dosyası var.(anasayfa.xlsx-toroslar.xlsx-ar elektrik.xlsx-yıldızpul.xlsx gibi )
anasayfa.xlsx kitabının içerisinde "m4" hücresine firma ismini yazdığım zaman diğer kitaplardaki (örneğin;toroslar.xlsx) bilgileri çekmek istiyorum.
ek olarakda toroslarxlsx. kitabının içerisine yeni veri girildğinde ana sayfaya geldiği zamand güncel bir şekilde o verilerin gelmesini istiyorum.
Bu sorunu sadece tek bir excel dosyası içerisine sayfa1=anasayfa, sayfa2;toroslar, sayfa3;yıldızpul gibi isimlendirip "dolaylı" formulü ile çözdüm ancak excelde çok aşırı yavaşlama oldu bende farklı kitaplardan denemek istedim ancak çözümleyemedim.
 

Ekli dosyalar

Çözüm
Bende hazırlamıştım :)
Butonla işlem yapmak daha iyi.
65536 dan fazla veri olursa hata verebilir sizin veriler 2.satırdan başlamadığı için.

C#:
Private Sub CommandButton1_Click()

Dim kitap As String, syf As String
ThisWorkbook.Sheets("ANASAYFA").Range("C4:i" & Rows.Count).ClearContents

Select Case Range("M4").Value
    Case "ar elektrik" 'kapali kitap adi
        kitap = "ar elektrik.xlsx"
        syf = "Sayfa1$C4:i" 'sayfa adi
        test kitap, syf
    Case "toroslar"
        kitap = "toroslar.xlsx"
        syf = "toroslar$C4:i"
        test kitap, syf
    Case "yildizpul"
        kitap = "yildizpul.xlsx"
        syf = "Sayfa1$C4:i"
        test kitap, syf
End Select
End Sub

C#:
Sub test(kitap As String, syf As String)
  Dim rs...
Makrolu bir örnek hazırladım kullanabilirseniz bir bakın eksiklikler giderilir. Çalışması için diğer kapalı dosyalar bu çalışma kitabı ile aynı klasörde olsun.
 

Ekli dosyalar

Bende hazırlamıştım :)
Butonla işlem yapmak daha iyi.
65536 dan fazla veri olursa hata verebilir sizin veriler 2.satırdan başlamadığı için.

C#:
Private Sub CommandButton1_Click()

Dim kitap As String, syf As String
ThisWorkbook.Sheets("ANASAYFA").Range("C4:i" & Rows.Count).ClearContents

Select Case Range("M4").Value
    Case "ar elektrik" 'kapali kitap adi
        kitap = "ar elektrik.xlsx"
        syf = "Sayfa1$C4:i" 'sayfa adi
        test kitap, syf
    Case "toroslar"
        kitap = "toroslar.xlsx"
        syf = "toroslar$C4:i"
        test kitap, syf
    Case "yildizpul"
        kitap = "yildizpul.xlsx"
        syf = "Sayfa1$C4:i"
        test kitap, syf
End Select
End Sub

C#:
Sub test(kitap As String, syf As String)
  Dim rs As Object, con As Object, sql As String
    Set rs = CreateObject("ADODB.Recordset")
    Set con = CreateObject("ADODB.Connection")
    Dim yol As String
  
    yol = ThisWorkbook.Path & Application.PathSeparator & kitap

    With ThisWorkbook.Sheets("ANASAYFA")
        con.Open "Provider=microsoft.ace.oledb.12.0;data source=" & yol & ";extended properties=""Excel 12.0;hdr=no"""
        sql = "select * from [" & syf & "]"
        rs.Open sql, con, 1, 3
       .Range("C" & Rows.Count).End(3)(2, 1).CopyFromRecordset rs
    End With
    rs.Close
    con.Close
    Set rs = Nothing
    Set con = Nothing
    MsgBox "Bitti", vbInformation, "Bilgi"
End Sub


1630180834773.gif
 

Ekli dosyalar

Son düzenleme:
Çözüm
Bende hazırlamıştım :)
Butonla işlem yapmak daha iyi.
65536 dan fazla veri olursa hata verebilir sizin veriler 2.satırdan başlamadığı için.

C#:
Private Sub CommandButton1_Click()

Dim kitap As String, syf As String
ThisWorkbook.Sheets("ANASAYFA").Range("C4:i" & Rows.Count).ClearContents

Select Case Range("M4").Value
    Case "ar elektrik" 'kapali kitap adi
        kitap = "ar elektrik.xlsx"
        syf = "Sayfa1$C4:i" 'sayfa adi
        test kitap, syf
    Case "toroslar"
        kitap = "toroslar.xlsx"
        syf = "toroslar$C4:i"
        test kitap, syf
    Case "yildizpul"
        kitap = "yildizpul.xlsx"
        syf = "Sayfa1$C4:i"
        test kitap, syf
End Select
End Sub

C#:
Sub test(kitap As String, syf As String)
  Dim rs As Object, con As Object, sql As String
    Set rs = CreateObject("ADODB.Recordset")
    Set con = CreateObject("ADODB.Connection")
    Dim yol As String, yol2 As String
  
    yol = ThisWorkbook.Path & Application.PathSeparator & kitap

    With ThisWorkbook.Sheets("ANASAYFA")
        con.Open "Provider=microsoft.ace.oledb.12.0;data source=" & yol & ";extended properties=""Excel 12.0;hdr=no"""
        sql = "select * from [" & syf & "]"
        rs.Open sql, con, 1, 3
       .Range("C" & Rows.Count).End(3)(2, 1).CopyFromRecordset rs
    End With
    rs.Close
    con.Close
    Set rs = Nothing
    Set con = Nothing
    MsgBox "Bitti", vbInformation, "Bilgi"
End Sub


Ekli dosyayı görüntüle 2413
Düğme atamam mı hata verir ? O zaman düğmeyi neden icat etmiş bu excel ?
 
Düğme atamam mı hata verir ? O zaman düğmeyi neden icat etmiş bu excel ?
?
Size yazmadım.
Sayfanın change olayına kod yazmaktansa buton ile kod çalıştırmak demek istemiştim esasen.
Sayfa koduna yazılırsada hata vermez lakin yorgunluktan anlatamayacağım durumlar olur abey.Kısca event meventler yazılacak vs....
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst