Astalavista58
Altın Üye
- Katılım
- 20 Ocak 2020
- Mesajlar
- 242
- Excel Vers. ve Dili
- Office 2016 TR 64 Bit
- Altın Üyelik Bitiş Tarihi
- 20-02-2025
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Nasıl bir yol izleyeceğimi bilemedim. Ama uğraşacağm, çok teşekkür ederim ilginiz içinMerhaba , aşağıdaki konu üzerinden verdiğim kodlar üzerinden ilerleyerek , biraz uğraşla kendinizin bunu yapabileceğine inanıyorum , ögrenmeniz açısından da adım olur sizin için..
İsme göre yeni çalışma kitabı oluşturmak
Herkese merhabalar, küçük bir talebim olacaktı. Ekteki dosyada Sayfa1’i, Sayfa2’de “A” sütununda yazan isimlerle masaüstünde yeni bir klasör oluşturarak kaydetmek istiyorum. Yardımcı olabilirseniz çok mutlu olurumwww.excel.web.tr
Sub Main()
' Haluk - 24/03/2022
' sa4truss@gmail.com
Dim adoCN As Object, RS As Object
Dim myFolder As String, strSQL As String
Const adOpenKeyset = 1
myFolder = Environ("USERPROFILE") & "\Desktop\" & "RAPORLAR"
If Dir(myFolder, vbDirectory) = "" Then MkDir myFolder
Set adoCN = CreateObject("ADODB.Connection")
Set RS = CreateObject("ADODB.Recordset")
adoCN.Provider = "Microsoft.ACE.OLEDB.12.0"
adoCN.Properties("Data Source") = ThisWorkbook.FullName
adoCN.Properties("Extended Properties") = "Excel 12.0 Macro; HDR=Yes; IMEX=1"
adoCN.Open
strSQL = "Select Distinct [İL] from [Sayfa1$]"
RS.CursorType = adOpenKeyset
RS.Open strSQL, adoCN
Do Until RS.EOF
CreateFile RS(0), myFolder
RS.MoveNext
Loop
MsgBox "Dosyalar oluşturuldu !", vbInformation
RS.Close
adoCN.Close
Set RS = Nothing
Set adoCN = Nothing
End Sub
'
Sub CreateFile(fileName As String, folderName As String)
' Haluk - 24/03/2022
' sa4truss@gmail.com
Dim objConn As Object, strArgs As String, strSQL As String
Set objConn = CreateObject("ADODB.Connection")
strArgs = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _
"Readonly=True; DBQ=" & folderName & "\" & fileName & ".xlsb"
objConn.Open strArgs
strSQL = "Create Table Rapor (ADI Varchar(10), SOYADI Varchar(20), " & _
"CİNSİYET Varchar(1), YAŞ Integer, İL Varchar(20))"
objConn.Execute strSQL
strSQL = "Insert Into [Rapor$] ([ADI], [SOYADI], [CİNSİYET], [YAŞ], [İL]) " & _
"Select [ADI], [SOYADI], [CİNSİYET], [YAŞ], [İL] From [Sayfa1$] " & _
"In '' [Excel 12.0;Database=" & ThisWorkbook.FullName & "] Where [İL]= '" & fileName & "'"
objConn.Execute strSQL
objConn.Close
Set objConn = Nothing
End Sub
Aşağıdaki gibi yapılabilir..Nasıl bir yol izleyeceğimi bilemedim. Ama uğraşacağm, çok teşekkür ederim ilginiz için
Sub Farkli_Kaydet()
Dim DsyYol, i
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
DsyYol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Emr"
If Dir(DsyYol, vbDirectory) = "" Then MkDir (DsyYol)
For i = 2 To Cells(Rows.Count, 5).End(3).Row
If Cells(i, 5).Value <> "" And WorksheetFunction.CountIf(Range([E2], Cells(i, 5)), Cells(i, 5)) <= 1 Then
Sheets("Sayfa1").Copy
Range("A1:E" & Cells(Rows.Count, 5).End(3).Row).AutoFilter Field:=5, Criteria1:="<>" & Cells(i, 5)
Range("A2:E" & Cells(Rows.Count, 5).End(3).Row).SpecialCells(xlCellTypeVisible).Delete
ActiveSheet.AutoFilterMode = False
ActiveWorkbook.SaveAs DsyYol & "\" & ThisWorkbook.Sheets("Sayfa1").Cells(i, 5).Value
ActiveWorkbook.Close SaveChanges:=False
End If
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "islem tamam..."
End Sub
Merhabalar öncelikle günaydın Sayın EmrExcel16, denedim ancak sadece Kayseri isminde bir dosya oluşturuyor , dosyayı açınca içinde tüm veriler varAşağıdaki gibi yapılabilir..
Kod:Sub Farkli_Kaydet() Dim DsyYol, i Application.ScreenUpdating = False Application.DisplayAlerts = False On Error Resume Next DsyYol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Emr" If Dir(DsyYol, vbDirectory) = "" Then MkDir (DsyYol) For i = 2 To Cells(Rows.Count, 5).End(3).Row If Cells(i, 5).Value <> "" And WorksheetFunction.CountIf(Range([E2], Cells(i, 5)), Cells(i, 5)) <= 1 Then Sheets("Sayfa1").Copy Range("A1:E" & Cells(Rows.Count, 5).End(3).Row).AutoFilter Field:=5, Criteria1:="<>" & Cells(i, 5) Range("A2:E" & Cells(Rows.Count, 5).End(3).Row).SpecialCells(xlCellTypeVisible).Delete ActiveSheet.AutoFilterMode = False ActiveWorkbook.SaveAs DsyYol & "\" & ThisWorkbook.Sheets("Sayfa1").Cells(i, 5).Value ActiveWorkbook.Close SaveChanges:=False End If Next Application.DisplayAlerts = True Application.ScreenUpdating = True MsgBox "islem tamam..." End Sub
Sub Farkli_Kaydet()
Dim DsyYol, i
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
DsyYol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\Emr"
If Dir(DsyYol, vbDirectory) = "" Then MkDir (DsyYol)
Set Syf = ThisWorkbook.Sheets("Sayfa1")
For i = 2 To Syf.Cells(Rows.Count, 5).End(3).Row
If Syf.Cells(i, 5).Value <> "" And WorksheetFunction.CountIf(Syf.Range([E2], Syf.Cells(i, 5)), Syf.Cells(i, 5)) <= 1 Then
Sheets("Sayfa1").Copy
ActiveSheet.Range("A1:E" & ActiveSheet.Cells(Rows.Count, 5).End(3).Row).AutoFilter Field:=5, Criteria1:="<>" & Syf.Cells(i, 5)
ActiveSheet.Range("A2:E" & ActiveSheet.Cells(Rows.Count, 5).End(3).Row).SpecialCells(xlCellTypeVisible).Delete
ActiveSheet.AutoFilterMode = False
ActiveWorkbook.SaveAs DsyYol & "\" & Syf.Cells(i, 5).Value
ActiveWorkbook.Close SaveChanges:=False
End If
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "islem tamam..."
End Sub
ADO ile yapılan alternatif aşağıda verilmiştir....
Dosyalar, masaüstünde oluşturulacak "RAPORLAR" isimli klasörün içinde oluşturulacaktır.
C#:Sub Main() ' Haluk - 24/03/2022 ' sa4truss@gmail.com Dim adoCN As Object, RS As Object Dim myFolder As String, strSQL As String Const adOpenKeyset = 1 myFolder = Environ("USERPROFILE") & "\Desktop\" & "RAPORLAR" If Dir(myFolder, vbDirectory) = "" Then MkDir myFolder Set adoCN = CreateObject("ADODB.Connection") Set RS = CreateObject("ADODB.Recordset") adoCN.Provider = "Microsoft.ACE.OLEDB.12.0" adoCN.Properties("Data Source") = ThisWorkbook.FullName adoCN.Properties("Extended Properties") = "Excel 12.0 Macro; HDR=Yes; IMEX=1" adoCN.Open strSQL = "Select Distinct [İL] from [Sayfa1$]" RS.CursorType = adOpenKeyset RS.Open strSQL, adoCN Do Until RS.EOF CreateFile RS(0), myFolder RS.MoveNext Loop MsgBox "Dosyalar oluşturuldu !", vbInformation RS.Close adoCN.Close Set RS = Nothing Set adoCN = Nothing End Sub ' Sub CreateFile(fileName As String, folderName As String) ' Haluk - 24/03/2022 ' sa4truss@gmail.com Dim objConn As Object, strArgs As String, strSQL As String Set objConn = CreateObject("ADODB.Connection") strArgs = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};" & _ "Readonly=True; DBQ=" & folderName & "\" & fileName & ".xlsb" objConn.Open strArgs strSQL = "Create Table Rapor (ADI Varchar(10), SOYADI Varchar(20), " & _ "CİNSİYET Varchar(1), YAŞ Integer, İL Varchar(20))" objConn.Execute strSQL strSQL = "Insert Into [Rapor$] ([ADI], [SOYADI], [CİNSİYET], [YAŞ], [İL]) " & _ "Select [ADI], [SOYADI], [CİNSİYET], [YAŞ], [İL] From [Sayfa1$] " & _ "In '' [Excel 12.0;Database=" & ThisWorkbook.FullName & "] Where [İL]= '" & fileName & "'" objConn.Execute strSQL objConn.Close Set objConn = Nothing End Sub
.
If i Mod 10 = 0 Then Application.Wait (Now + TimeValue("0:00:03"))