• DİKKAT

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

Klasördeki son dosya numarasından 1 fazla numara ile dosya kaydı

Katılım
6 Ocak 2012
Mesajlar
56
Excel Vers. ve Dili
2007
Merhaba benim D harddiskimdeki bir klasörde şablon bir excellim var. Bu klöserde şablondan oluşturulmuş 800 civarı dosya var. Ben her seferinde şablonu açtıktan sonra klasördeki son numaradan sonraki numarayı verip kaydediyorum. Tabii dosyanın içinde değişiklikleri yaptıktan sonra. Klasördeki son numaradan sonraki numayı dosya adına verecek bir fonksiyon var mıdır? Ya da bu makro ile mi yapılır? Örnek olarak "şablon form" dosyasını açınca 5800 nolu var olan son dosyadan 1 fazla dosya adı versin. Yani 5801 olarak kaydetsin.
 
Merhaba benim D harddiskimdeki bir klasörde şablon bir excellim var. Bu klöserde şablondan oluşturulmuş 800 civarı dosya var. Ben her seferinde şablonu açtıktan sonra klasördeki son numaradan sonraki numarayı verip kaydediyorum. Tabii dosyanın içinde değişiklikleri yaptıktan sonra. Klasördeki son numaradan sonraki numayı dosya adına verecek bir fonksiyon var mıdır? Ya da bu makro ile mi yapılır? Örnek olarak "şablon form" dosyasını açınca 5800 nolu var olan son dosyadan 1 fazla dosya adı versin. Yani 5801 olarak kaydetsin.

Dosya yolunuzu kendiniz belirleyin

kod:

Kod:
Sub dosya_klasor_sayısı()

Yol = "D:\örnek\"
MsgBox CreateObject("Scripting.FileSystemObject").GetFolder(Yol).SubFolders.Count & Chr(10) & " Adet klasör var"
MsgBox CreateObject("Scripting.FileSystemObject").GetFolder(Yol).Files.Count & Chr(10) & " Adet dosya var"
End Sub
 
Bu kod sadece kaç adet klasör ve dosya olduğunu söylüyor. Ben ise aynı klasörde bulunan sablon form dosyasını 5800 nolu var olan son dosyadan 1 fazla dosya adı versin. Yani 5801 olarak kaydetsin istiyorum. Bu fonksiyonlarla yapılabilirse daha iyi olur. Çünkü fonksiyonlardan biraz anlıyorum ama kod yazmadan hiç anlamıyorum.
 
Bu kod sadece kaç adet klasör ve dosya olduğunu söylüyor. Ben ise aynı klasörde bulunan sablon form dosyasını 5800 nolu var olan son dosyadan 1 fazla dosya adı versin. Yani 5801 olarak kaydetsin istiyorum. Bu fonksiyonlarla yapılabilirse daha iyi olur. Çünkü fonksiyonlardan biraz anlıyorum ama kod yazmadan hiç anlamıyorum.

Kayıt işlemini makro ilemi yapıyorsunuz yoksa manuel farklı kayıtet olarakmı yapıyorsunuz.?

En son dosya adını fonksiyonlarla bulunulacağını düşünmüyorum.

Aşağıdaki kod ilgili klasörün içindeki en son kayıtlı dosyayı alfabetik sıralama sonrası kendiliğinden veriyor.

Kod:
Sub dosya_klasor_sayısı()
Yol = "D:\örnek\"
For Each Dosya In CreateObject("Scripting.FileSystemObject").GetFolder(Yol).Files
deger = Dosya.Name
Next
MsgBox deger
End Sub
 
Tekrar Merhaba
Evet son dosya numarasını bana bir pencerede veriyor. Ama benim sorunum son dosya numarasını öğrenmek değil. Klasördeki son dosya numarası olan 5800'ü bulduktan sonra (1 hafta on gün sonra dosya son dosya numarası 5900 de olabilir.) açmış olduğum şablon dosyasında makroyu çalıştırınca 5801 dosya adıyla kaydetsin.
İlginiz için şimdiden teşekkür ederim.
 
Tekrar Merhaba
Evet son dosya numarasını bana bir pencerede veriyor. Ama benim sorunum son dosya numarasını öğrenmek değil. Klasördeki son dosya numarası olan 5800'ü bulduktan sonra (1 hafta on gün sonra dosya son dosya numarası 5900 de olabilir.) açmış olduğum şablon dosyasında makroyu çalıştırınca 5801 dosya adıyla kaydetsin.
İlginiz için şimdiden teşekkür ederim.

Böyle şey olurmu.?

Ya kodla mevcut durumu kontrol edeceksiniz. Yada kayıt yaparken mevcut durumu her hangi bir hücreye yazacaksınızki bir sonraki kayıtda o hücreden referans alınacak.

Diğer türlü kayıtlı dosyaları bulmak işi olmaz.

örnek 5800 dosyayı buldunuz diyelim yeni kayıtta 5801 kayıt yapabilmeniz için 5800 adlı dosyayı kayıt yaparken bir hücreyede yazmak gerekiyor.
Daha sonra yeni kayıtta 5801 olması için daha önce kayıt yapılırken bir hücreye yazdığımız değeri referans almak gerekir.
 
Son 2 aydır gece 3-4'lere kadar bir form hazırlamaya çalışıyorum. Ama bu form sayesinde excell bilgim 2-3 kat arttı. Şimdi şöyle mi yapmak gerekiyor? Excell'in sonuna kayıt diye bir sheet açayım. Bu sheet'te o anki dosyaları listelesin son numarayı kaydetsin. Kayıttan sonra da o sheet'deki tüm veriyi silsin ki her dosya boyutu büyümesin. Ya da kayıt için bir excell dosyası kaydedeyim bunu database olarak kullansın ve bu dosyada da yeni bir dosya kaydedildikçe eklensinki hep son numara bilinsin. Aslında ben size hazırladığım yeni formu buraya yükleyeyim. Bu formların listesinin olduğu iş takip listesi dosyasını da yükleyeyim.
 

Ekli dosyalar

Siz Üretim_Formu_ Şablon.xls dosyasınımı farklı kayıt ediyorsunuz.

Örnek olarak Üretim_Formu_ Şablon.xls dosyasını farklı bir klasörün içine 5800.xls olarakmı kayıt ediyorsunuz.
 
Üretim formları diye bir klasörüm var. Bu klasörün için 00001'den başlayıp 05800'e kadar üretim için yazılmış formlarım var. Ayrıca Üretim_Formu_ Şablon.xls dosyam da bu klasörde. Yeni bir iş için form açmam gerektiğinde şablonu açıp gerekli yerleri doldurduktan sonra klasördeki son numaranın üzerine tıklayıp son rakamı 1 arttırarak farklı kaydediyorum. Klasör çok dolduğu için kendisi son numarayı bulup kaydetsin istiyorum. Önceki form çok daha basitti. Şimdi bana kolaylık sağlaması için daha otomatik bir form hazırlamak istedim. Formda daha yapacak çok işim var.
 
Aşağıdaki kodu denermisiniz. ( Sayin Halit3'ün kodlarına küçük bir ekleme yaptım.)

Kod:
Sub yeni_dosya_numarasi()
Yol = "D:\ORNEK\"
For Each Dosya In CreateObject("Scripting.FileSystemObject").GetFolder(Yol).Files
deger = Dosya.Name
Next
YENIDOSYA = Trim(Str(Val(deger) + 1)) & ".xls"
MsgBox YENIDOSYA
End Sub
 
Üretim formları diye bir klasörüm var. Bu klasörün için 00001'den başlayıp 05800'e kadar üretim için yazılmış formlarım var. Ayrıca Üretim_Formu_ Şablon.xls dosyam da bu klasörde. Yeni bir iş için form açmam gerektiğinde şablonu açıp gerekli yerleri doldurduktan sonra klasördeki son numaranın üzerine tıklayıp son rakamı 1 arttırarak farklı kaydediyorum. Klasör çok dolduğu için kendisi son numarayı bulup kaydetsin istiyorum. Önceki form çok daha basitti. Şimdi bana kolaylık sağlaması için daha otomatik bir form hazırlamak istedim. Formda daha yapacak çok işim var.

Herhalde internete günde bir kez ve cok kısa aralıklarla giriyorsunuz.
Ben konu başlığını unuttum nerdeyse böyle bir çözüm buldum umarım işinizi görür.

kod:

Kod:
Sub AKTİF_DOSYAYI_YEDEKLE2()
Dim Yedek_Dosya_Adı As String, Kayıt_Yeri As String
Dim Klasor As String, uzanti As String, dosya As String
deger = Cells(1, "ar").Value
If deger = "" Then MsgBox "dosya isimi yazılı değil AR1 hücresine kayıt edilecek dosya adını yazınız": Exit Sub
 
Cells(1, "ar").Value = ""
Klasor = "D:\Yedek"
uzanti = Right(ThisWorkbook.Name, InStr(1, StrReverse(ThisWorkbook.Name), ".", vbTextCompare) - 1)
dosya = Mid(ThisWorkbook.Name, 1, Len(ThisWorkbook.Name) - Len(uzanti) - 1)
ActiveWorkbook.Save
Application.DisplayAlerts = False
Yedek_Dosya_Adı = deger & "." & uzanti  'dosya & Format(Now, " dd_mm_yyyy_hh_nn_ss") & "." & uzanti
Kayıt_Yeri = Klasor & "\" & Yedek_Dosya_Adı
 
If CreateObject("Scripting.FileSystemObject").FileExists(Kayıt_Yeri) = True Then
MsgBox deger & "." & uzanti & Chr(10) & "Bu isimde bir dosya var AR1 hücresine kayıt edilecek dosya adını yazınız"
Cells(1, "ar").Value = deger
Exit Sub
End If
 
If CreateObject("Scripting.FileSystemObject").FolderExists(Klasor) = False Then
MkDir Klasor
End If
CreateObject("Scripting.FileSystemObject").CopyFile ThisWorkbook.FullName, Kayıt_Yeri
Cells(1, "ar").Value = deger + 1
MsgBox "Dosyanız aşağıdaki isimle yedeklenmiştir." & Chr(10) & Chr(10) & Kayıt_Yeri, vbInformation, "U Y A R I "
Application.DisplayAlerts = True
End Sub
 

Ekli dosyalar

Açıkçası hem evde hem de işte internet var. Ama işte matbaa yoğunluğundan zaman ayıramıyorum. Kendim grafikerim. Sonra kendi işyerimi kardeşimle açtık. Hiç bir kimse birşey sormaz veya müşteriler aramazsa fırsat bulabiliyorum. Evde ise çok tatlı 2 yaşında bir çocuğum var. Baba, baba diye işten gelince yanımdan ayrılmıyor. Ancak o uyuduktan sonra yorgun değilsem girebiliyorum. Bu formda işimizi kolaylaştıracağı için 2 aydır zaman ayırmaya çalışıyorum. Kimseden de ben zaman ve emek harcamadan böyle bir şey istemek istemiyorum. Aynı zamanda yeni birşeyler öğrenmek de beni mutlu ediyor. Ama daha yapacak çok şey var.
Neyse kodları yapıştırıp tekrar deneyeceğim. Emeğin ve zamanın için şimdiden teşekkürler. Beceremezsem tekrar buraya yazarım.
 
Elinize sağlık gayet güzel işliyor. Makroyu çalıştırınca şablonda da AR1 hücresinde no artıyor. Şablon dosyasını açar açmaz hemen bu makroyu çalıştırmam gerekiyor. Çalıştırdığımda klasörde makro ile yeni yaratılan 5800 nolu dosyayı bulup açmalıyım ki bilgileri doldurayım hem de açtığımda AJ1 hücresindeki fonksiyon ile nosu çıksın. Üretim için nolu print alabileyim. Biraz karışık anlattım galiba. İşin özü makroyu çalıştırdığımda şablon dosyası kapanıp 5800 nolu dosya açık kalsın. Farklı kaydet yapmış gibi.
 
Elinize sağlık gayet güzel işliyor. Makroyu çalıştırınca şablonda da AR1 hücresinde no artıyor. Şablon dosyasını açar açmaz hemen bu makroyu çalıştırmam gerekiyor. Çalıştırdığımda klasörde makro ile yeni yaratılan 5800 nolu dosyayı bulup açmalıyım ki bilgileri doldurayım hem de açtığımda AJ1 hücresindeki fonksiyon ile nosu çıksın. Üretim için nolu print alabileyim. Biraz karışık anlattım galiba. İşin özü makroyu çalıştırdığımda şablon dosyası kapanıp 5800 nolu dosya açık kalsın. Farklı kaydet yapmış gibi.

Üretim_Formu_ Şablon.xls dosyasında zaten en son veriler mevcut tekrardan 5800.xls dosyasını açmanıza gerek yok
 
AJ hücresindeki noyu "=PARÇAAL(HÜCRE("DosyaAdı");MBUL("[";HÜCRE("DosyaAdı");1)+1;MBUL("]";HÜCRE("DosyaAdı");1)-MBUL("[";HÜCRE("DosyaAdı"))-5)" fonksiyonu ile yazdırdığım için sizin yazdığınız makroyu çalıştırınca no'su çıkıyor. Ama fişi üretime verebilmem için bütün bilgiler doldurulmuş, nolu çıkış almam gerekiyor. O yüzden dosyayı tekrar açmam gerekiyor.
 
Merhaba benim D harddiskimdeki bir klasörde şablon bir excellim var. Bu klöserde şablondan oluşturulmuş 800 civarı dosya var. Ben her seferinde şablonu açtıktan sonra klasördeki son numaradan sonraki numarayı verip kaydediyorum. Tabii dosyanın içinde değişiklikleri yaptıktan sonra. Klasördeki son numaradan sonraki numayı dosya adına verecek bir fonksiyon var mıdır? Ya da bu makro ile mi yapılır? Örnek olarak "şablon form" dosyasını açınca 5800 nolu var olan son dosyadan 1 fazla dosya adı versin. Yani 5801 olarak kaydetsin.

AJ hücresindeki noyu "=PARÇAAL(HÜCRE("DosyaAdı");MBUL("[";HÜCRE("DosyaAdı");1)+1;MBUL("]";HÜCRE("DosyaAdı");1)-MBUL("[";HÜCRE("DosyaAdı"))-5)" fonksiyonu ile yazdırdığım için sizin yazdığınız makroyu çalıştırınca no'su çıkıyor. Ama fişi üretime verebilmem için bütün bilgiler doldurulmuş, nolu çıkış almam gerekiyor. O yüzden dosyayı tekrar açmam gerekiyor.

Ben sizi anlıyamıyorum 1 nolu mesajınızda klasördeki son dosya numarasından bir fazla dosya numarasını versin diyordunuz şimdide bu dosyanı açılmasını istiyorsunuz.

Yukarıdaki mesajımda bahsetmiştim Üretim_Formu_ Şablon.xls dosyasında zaten en son veriler mevcut tekrardan 5800.xls dosyasını açmanıza gerek yok

Yani 5800.xls kayıtlı dosya ile Üretim_Formu_ Şablon.xls dosyanın hepsi tamamen aynı niye israrcısınız anlıyamadum.

Bundan sonra ben bu konuda başka mesaj yazmıyacağım. iyi çalışmalar
 
(Merhaba benim D harddiskimdeki bir klasörde şablon bir excellim var. Bu klöserde şablondan oluşturulmuş 800 civarı dosya var. Ben her seferinde şablonu açtıktan sonra klasördeki son numaradan sonraki numarayı verip kaydediyorum. Tabii dosyanın içinde değişiklikleri yaptıktan sonra. Klasördeki son numaradan sonraki numayı dosya adına verecek bir fonksiyon var mıdır? Ya da bu makro ile mi yapılır? Örnek olarak "şablon form" dosyasını açınca 5800 nolu var olan son dosyadan 1 fazla dosya adı versin. Yani 5801 olarak kaydetsin.)

diye yazdığımda 5801 nolu dosyanın save as ile kaydedileceğini 5801 nolu dosyanın açık olacağını düşünmüştüm. Son mesajımda da yazdığım gibi üretime AJ2 hücresinde hesaplanan no ile print almam lazım. Oysa makroyu çalıştırdığımda AJ2 hücresine no yazılıyor. Makroyu çalıştırmadan yani numarasız print alamam. Bu dosyayı print almam için ya tekrar açıp print demem lazım. Ya da kodun sonuna print veya open olması lazım. Bu haliyle benim işimi kolaylaştırmıyor. Otomatik numara verdirmeden önce elimle son noyu yazıyor sonra print alıyordum.

Yine de yardımlarınız için teşekkürler. İlk defa excell'de kod bölümüne girmiş oldum. Yeni birşeyler öğrenmiş oldum.
 
Geri
Üst