Koşullu Satır Silme

Katılım
14 Aralık 2016
Mesajlar
100
Excel Vers. ve Dili
2010 VB
Altın Üyelik Bitiş Tarihi
11-11-2020
İyi günler kolay gelsin,şimdi benim hak.xlsx(boş halini linkte gönderiyorum) adında dosyam var.bu dosyamdan birsürü var içi dolu halinde.dosyada işaretlediğim mavi alanları kontrol edilecek ve boş ise o satırı komple silecek eğer mavi hücre dolu ise silmeyek.Ve bunu ayrı bir excelden makro ile yapmam lazım.Yardımcı olabilir misiniz ?(renklendirmeyi anlatabilmek için yaptım )

dosyam:
http://www.dosya.tc/server15/fhecbj/hak.xlsx.html
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Aşağıdaki kodlar ile yapabilirsiniz.

Set f = ds.getfolder("C:\Klasör") satırını düzenlemeyi unutmayın.

Sub DosyaAc_SatirSil()
Dim ds, dc, f, Uzanti
Dim xDosya As Workbook
Dim xSayfa As Worksheet
Set ds = CreateObject("Scripting.FileSystemObject")
Set f = ds.getfolder("C:\Klasör") 'Buraya dosyalarınızın bulunduğu klasör yolunu yazınız.
Set dc = f.Files
For Each dosya In dc
Uzanti = VBA.Right(dosya, 4)
If Uzanti = "xlsm" Or Uzanti = "xlsx" Or Uzanti = ".xls" Then
Set xDosya = Workbooks.Open(dosya)
Set xSayfa = xDosya.Worksheets("TADİLAT İŞLERİ")
BosSatirSil xSayfa
xDosya.Close True
End If

Next
End Sub

Sub BosSatirSil(xSayfa As Worksheet)
Dim Bak As Long
For Bak = xSayfa.Cells(xSayfa.Rows.Count, "A").End(3).Row + 1 To 1 Step -1
If IsNumeric(xSayfa.Cells(Bak, 1).Value) And xSayfa.Cells(Bak, 3).Value = "" Then
If xSayfa.Cells(Bak, 1).Value > 2 Then
xSayfa.Rows(Bak).Delete
End If
End If
Next
End Sub
 
Katılım
14 Aralık 2016
Mesajlar
100
Excel Vers. ve Dili
2010 VB
Altın Üyelik Bitiş Tarihi
11-11-2020
Set f = ds.getfolder("C:\Klasör") 'Buraya dosyalarınızın bulunduğu klasör yolunu yazınız.

bu alan yerine Application.GetOpenFilename ile kendimiz seçemez miyiz istediğimiz dosyayı ?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
O zaman "DosyaAc_SatirSil" altındaki kodları aşağıdaki ile değiştirin.

Kod:
Sub DosyaAc_SatirSil()
    Dim Dosya As String
    Dim xDosya As Workbook
    Dim xSayfa As Worksheet
    Dosya = Application.GetOpenFilename(FileFilter:="Excel Dosyası, *.xls; *.xlsx; *.xlsm")
    Set xDosya = Workbooks.Open(Dosya)
    Set xSayfa = xDosya.Worksheets("TADİLAT İŞLERİ")
    BosSatirSil xSayfa
    xDosya.Close True
End Sub
 
Son düzenleme:
Katılım
14 Aralık 2016
Mesajlar
100
Excel Vers. ve Dili
2010 VB
Altın Üyelik Bitiş Tarihi
11-11-2020
sağolun böylede çalışıyor ama MultiSelect özelliğini açtığımda hata alıyorum bütün dosyayı tek tek açmak zor oluyor
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Kod:
Sub DosyaAc_SatirSil()
    Dim Dosya() As Variant
    Dim xDosya As Workbook
    Dim xSayfa As Worksheet
    Dim Bak As Long
    Dosya = Application.GetOpenFilename(FileFilter:="Excel Dosyası, *.xls; *.xlsx; *.xlsm", MultiSelect:=True)
    For Bak = 1 To UBound(Dosya)
        Set xDosya = Workbooks.Open(Dosya(Bak))
        Set xSayfa = xDosya.Worksheets("TADİLAT İŞLERİ")
        BosSatirSil xSayfa
        xDosya.Close True
    Next
End Sub
 
Katılım
14 Aralık 2016
Mesajlar
100
Excel Vers. ve Dili
2010 VB
Altın Üyelik Bitiş Tarihi
11-11-2020
emeğiniz için teşekkür ederim çok sağolun
 
Üst