• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Konumu Belli Olmayan Dosyayı Ara

Katılım
19 Eylül 2012
Mesajlar
322
Excel Vers. ve Dili
2010 türkçe
Merhaba değerli hocalarım
Konumu belli olmayan MALZEME isimli Excel dosyasını pc de aratıp silebilir miyim? Fakat bu işlemi yaparken aynı isimle açık olan exceli hariç tutması gerekiyor.

Nedeni; Kullanıcı kişi MALZEME isimli exceli açıp üzerinde çalışıyor ve kapatıyor. Ama daha sonra başka konumlara kopyaladığı MALZEME isimli exceli açıyor ve girdiğim veriler kaybolmuş diyor. Söz konusu kullanıcılara sürekli bunu izah etmekten sıkıldım. Umarım anlatabilmişimdir.

Şimdiden teşekkür ederim.
 
Söz konusu dosya herhangi bir konumda ve herhangi bir isimli klasör içinde olabilir. Tüm pc yi tarayıp bulması gerekiyor.
 
Bu dosya exe olarak yapıldı şifre parametresi ile dosyanın yanına (sifre kayit.1st) bu isimde bir dosya oluşturuyor bu dosyayı silerseniz proğram çalışmaz

 
Kıymetli hocalarım; konu hala açık durumdadır. Yokmu bunun çözümü
 
4 nolu mesajınızdan sonra 5 nolu mesaj yazdım oradaki dosyayı indirip denedinizmi?
not bilgisayarınızda d sürücüsüne yeni bir dosya ekleyiniz ismi türkçe kalekter içermesin yani aksanlı harfler olmasın aratın bakalım bulacakmı.
5 nolu mesajdaki dosya denendi ve çalışıyor.
 
4 nolu mesajınızdan sonra 5 nolu mesaj yazdım oradaki dosyayı indirip denedinizmi?
not bilgisayarınızda d sürücüsüne yeni bir dosya ekleyiniz ismi türkçe kalekter içermesin yani aksanlı harfler olmasın aratın bakalım bulacakmı.
5 nolu mesajdaki dosya denendi ve çalışıyor.

Değerli Halit hocam ilginiz için çok teşekkür ederim. fakat ben söz konusu işlemi makro ile yapmak istiyorum. Amacım şu; Kullanıcı kişi MALZEME isimli exceli açıp üzerinde çalışıyor ve kapatıyor. Ama daha sonra başka konumlara kopyaladığı MALZEME isimli exceli yanlışlıkla açıyor üzerinde çalışıyor ve daha sonra başka bir konuma kopyaladığı MALZEME isimli dosyayı açtığında girdiğim veriler kaybolmuş diyor. Söz konusu kullanıcılara sürekli bunu izah etmekten sıkıldım. Kullanıcı MALZEME isimli exceli sadece tek nüsha olarak kullansın istiyorum. Yani istediğim makro kodunun görevi; asıl olan MALZEME.xlsb dosyası açılırken başka konumlara kopyalanan MALZEME.xlsb isimli excelleri arayıp bulsun ve silsin.
Değerli hocam yardımcı olursanız çok çok sevinirim.
 
Sadece bir fikir;

Bu işlem yerine dosyanın kısayolunu kullanıcılarla paylaşsanız daha kolay olmaz mı?
 
4 Nolu mesajdaki dosyayı indirdiğinizi kubul ediyorum

Yapılması gerekenler:
1-(FORM AÇ) komut düğmesine dıkla
2-kahverengi text nesnesinden (Hepsi yazıyor) aradığır dosya adını ve ya dosya adında içinde geçen bir gelime yaz.
3-(Klasörden Bul) komut düğmesini tıkla
4-Açılan liste kutusundan dosyanın bulunduğu sürüçüyü tıkla
5-Bulunan sonuçlar yeşil liste kutusuna çıkacaktır
6-bulunan sonuçlarla ilgili seçmiş olduğun dosyayı (Seçili dosyayı Sil) komut düğmesİne tıklamanız yeterli olacaktır.
 
Bu bir vbscript kodudur. Aşina iseniz kullanımın kolay olduğunu göreceksiniz.
Vbs hakkında bilginiz yoksa bir txt dosya açıp kodu bu txt dosyaya yapıştırın ve uzantısını vbs olarak değiştirin.
Yani txt olan uzantı vbs olsun.
Sonra üzerine çift tıklayın kısıtlama yoksa çalışacaktır.
Program bilgisayarda nerede olursa olsun MALZEME.xlbs adlı dosyayı bulur ve masaüstünde Backup adlı klasöre kopyalar.
Orjinal konumdaki dosyayı siler.
Dosyanızın güvenliği açısından ilk denemede silme işlemini dilerseniz pasif yapın. Sorumluluk kabul edilmez.

Kod:
Dim objFSO,WshShell
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")

Set objFSO = CreateObject("Scripting.FileSystemObject")

Dim strFolderTest
strFolderTest = strDesktop & "\Backup"

If objFSO.FolderExists(strFolderTest) = False Then
  
    On Error Resume Next
    objFSO.CreateFolder(strFolderTest)
    If Err.Number <> 0 Then
        If Err.Number = 53 Then
            Err.Clear
            WScript.quit(1)
        End If
    End If
    
Else


End If



strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colFiles = objWMIService. _
    ExecQuery("Select * from CIM_DataFile where Extension = 'xlsb'")

Sira = 1
For Each objFile in colFiles

 If InStr(1, objFile.Name, "MALZEME",vbBinaryCompare) >1 then

    strCopy =  strFolderTest & "\" & objFile.FileName & "_" & Sira & "." & objFile.Extension
    objFile.Copy(strCopy)
    objFile.Delete
  Sira = Sira + 1
   End If
Next
msgbox("Bitti")
 
Bu bir vbscript kodudur. Aşina iseniz kullanımın kolay olduğunu göreceksiniz.
Vbs hakkında bilginiz yoksa bir txt dosya açıp kodu bu txt dosyaya yapıştırın ve uzantısını vbs olarak değiştirin.
Yani txt olan uzantı vbs olsun.
Sonra üzerine çift tıklayın kısıtlama yoksa çalışacaktır.
Program bilgisayarda nerede olursa olsun MALZEME.xlbs adlı dosyayı bulur ve masaüstünde Backup adlı klasöre kopyalar.
Orjinal konumdaki dosyayı siler.
Dosyanızın güvenliği açısından ilk denemede silme işlemini dilerseniz pasif yapın. Sorumluluk kabul edilmez.

Kod:
Dim objFSO,WshShell
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("Desktop")

Set objFSO = CreateObject("Scripting.FileSystemObject")

Dim strFolderTest
strFolderTest = strDesktop & "\Backup"

If objFSO.FolderExists(strFolderTest) = False Then
 
    On Error Resume Next
    objFSO.CreateFolder(strFolderTest)
    If Err.Number <> 0 Then
        If Err.Number = 53 Then
            Err.Clear
            WScript.quit(1)
        End If
    End If
   
Else


End If



strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colFiles = objWMIService. _
    ExecQuery("Select * from CIM_DataFile where Extension = 'xlsb'")

Sira = 1
For Each objFile in colFiles

If InStr(1, objFile.Name, "MALZEME",vbBinaryCompare) >1 then

    strCopy =  strFolderTest & "\" & objFile.FileName & "_" & Sira & "." & objFile.Extension
    objFile.Copy(strCopy)
    objFile.Delete
  Sira = Sira + 1
   End If
Next
msgbox("Bitti")


hocam bunu vba makro kodu ile yapabilir miyiz? kullanıcının komut dosyasını çalıştırıp çalıştırmayacağını bilemiyorum.
 
merhaba,
Kullanıcıların kontrol edilemediği noktada benim uygulamam şöyle olurdu;

boş bir dosyaya olması gereken sabit yoldaki MALZEME dosyasını açıp, boş dosyayı kapatan makro ile kullanıcının yanlış dosyayı açmasını engellerdim.

kodu kendinize göre uyarlayabilirsiniz.

Kod:
Option Explicit

Private Sub Workbook_Open()

Dim wb As String
Dim wb1 As String

wb = "C:\Users\...\MALZEME.xlsb" 'dosya yolunu kendinize göre düzenleyin
wb1 = "C:\Users\...\Book1.xlsm" 'dosya yolunu kendinize göre düzenleyin

Workbooks.Open wb

Workbooks("Book1").Activate

'ActiveWorkbook.Close SaveChanges:=False ' düzenleme sonrası baştaki tırnak işaretini kaldırın


End Sub
 

Ekli dosyalar

merhaba,
Kullanıcıların kontrol edilemediği noktada benim uygulamam şöyle olurdu;

boş bir dosyaya olması gereken sabit yoldaki MALZEME dosyasını açıp, boş dosyayı kapatan makro ile kullanıcının yanlış dosyayı açmasını engellerdim.

kodu kendinize göre uyarlayabilirsiniz.

Kod:
Option Explicit

Private Sub Workbook_Open()

Dim wb As String
Dim wb1 As String

wb = "C:\Users\...\MALZEME.xlsb" 'dosya yolunu kendinize göre düzenleyin
wb1 = "C:\Users\...\Book1.xlsm" 'dosya yolunu kendinize göre düzenleyin

Workbooks.Open wb

Workbooks("Book1").Activate

'ActiveWorkbook.Close SaveChanges:=False ' düzenleme sonrası baştaki tırnak işaretini kaldırın


End Sub

Hocam galiba yanlış anladınız. Şöyle izah edeyim; kullanıcının çalışması gereken dosya masa üstünde ÇALIŞMA adlı klasördeki MALZEME.xlsb adlı exceldir. Fakat kullanıcı yedek olsun diye bu dosyayı D sürücüsünde ismini bilmediğimiz bir klasör içine kopyalamış. Hatta masa üstünde başka bir klasör daha oluşturmuş ve onun içine de kopyalamış bulunmaktadır.

Kullanıcı Pazartesi günü masa üstünde ÇALIŞMA adlı klasördeki MALZEME.xlsb adlı exceli açıp malzeme kaydı girmiştir.
Kullanıcı Salı günü bu defa D sürücüsünde ismini bilmediğimiz bir klasör içine kopyaladığı MALZEME.xlsb adlı excel dosyasını açmış ve dünkü kaydettiği verilerinin olmadığını fark ederek beni arayıp verilerim gitti diyor. Araştırıyoruz bakıyoruz ki kullanıcı bir gün başka öteki gün başka dosyada çalışıyor ve yaptığı hatanın farkında olmadan programı kötülüyor.

Bu hata bir çok kullanıcı tarafından sık sık yapılmaktadır. Şimdi yapmak istediğim şu: Kullanıcı masa üstünde ÇALIŞMA adlı klasördeki MALZEME.xlsb adlı dosyayı açtığında kod devreye girsin ve açık olan dosya hariç olmak kaydıyla bilgisayarda aynı isimle başka konumlara kopyalanmış olan MALZEME.xlsb adlı excel dosyalarını silsin.
 
Resimde gösterdiğim üç aşamalı işlemi yapın
3 aşamada D sürücüsünü seçin
not: Sonuçları buraya en kısa zamanda yazınki emek boşuna gitmesin.Yeni Bit Eşlem Resmi2.jpg
 
Resimde gösterdiğim üç aşamalı işlemi yapın
3 aşamada D sürücüsünü seçin
not: Sonuçları buraya en kısa zamanda yazınki emek boşuna gitmesin.Ekli dosyayı görüntüle 239759

Sayın Hocam ilgi ve alakanız için çok teşekkür ederim. Bahsettiğiniz şekilde arama yaptım. D sürücüsünde aranan dosyayı hemen buluyor. Hatta aranan dosya yoksa hemen sonucunu söylüyor. Yani D sürücüsü için kod tam ve hızlı çalışıyor. Ancak bulunan dosyayı silme butonu çalışmıyor.

Fakat, aynı aramayı C sürücüsünü seçip yapıyorum ama sonsuz döngüye girmişçesine bir türlü dosyayı bulup işlemi bitiremiyor. Hatta aranan dosya belirtilen konumda yoksa bile dosya bulunamadı mesajıyla işlemi bitiremiyor ve sürekli dönüyor.
 
Dosyayı yeniden güncelledim d sürücüsündeki dosyaları buluyor silme işini de yapıyor. c sürücüsünün kapasitesi çok büyük olmalı

 
hocam bunu vba makro kodu ile yapabilir miyiz? kullanıcının komut dosyasını çalıştırıp çalıştırmayacağını bilemiyorum

Dosyanız aşağıdaki linktedir.

Dosya_Arama_Kisa.rar

Not : 2. Alternatif tüm "*MALZEME*" içeren dosyaları etkileyeceği için dikkatli kullanılmalıdır.
 
Geri
Üst