• 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ü veri aktarımı 2

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.
Çözüm
Bu dosyayıda ekledim.
Bir userform ekleyip içine aramak için textbox ekledim.
Listboxa çift tıklayınca veriler gelir.
Bana sorarsanız böyle daha kullanışlı.

1630356127387.gif
Merhaba.
B2 ye veri doğrulama ile excel isimlerini alırsanız kod daha iyi çalışır.
Yani tam olarak yazılmalı excel isimleri.
Birde kapalı excel sayfalar çoksa dsayfa.......xsayfa gibi o zaman başka konuda eklediğim kodu kullanabilirsiniz.
Az ise bu yeterli.

C#:
Private Sub CommandButton1_Click()

Dim kitap As String, syf As String
ThisWorkbook.Sheets("anasayfaa").Range("C2:w" & Rows.Count).ClearContents

Select Case Range("B2").Value
    Case "Afirmasi" 'kapali kitap adi
        kitap = "Afirmasi.xlsx"
        syf = "afirmasi$A2:w" 'sayfa adi
    Case "bfirmasi"
        kitap = "bfirmasi.xlsx"
        syf = "bfirmasi$A2:w"
    Case "cfirmasi"
        kitap = "cfirmasi.xlsx"
        syf = "cfirmasi$A2:w"
End Select
If kitap <> "" And syf <> "" Then test kitap, syf
End Sub

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("anasayfaa")
        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("B2").CopyFromRecordset rs
    End With
    rs.Close
    con.Close
    Set rs = Nothing
    Set con = Nothing
    MsgBox "Bitti", vbInformation, "Bilgi"
End Sub
 
Ayrıca kapalı excellerin ilk satırları başlıksa allttaki kod daha uygun olur.

C#:
Private Sub CommandButton1_Click()

Dim kitap As String, syf As String
ThisWorkbook.Sheets("anasayfaa").Range("C2:w" & Rows.Count).ClearContents

Select Case Range("B2").Value
    Case "Afirmasi" 'kapali kitap adi
        kitap = "Afirmasi.xlsx"
        syf = "afirmasi$" 'sayfa adi
    Case "bfirmasi"
        kitap = "bfirmasi.xlsx"
        syf = "bfirmasi$"
    Case "cfirmasi"
        kitap = "cfirmasi.xlsx"
        syf = "cfirmasi$"
End Select
If kitap <> "" And syf <> "" Then test kitap, syf
End Sub

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("anasayfaa")
        con.Open "Provider=microsoft.ace.oledb.12.0;data source=" & yol & ";extended properties=""Excel 12.0;hdr=yes"""
        sql = "select * from [" & syf & "]"
        rs.Open sql, con, 1, 3
       .Range("B2").CopyFromRecordset rs
    End With
    rs.Close
    con.Close
    Set rs = Nothing
    Set con = Nothing
    MsgBox "Bitti", vbInformation, "Bilgi"
End Sub
 
Abey bence bunu deneyin.
B2 içinde otomatik veri doğrulama yaptırdım.
B2 ye tıklayınca kapalı kitapların adları listelenir ama 600 için string olayı için hata verirmi bilmiyorum 256 karakter olayı vs... uzun hikaye.
select case olayı iptal edildi klasöre exceller eklemeniz yeterli.
Önemli olan kapalı excellerdeki ilk sayfa olmalı 1.sırada veri alınacak.
Deneyin.
 

Ekli dosyalar

Son düzenleme:
Rica ederim.Sıkıntı olursada veri doğrulama olayını başka yoldan hallederiz sorun değil.
Aslında kapalı excel adlarını bir syfaya aldırıp ordanda veri doğrulama yaptırabilrdim,olmazsa öyle yaparız yada combobox ya listbox kullanılır en iyi yöntem olarak.
Önemli olan kapalı exceller yolladığınız gibi formatta olsun hepsi gerisi hikaye abey.
 
Bu dosyayıda ekledim.
Bir userform ekleyip içine aramak için textbox ekledim.
Listboxa çift tıklayınca veriler gelir.
Bana sorarsanız böyle daha kullanışlı.

1630356127387.gif
 

Ekli dosyalar

Çözüm
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst