Excel dosyasını belli satır sayısı ile yeni dosyalara bölmek?

Katılım
9 Ekim 2015
Mesajlar
1
Excel Vers. ve Dili
2016 VBA
Merhabalar,

Excel makrolarında yeniyim. Şöyle bir ihtiyacım vardı. Elimde A'dan P'ye sutun, 20000 satırlı bir excel dosyası var.

1. satırda sütünların başlığı var. Ad, id, link vs.. gibi.
Amacım bu datayı ilk satır hepsinde aynı olmak üzere 50 satır halinde bölerek yeni dosyalar kaydetmek.
Bu çalışmaya çok ihtiyacım var ama bir türlü çözüm üretemedim. Forumda şöyle bir koda denk geldim fakat çalıştıramadım hata yapıyorum sanırım.

Kod:
Sub Baska_Dosyaya_Yaz()
Dim i           As Long
Dim j           As Integer
Dim SonKol      As Integer
Dim Yol         As String
Dim Dosya_Ad    As String
Dim SatirAdedi  As Integer

Yol = ThisWorkbook.Path & Application.PathSeparator
SatirAdedi = 10
Application.ScreenUpdating = False
SonKol = [IV1].End(1).Column
For i = 2 To [A65536].End(3).Row Step SatirAdedi
   j = j + 1
   Dosya_Ad = "Dosya-" & j
    Set NewBook = Workbooks.Add
        With NewBook
            .Title = "www.excel.web.tr Tarafından Programatik Olarak Oluşturuldu"
            .Subject = "Dosya Bölme"
            .SaveAs Filename:=Yol & Dosya_Ad & ".xls"
        End With
        ActiveWorkbook.Close True
    Workbooks.Open Filename:=Yol & Dosya_Ad & ".xls"
    
    Windows("DOSYA_AYIR.xls").Activate
    Range(Cells(1, "A"), Cells(1, SonKol)).Select
    Selection.Copy
    Windows(Dosya_Ad & ".xls").Activate
    Sheets(1).Range("A1").Select
    ActiveSheet.Paste
    Windows("DOSYA_AYIR.xls").Activate
    Range(Cells(i, "A"), Cells(i + SatirAdedi - 1, SonKol)).Select
    Selection.Copy
    
    Windows(Dosya_Ad & ".xls").Activate
    Sheets(1).Range("A2").Select
    ActiveSheet.Paste
    [A1].Select
    ActiveWorkbook.Close True
    
    Application.CutCopyMode = False
        
Next i
[A1].Select
MsgBox "Aktarım İşlemi Bitmiştir..........."
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,246
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aşağıdaki kodu deneyiniz.

Dosyanızın bulunduğu bölümde "Yedekler" isimli bir klasör oluşur ve dosyalarınız "Dosya_1.xlsx" şeklinde artarak gidecek şekilde isimlendirilir.

Kod:
Sub Tabloyu_Dosyalara_Böl()
    Dim K1 As Workbook, S1 As Worksheet, K2 As Workbook, S2 As Worksheet, X As Long, Say As Long, Zaman As Double, Satir As Variant
    
    Zaman = Timer
    
    Satir = Application.InputBox("Tablonuzu kaç satırlık dosyalara bölmek ister siniz?", "Satır Sayısı Belirleme", 50)
    If Satir = "" Or Satir = 0 Then Exit Sub
    
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Set K1 = ThisWorkbook
    Set S1 = K1.Worksheets("Sayfa1")
    Son = S1.Cells(S1.Rows.Count, 1).End(3).Row
    If Dir(K1.Path & "\Yedekler", vbDirectory) = "" Then MkDir (K1.Path & "\Yedekler")
    Say = 1
    
    For X = 2 To Son Step Satir
        Set K2 = Workbooks.Add(1)
        Set S2 = K2.Worksheets(1)
        S1.Range("A1:P1").Copy S2.Range("A1")
        S1.Range("A" & X & ":P" & X + Satir - 1).Copy S2.Range("A2")
        K2.SaveAs K1.Path & "\Yedekler\Dosya_" & Say & ".xlsx"
        K2.Close
        Say = Say + 1
    Next
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
 

yasin85

Altın Üye
Katılım
29 Haziran 2011
Mesajlar
264
Excel Vers. ve Dili
2019, Türkçe
Altın Üyelik Bitiş Tarihi
25-08-2026
@Korhan Ayhan Bey Merhaba,

Bu yaptığınız işlemi bugün kullandık gerçekten çok faydalı oldu teşekkür ederiz.
İyiki varsınız.
 

tristanfermat

Altın Üye
Katılım
12 Haziran 2018
Mesajlar
98
Excel Vers. ve Dili
Excel 365
Altın Üyelik Bitiş Tarihi
15-08-2026
Merhabalar,

konuyu tekrardan güncellemis oluyorum ama kücük bir degisiklik icin yardimlariniza ihtiyacim var. Her satirin basinda belli bir id numarasi var. Örnegin
"32-21634-0017" ben bu id numaralarini dosya adi yapmak istiyorum. Bunun disinda eger mümkünse kayit türünü .txt uzantisi yapabilir miyiz?

Tesekkürler
 
Üst