• DİKKAT

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

Excel Vba Klasör oluşturma ve Farklı Kaydetme makrosu (Farklı)

  • Konbuyu başlatan Konbuyu başlatan erhane
  • Başlangıç tarihi Başlangıç tarihi
Katılım
30 Aralık 2013
Mesajlar
22
Excel Vers. ve Dili
2013 pro
Arkadaşlar merhaba, aranıza yeni katıldım. Sizden bir konuda yardım istiyorum. Excel Vba da yeniyim. Bu yüzden çok uğraştım ama yapamadım.

İsteğim bir çalışma sayfasının bir hücresindeki değeri başına tarih ekleyerek yine aynı hücre değerinde bir yere klasör oluşturup içine pdf olarak kaydetmek.
Şu şekilde:
çalışma sayfası A1 deki değer "Ali kalkan"
Makro çalıştırılınca, Masaüstünde Hangi ayda isek o aya ait klasör ismi taranacak (örn: Ocak) ve yoksa oluşturulacak, ardından Bu klasör içine "dd.mm.yyyy Ali kalkan" diye bir klasör oluşturulacak ve içine pdf olarak "Ali kalkan kredi" isminde pdf formatında dosya kaydedilecek.

Bu kodda bayağı ilerledim yalnız hata kodlarının önünü alamadım.
Yardımlarınızı bekliyorum.

Teşekkür ederim.
 
pdf olarak aktif sayfanın kaydedileceğini kabul ederek aşağıdaki kodu deneyebilirsiniz.

Kod:
Sub klasorekaydet()
Set nesne = CreateObject("Scripting.FileSystemObject")
masaustuyolu = CreateObject("Wscript.Shell").SpecialFolders("Desktop")
ayadi = Format(Date, "mmmm")
klasoradi = Format(Date, "dd.mm.yyyy") & " " & [a1]
dosyaadi = [a1] & " kredi"
klasorara = nesne.FolderExists(masaustuyolu & "\" & ayadi)
If klasorara = False Then nesne.CreateFolder masaustuyolu & "\" & ayadi
nesne.CreateFolder masaustuyolu & "\" & ayadi & "\" & klasoradi

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        masaustuyolu & "\" & ayadi & "\" & klasoradi & "\" & dosyaadi & ".pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False
End Sub
 
pdf olarak aktif sayfanın kaydedileceğini kabul ederek aşağıdaki kodu deneyebilirsiniz.

Kod:
Sub klasorekaydet()
Set nesne = CreateObject("Scripting.FileSystemObject")
masaustuyolu = CreateObject("Wscript.Shell").SpecialFolders("Desktop")
ayadi = Format(Date, "mmmm")
klasoradi = Format(Date, "dd.mm.yyyy") & " " & [a1]
dosyaadi = [a1] & " kredi"
klasorara = nesne.FolderExists(masaustuyolu & "\" & ayadi)
If klasorara = False Then nesne.CreateFolder masaustuyolu & "\" & ayadi
nesne.CreateFolder masaustuyolu & "\" & ayadi & "\" & klasoradi

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        masaustuyolu & "\" & ayadi & "\" & klasoradi & "\" & dosyaadi & ".pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False
End Sub

Merhaba Levent Bey,

Aynı işlemi desktop yerine ağ içinde bir adres vererek denediğimde olmuyor. Ağ, şirketin kullandığı ortak bir ağ . Ağ adresini yazdığımda Thispc içerisinde C sürücüsüne atıyor. Bu yazdığınız kodu ağda oluşturmak için nasıl kullanabilirim?

Teşekkürler
 
Merhaba,

Yanlış bilmiyorsam ağ üzerinde işlem yapabilmeniz için yetkilerinizin açık olması gerekiyor.
 
Merhaba,

Yanlış bilmiyorsam ağ üzerinde işlem yapabilmeniz için yetkilerinizin açık olması gerekiyor.

Merhaba Korhan Bey,

Manuel olarak dosya oluşturabiliyorum veya değişiklik yapabiliyorum. Bu durumda yetkim var diye düşünüyorum. Fakat adresi yazdığımda hata vermiyor pc içerisinde C sürücüsüne atıyor. Sebebi anlayamadım
 
Kullandığınız kodu paylaşırsanız daha sağlıklı yardım alabilirsiniz.
 
Kullandığınız kodu paylaşırsanız daha sağlıklı yardım alabilirsiniz.


Merhaba,
Aşağıdaki gibi sadece Desktop yerine farklı bir yer tanımlı.

Kod:
Sub klasorekaydet()
Set nesne = CreateObject("Scripting.FileSystemObject")
masaustuyolu = CreateObject("Wscript.Shell").SpecialFolders("\\Bosch.com\dfsrb\DfsTR\DIV\CC\QMM_Work\97_QMM_Common\40_QMM_Bolumler\10_QMM1\20_Montaj\60_YeniFormlar\")
ayadi = Format(Cells(1, 10), "mmmm")
klasoradi = Format(Cells(1, 10), "dd.mm.yyyy") & "-" & ThisWorkbook.Sheets("Sayfa1").Cells(3, 2).Text & "-" & ThisWorkbook.Sheets("Sayfa1").Cells(3, 10).Text
dosyaadi = ThisWorkbook.Sheets("Sayfa1").Cells(3, 6).Text
klasorara = nesne.FolderExists(masaustuyolu & "\" & ayadi)
If klasorara = False Then nesne.CreateFolder masaustuyolu & "\" & ayadi
nesne.CreateFolder masaustuyolu & "\" & ayadi & "\" & klasoradi

ThisWorkbook.SaveAs FileName:=masaustuyolu & "\" & ayadi & "\" & klasoradi & "\" & dosyaadi & ".xlsx", FileFormat:=xlOpenXMLWorkbook
Application.DisplayAlerts = True
ThisWorkbook.Close
End Sub
 
Siz kendinize uyarlarken hata yapmışsınız.

Aşağıdaki gibi deneyiniz.

Kod:
Sub klasorekaydet()
    Set nesne = CreateObject("Scripting.FileSystemObject")
    Yol = "\\Bosch.com\dfsrb\DfsTR\DIV\CC\QMM_Work\97_QMM_Common\40_QMM_Bolumler\10_QMM1\20_Montaj\60_YeniFormlar\"
    ayadi = Format(Cells(1, 10), "mmmm")
    klasoradi = Format(Cells(1, 10), "dd.mm.yyyy") & "-" & ThisWorkbook.Sheets("Sayfa1").Cells(3, 2).Text & "-" & ThisWorkbook.Sheets("Sayfa1").Cells(3, 10).Text
    dosyaadi = ThisWorkbook.Sheets("Sayfa1").Cells(3, 6).Text
    klasorara = nesne.FolderExists(Yol & "\" & ayadi)
    If klasorara = False Then nesne.CreateFolder Yol & "\" & ayadi
    nesne.CreateFolder Yol & "\" & ayadi & "\" & klasoradi
    
    ThisWorkbook.SaveAs Filename:=Yol & "\" & ayadi & "\" & klasoradi & "\" & dosyaadi & ".xlsx", FileFormat:=xlOpenXMLWorkbook
    Application.DisplayAlerts = True
    ThisWorkbook.Close
End Sub
 
Merhaba,
Konuyu inceledim ve aşağıda açıklayacağım konuda yardımınızı rica ediyorum.

Yukarıdakine benzer bir şekilde dosyanın farklı kaydedilmesini istiyorum fakat daha önceden var olan bir klasör içerisine ve hücre değişkenlerine bağlı olarak farklı kaydedilmesini. Bu dosya excel formatında bordro dosyası olup farklı şirketlerin farklı çalışanları için tek bir dosya üzerinden ilgili şirketlerin klasörleri içerisinde kayıt olmalı.

Örneğin; A1 içerisinde ŞİRKET1, B1 içerisinde 2020, C1 içerisinde 01, D1 içerisinde PERSONEL ADI yazıyor ise; masa üzerinde hazır bulunan ve adresi şu şekilde olan D:\Documents\Desktop\ŞİRKET1\Personel\Maaş\PERSONEL ADI isimli klasöre PDF olarak "2020-01 BORDRO" ismi ile kayıt olmalıdır. Elbette ŞİRKET2 veya başka bir personel ismi yazdığında da bu klasörlerin içerisinde kayıt edilebilmelidir.

Önemlimi bilmiyorum ama şirketlere ait klasörlerin alt klasör yolları değişmiyor. Yalnızca yukarıda verdiğim adreste ŞİRKET ismi ve PERSONEL ADI klasörlerinin isimleri değişiyor.

Teşekkür ederim.
 
Geri
Üst