kapalı kaynak dosyalarının tamamının alt toplamlarını almak

caytug

Altın Üye
Katılım
12 Şubat 2014
Mesajlar
47
Excel Vers. ve Dili
2003-2010
Altın Üyelik Bitiş Tarihi
12-10-2025
Arkadaşlar,
kapalı halde 17 kaynak dosyam var, hepsi standart 6 sütün var, veriler 2. satırdan başlıyor fakat satır sayıları farklı,
her dosyada C,D,E,F sütunlarının ayrı ayrı alt toplamlarını alarak
17 dosyadaki C,D,E,F alt toplamlarının genel toplamını makronun çalıştırıldığı dosyaya tek satıra kaydetsin istiyorum.
yardımlarınız için teşekkür ederim.
örnek dosya ekliyorum.
 

Ekli dosyalar

caytug

Altın Üye
Katılım
12 Şubat 2014
Mesajlar
47
Excel Vers. ve Dili
2003-2010
Altın Üyelik Bitiş Tarihi
12-10-2025
Her dosyanın C,D,E,F sütunlarının alt toplamları, makronun çalıştırıldığı dosyaya alt alta yazılması yeterli arkadaşlar,genel toplamı manuelde alırım.
 

caytug

Altın Üye
Katılım
12 Şubat 2014
Mesajlar
47
Excel Vers. ve Dili
2003-2010
Altın Üyelik Bitiş Tarihi
12-10-2025
Sitede araştırdım ama bu tarzda bulamadım.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.
 

Ekli dosyalar

  • 30.9 KB Görüntüleme: 9

caytug

Altın Üye
Katılım
12 Şubat 2014
Mesajlar
47
Excel Vers. ve Dili
2003-2010
Altın Üyelik Bitiş Tarihi
12-10-2025
Sayın Korhan,
Ellerinize sağlık, bu çözümler kamuda işlerimizi çok kolaylaştırıyor, Allah razı olsun.
 

caytug

Altın Üye
Katılım
12 Şubat 2014
Mesajlar
47
Excel Vers. ve Dili
2003-2010
Altın Üyelik Bitiş Tarihi
12-10-2025
Sayın Korhan, şöyle bir ihtiyaç hasıl oldu
B sütunu isimlerden oluşuyor ve aynı şekilde diğerlerinin yanında b sütunununda toplam sayısı ihtiyaç oldu mümkünse.Teşekkür ederim.


Option Explicit

Sub Sutun_Toplamlarini_Aktar()
Dim Dosya As Variant, S1 As Worksheet, X As Integer, Zaman As Double
Dim Baglanti As Object, Sorgu As String, Kayit_Seti As Object

Dosya = Application.GetOpenFilename(FileFilter:="Excel Çalışma Kitapları (*.xl*),*.xl*", _
Title:="Lütfen Dosya Seçiniz...", MultiSelect:=True)

Zaman = Timer

If IsArray(Dosya) <> False Then
Set Baglanti = CreateObject("AdoDb.Connection")
Set S1 = Sheets("Sayfa1")

S1.Range("A2:E" & S1.Rows.Count).Clear

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 Sum(F3),Sum(F4),Sum(F5),Sum(F6) From [Sheet0$A:F]"
Set Kayit_Seti = Baglanti.Execute(Sorgu)

With S1.Cells(S1.Rows.Count, 1).End(3)(2, 1)
.CopyFromRecordset Kayit_Seti
.Offset(, 4) = Dosya(X)
End With

If Kayit_Seti.State <> 0 Then Kayit_Seti.Close
If Baglanti.State <> 0 Then Baglanti.Close
End If
Next

With S1
.Columns.AutoFit
.Range("A1:E" & S1.Cells(S1.Rows.Count, 1).End(3).Row).Borders.LineStyle = 1
End With

Set Kayit_Seti = Nothing
Set Baglanti = Nothing
Set S1 = 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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Örnek dosyalar üzerinden tarif ediniz.
 

caytug

Altın Üye
Katılım
12 Şubat 2014
Mesajlar
47
Excel Vers. ve Dili
2003-2010
Altın Üyelik Bitiş Tarihi
12-10-2025
Sayın Korhan, ekli dosyada açıkladım.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub Sutun_Toplamlarini_Aktar()
    Dim Dosya As Variant, S1 As Worksheet, X As Integer, Zaman As Double
    Dim Baglanti As Object, Sorgu As String, Kayit_Seti As Object
    
    Dosya = Application.GetOpenFilename(FileFilter:="Excel Çalışma Kitapları (*.xl*),*.xl*", _
            Title:="Lütfen Dosya Seçiniz...", MultiSelect:=True)

    Zaman = Timer
    
    If IsArray(Dosya) <> False Then
        Set Baglanti = CreateObject("AdoDb.Connection")
        Set S1 = Sheets("Sayfa1")
        
        S1.Range("A2:F" & S1.Rows.Count).Clear
        
        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 Count(F2),Sum(F3),Sum(F4),Sum(F5),Sum(F6) From [Sheet0$A2:F]"
                Set Kayit_Seti = Baglanti.Execute(Sorgu)
                
                With S1.Cells(S1.Rows.Count, 1).End(3)(2, 1)
                    .CopyFromRecordset Kayit_Seti
                    .Offset(, 5) = Dosya(X)
                End With
                
                If Kayit_Seti.State <> 0 Then Kayit_Seti.Close
                If Baglanti.State <> 0 Then Baglanti.Close
            End If
        Next
    
        With S1
            .Columns.AutoFit
            .Range("A1:F" & S1.Cells(S1.Rows.Count, 1).End(3).Row).Borders.LineStyle = 1
        End With
            
        Set Kayit_Seti = Nothing
        Set Baglanti = Nothing
        Set S1 = 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
 

caytug

Altın Üye
Katılım
12 Şubat 2014
Mesajlar
47
Excel Vers. ve Dili
2003-2010
Altın Üyelik Bitiş Tarihi
12-10-2025
Sayın Korhan,
kişi sayılarını 1 fazla alıyor, sanırım ilk satırdaki başlığıda sayıyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodu revize ettim. Son halini deneyiniz.
 

caytug

Altın Üye
Katılım
12 Şubat 2014
Mesajlar
47
Excel Vers. ve Dili
2003-2010
Altın Üyelik Bitiş Tarihi
12-10-2025
Sayın Korhan, ellerinize sağlık düzgün çalışıyor,çok teşekkürler.
 
Üst