filtreleme ve güncelleme hk.

Katılım
3 Eylül 2024
Mesajlar
3
Excel Vers. ve Dili
Office 365 64bit
Herkese merhabalar,
Şirketimizde kullanılmakta olan bir excel dosyası mevcut. Bu dosyada günlük seyahat, taksi talepleri gibi olayları form formatında doldurarak otomatik (xlSheetVeryHidden) olarak gizlenmiş bir sheet sayfasına kayıt edilmekte. Gün sonundada Modüle girip ekran görüntüsü alarak mail atmaktalar.
Zaman geçtikçe gün içerisinde yapılan veri girişleri arttığından sürekli sürekli ekran görüntüleri almakla ve bunu mail olarak göndermekle uğraşılmakta.

Yönetimin talebi üzerine bu sheet dosyasını açıp, kolay bir şekilde kopyalayıp mail atılması istenilmekte.
Şöyle bir sıkıntı var yapılan dosya pamuk ipliğine bağlı gibi, ufacık bir şeyde modüller ve makrolar bozulmakta.

Tablo olarak kayıt edip filtreleme yaptığımda ise, yeni eklenen verilerin hiç biri gözükmemekte yada sheet hata verip çalışmamakta.
Hata vermeden farklı bir sheet sayfasına bu verileri nasıl çekebilirim?
Hem personelin verilere zarar vermemesi için hemde işlerini kolaylaştırabilmek için ne yapmam gerekiyor.
Yardımlarınızı ve önerilerinizi rica ediyorum.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,444
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Gün sonundada Modüle girip ekran görüntüsü alarak mail atmaktalar.
Bunun yerine form bir tuş ile dokunulmadan da mail olarak atılabilir. xlveryhidden ayarı olan bir sayfaya girerek ekran goruntusu almanın mantığı yok bu şekilde data manipule edilebilir. Dosyanız ozel değilse bir dış servera yukleyip linli sorunuza ekleyin, ya da ;


1. Gizli Sayfanın Verilerini Dışa Aktarma
Gizli sayfanın verilerini düzenli olarak bir başka sayfaya kopyalamak için bir VBA (Visual Basic for Applications) makrosu kullanabilirsiniz. Bu makro, gizli sayfadaki verileri kopyalayıp, belirlediğiniz bir sayfaya yapıştırabilir. İşte basit bir örnek makro:
  1. Excel'i açın ve Alt + F11 tuşlarına basarak VBA editörünü açın.
  2. Insert menüsünden Module seçeneğini seçin ve yeni bir modül oluşturun.
  3. Aşağıdaki kodu bu modüle yapıştırın:

    Kod:
    Sub CopyHiddenSheetData()
    Dim wsHidden As Worksheet
    Dim wsDest As Worksheet
    
    ' Gizli sayfayı ve hedef sayfayı tanımlayın
    Set wsHidden = ThisWorkbook.Sheets("GizliSayfaAdı") ' Gizli sayfanızın adı
    Set wsDest = ThisWorkbook.Sheets("HedefSayfaAdı") ' Verilerin kopyalanacağı sayfanın adı
    
    ' Hedef sayfayı temizle
    wsDest.Cells.Clear
    
    ' Gizli sayfadan veri kopyala
    wsHidden.Cells.Copy Destination:=wsDest.Cells
    End Sub
  4. Kodda "GizliSayfaAdı" ve "HedefSayfaAdı" yerlerine gerçek sayfa adlarını yazın.
  5. F5 tuşuna basarak makroyu çalıştırabilirsiniz.
2. Makro Kullanarak Ekran Görüntüsü Alma ve Mail Gönderme
Makro kullanarak otomatik olarak ekran görüntüsü almak ve e-posta göndermek için şu adımları izleyebilirsiniz:
  1. Mail Gönderme Makrosu:

    Kod:
    Sub SendEmailWithAttachment()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim wsDest As Worksheet
    Dim tempFilePath As String
    
    Set wsDest = ThisWorkbook.Sheets("HedefSayfaAdı") ' Verilerin olduğu sayfa
    
    ' Geçici dosya yolu oluştur
    tempFilePath = Environ("TEMP") & "\ExportedData.xlsx"
    
    ' Verileri yeni bir dosyaya kaydet
    ThisWorkbook.SaveCopyAs tempFilePath
    
    ' Outlook nesnelerini oluştur
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    
    ' E-posta ayarlarını yap
    With OutMail
    .To = "email@example.com"
    .Subject = "Veri Raporu"
    .Body = "Günlük veri raporu ektedir."
    .Attachments.Add tempFilePath
    .Send
    End With
    
    ' Geçici dosyayı sil
    Kill tempFilePath
    
    ' Nesneleri temizle
    Set OutMail = Nothing
    Set OutApp = Nothing
    End Sub

  2. Makroyu Çalıştırma:
    • VBA editöründe yukarıdaki kodu yeni bir modül olarak ekleyin.
    • F5 tuşuna basarak makroyu çalıştırabilirsiniz. Ya da kodları bir tuşa ekleyebilirsiniz
3. Veri Güvenliğini Artırma
  • Gizli Sayfayı Kilitleyin: Gizli sayfanın yalnızca belirli kullanıcılar tarafından erişilmesini sağlamak için şifre ile koruyabilirsiniz.
  • Kullanıcıları Sınırlayın: Veri giriş sayfalarını yalnızca veri girişi için düzenleyebilen kullanıcılar için ayarlayın. Bu, yanlışlıkla verilerin silinmesini veya değiştirilmesini önler.
 
Katılım
3 Eylül 2024
Mesajlar
3
Excel Vers. ve Dili
Office 365 64bit
Bunun yerine form bir tuş ile dokunulmadan da mail olarak atılabilir. xlveryhidden ayarı olan bir sayfaya girerek ekran goruntusu almanın mantığı yok bu şekilde data manipule edilebilir. Dosyanız ozel değilse bir dış servera yukleyip linli sorunuza ekleyin, ya da ;


1. Gizli Sayfanın Verilerini Dışa Aktarma
Gizli sayfanın verilerini düzenli olarak bir başka sayfaya kopyalamak için bir VBA (Visual Basic for Applications) makrosu kullanabilirsiniz. Bu makro, gizli sayfadaki verileri kopyalayıp, belirlediğiniz bir sayfaya yapıştırabilir. İşte basit bir örnek makro:
  1. Excel'i açın ve Alt + F11 tuşlarına basarak VBA editörünü açın.
  2. Insert menüsünden Module seçeneğini seçin ve yeni bir modül oluşturun.
  3. Aşağıdaki kodu bu modüle yapıştırın:

    Kod:
    Sub CopyHiddenSheetData()
    Dim wsHidden As Worksheet
    Dim wsDest As Worksheet
    
    ' Gizli sayfayı ve hedef sayfayı tanımlayın
    Set wsHidden = ThisWorkbook.Sheets("GizliSayfaAdı") ' Gizli sayfanızın adı
    Set wsDest = ThisWorkbook.Sheets("HedefSayfaAdı") ' Verilerin kopyalanacağı sayfanın adı
    
    ' Hedef sayfayı temizle
    wsDest.Cells.Clear
    
    ' Gizli sayfadan veri kopyala
    wsHidden.Cells.Copy Destination:=wsDest.Cells
    End Sub
  4. Kodda "GizliSayfaAdı" ve "HedefSayfaAdı" yerlerine gerçek sayfa adlarını yazın.
  5. F5 tuşuna basarak makroyu çalıştırabilirsiniz.
2. Makro Kullanarak Ekran Görüntüsü Alma ve Mail Gönderme
Makro kullanarak otomatik olarak ekran görüntüsü almak ve e-posta göndermek için şu adımları izleyebilirsiniz:
  1. Mail Gönderme Makrosu:

    Kod:
    Sub SendEmailWithAttachment()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim wsDest As Worksheet
    Dim tempFilePath As String
    
    Set wsDest = ThisWorkbook.Sheets("HedefSayfaAdı") ' Verilerin olduğu sayfa
    
    ' Geçici dosya yolu oluştur
    tempFilePath = Environ("TEMP") & "\ExportedData.xlsx"
    
    ' Verileri yeni bir dosyaya kaydet
    ThisWorkbook.SaveCopyAs tempFilePath
    
    ' Outlook nesnelerini oluştur
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    
    ' E-posta ayarlarını yap
    With OutMail
    .To = "email@example.com"
    .Subject = "Veri Raporu"
    .Body = "Günlük veri raporu ektedir."
    .Attachments.Add tempFilePath
    .Send
    End With
    
    ' Geçici dosyayı sil
    Kill tempFilePath
    
    ' Nesneleri temizle
    Set OutMail = Nothing
    Set OutApp = Nothing
    End Sub

  2. Makroyu Çalıştırma:
    • VBA editöründe yukarıdaki kodu yeni bir modül olarak ekleyin.
    • F5 tuşuna basarak makroyu çalıştırabilirsiniz. Ya da kodları bir tuşa ekleyebilirsiniz
3. Veri Güvenliğini Artırma
  • Gizli Sayfayı Kilitleyin: Gizli sayfanın yalnızca belirli kullanıcılar tarafından erişilmesini sağlamak için şifre ile koruyabilirsiniz.
  • Kullanıcıları Sınırlayın: Veri giriş sayfalarını yalnızca veri girişi için düzenleyebilen kullanıcılar için ayarlayın. Bu, yanlışlıkla verilerin silinmesini veya değiştirilmesini önler.

ekran görüntüsü ve verilerin girisi yapıldığı sayfa

Öncelikle geri dönüş yaptığınız ve tavsiyeleriniz için çok teşekkürler.
Bütün her şey sayfadan görüntü alınmasıyla başlıyor.

Bu ekranda bahsettiğim bilgilerin girildiği , görüntüleme yaptıkları ve ekran görüntüsü alıp gönderdikleri ekran.
Burada yapılan her işlem "Sheet1" diye arka planda gizli sayfaya kayıt edilmekte.

Müdüriyet benden bu sayfanın açmalarını istedi fakat personelin bu ekranda yanlış bir işlem yapması durumunda direk veri girişi yaptıkları modül bozuluyor.

Konuya çok hakim olamadığımdan ve yaptığım araştırmalar sonrasında "Bağlantılı Yapıştır(B)" seçeneğini kullanarak başka sayfaya taşıdım.
Bu seferde 10bin satırlık veri excel dosyasında şişme yapmasına, donmasına ve excel dosyasının hata vermesine sebebiyet verdi.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,444
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Oncelikle profilinizde office versiyonunuzu tam yazmanız çözüm mudahalelerinde versiyona sahip ya da bilen kişilerce mudahale imkanı verir:
Bende office 2010 pro tr var ve bendeki sürümle 365 belki de ingilizce versiyona çozum uretmeyebilir ya da alt ust surum olanaklar farkı hata verebilir ve cozum için de başa donulebilir.

Kodlarla ya da sayfayla bilmeden oynamak kaçınılmaz çatışmalar ya da yanlış sonuçlara hatta düzenli yedekleme yoksa ağır hasar ve kayıplara sebep olabilir. Söylediğiniz formul kurarak bu kadar fazla satıra cozum uretmek de işlemciyi aşırı zorlayacak ve sonucta da iflasına sebep olacaktır.

Verdiğiniz resimde bir userform var ve veri girişi bununla gizli sayfaya once açarak yazıyordur ve pesinden yine gizliyordur. Xlveryhidden ayarlı sayfalar normalde gorunmez ve zorla gorunurleştirip ekran goruntusu alıp çıkmak da her zaman kapatarak olmayacaktır ve kodların akışı bozulacaktır.

Benim öngörüm o ki ; tam veriyi değil , kopya edilen bir dosyada 10 15 satır veri bırakır ve siteye yüklerseniz kodlar ve userformlar anlaşılır ve versiyonunuza göre bir ek çözüm onerilebilir. Özetle ; tüm veri işleme girmez ama hedef işlem bulunarak ve dokunmalara da gerek kalmadan başka zemine geçici olarak aktarılır ve basımdan ya da mail ile attıktan sonra da imha edilir. Bu da dosyanızda çöp veri birikmesini ve hantallaşmasını engellediği kadar bilgilerin kişisel kalmasını sağlar ve istendiğinde hedef yeniden de yetkilisi tarafından üretilebilir. Bu şekilde veri güvenliği herkese açık olmaz
 
Son düzenleme:
Üst