DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
A3 ten değilde A2 den itibaren itibaren kopyalamasına bende anlam veremedim. Çözüm bulmanız halinde paylaşırsanız seviniriz. SaygılarHaluk hocam çalışmanızı silip tekrar indirdim 64 bitte çalıştı. Sayın ormanın istediği şekilde çalışmanız bende çalıştı. Herhangi bir sorun yok
Sayın Orman klasörün içimi boş görünüyorBen hala anlamış değilim.Hiçbir şekilde görmüyor
Sayın Metin klasör aç dediğimde hiç bir Excel dosyasını görmüyor masaüstü dahilSayın Orman klasörün içimi boş görünüyor
Haluk beyin gönderdiği proğram bende sorunsuz çalıştı. Ancak sizde neden böyle yaptı açıkçası bilmiyorum . Haluk hocamın affına sığınarak masaüstü kopyalama kısmını her pc de olacak şekilde haluk hocamın makrosundan alarak revize ettim.Sayın Metin klasör aç dediğimde hiç bir Excel dosyasını görmüyor masaüstü dahil
İdris bey kusura bakmayın. Görmemişim . Evet dosya tam istediğimi yapıyor. Fakat bazı yerleri şu şekilde olması gerekiyor..
Sayın ormann,
Herne kadar verdiğim yanıtı görmezden geldiyseniz de, birleştirme isteğiniz bu şekilde ise, yukarıda verdiğim linkteki dosyayı kullanın.
.
.
Option Explicit
Sub Verileri_Aktar()
Dim Dosya As Variant, X As Long, Baglanti As Object, Sorgu As String, Son As Long
Dim Veri As Variant, Kayit_Seti As Object, S1 As Worksheet, Ebat As String, Zaman As Double
Dosya = Application.GetOpenFilename(FileFilter:="Excel Çalışma Kitapları (*.xl*),*.xl*", _
Title:="Lütfen Dosya Seçiniz...", MultiSelect:=True)
Zaman = Timer
If IsArray(Dosya) Then
Set Baglanti = CreateObject("AdoDb.Connection")
Set S1 = Sheets("istifEbatExcel")
S1.Range("A2:D" & S1.Rows.Count).ClearContents
For X = LBound(Dosya) To UBound(Dosya)
If Dosya(X) <> ThisWorkbook.FullName Then
Baglanti.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _
Dosya(X) & ";Extended Properties=""Excel 12.0;Hdr=No"""
Sorgu = "Select * From [istifEbatExcel$A2:D]"
Set Kayit_Seti = Baglanti.Execute(Sorgu)
S1.Cells(S1.Rows.Count, 1).End(3)(2, 1).CopyFromRecordset Kayit_Seti
Kayit_Seti.Close
Baglanti.Close
End If
Next
Son = S1.Cells(S1.Rows.Count, 1).End(3).Row
If Son = 1 Then
MsgBox "Veri bulunamadı!", vbCritical
GoTo 10
ElseIf Son >= 2 Then
If Son = 2 Then Son = 3
Veri = S1.Range("A2:A" & Son).Value
With CreateObject("Scripting.Dictionary")
For X = LBound(Veri) To UBound(Veri)
If Veri(X, 1) <> "" Then .Item(Veri(X, 1)) = 1
Next
Ebat = Join(.Keys, "-")
End With
S1.Copy
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs CreateObject("WScript.Shell").Specialfolders("Desktop") & _
Application.PathSeparator & "BİRLEŞTİRİLEN EBAT LİSTELERİ-(" & Ebat & ").xlsx", 51
ActiveWorkbook.Close
Application.DisplayAlerts = True
MsgBox "Veri aktarımı tamamlanmıştır." & Chr(10) & Chr(10) & _
"İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End If
10
Set S1 = Nothing
Set Kayit_Seti = Nothing
Set Baglanti = Nothing
Else
MsgBox "Dosya seçimi yapmadığınız için işlemini iptal edilmiştir.", vbCritical
End If
End Sub
Korhan bey çok teşekkür ederim. Kod tam istediğim şekilde çalışıyor. Hızlı ve kullanışlı olabilirse son bir ekleme yapabilir misiniz ?Alternatif;
C++:Option Explicit Sub Verileri_Aktar() Dim Dosya As Variant, X As Integer, Baglanti As Object, Sorgu As String Dim Kayit_Seti As Object, S1 As Worksheet, Zaman As Double Dosya = Application.GetOpenFilename(FileFilter:="Excel Çalışma Kitapları (*.xl*),*.xl*", _ Title:="Lütfen Dosya Seçiniz...", MultiSelect:=True) Zaman = Timer If IsArray(Dosya) Then Set Baglanti = CreateObject("AdoDb.Connection") Set S1 = Sheets("istifEbatExcel") S1.Range("A2:D" & S1.Rows.Count).ClearContents For X = LBound(Dosya) To UBound(Dosya) If Dosya(X) <> ThisWorkbook.FullName Then Baglanti.Open "Provider=Microsoft.Ace.OleDb.12.0;Data Source=" & _ Dosya(X) & ";Extended Properties=""Excel 12.0;Hdr=No""" Sorgu = "Select * From [istifEbatExcel$A2:D]" Set Kayit_Seti = Baglanti.Execute(Sorgu) S1.Cells(S1.Rows.Count, 1).End(3)(2, 1).CopyFromRecordset Kayit_Seti Kayit_Seti.Close Baglanti.Close End If Next S1.Copy Application.DisplayAlerts = False ActiveWorkbook.SaveAs CreateObject("WScript.Shell").Specialfolders("Desktop") & _ Application.PathSeparator & "BİRLEŞTİRİLEN EBAT LİSTELERİ.xlsx", 51 ActiveWorkbook.Close Application.DisplayAlerts = True Set S1 = Nothing Set Kayit_Seti = Nothing Set Baglanti = Nothing MsgBox "Veri aktarımı tamamlanmıştır." & Chr(10) & Chr(10) & _ "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation Else MsgBox "Dosya seçimi yapmadığınız için işlemini iptal edilmiştir.", vbCritical End If End Sub
A3 ten değilde A2 den itibaren itibaren kopyalamasına bende anlam veremedim. Çözüm bulmanız halinde paylaşırsanız seviniriz. Saygılar