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

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.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
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
 
Katılım
9 Aralık 2019
Mesajlar
4
Excel Vers. ve Dili
Tr
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,733
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Yanlış bilmiyorsam ağ üzerinde işlem yapabilmeniz için yetkilerinizin açık olması gerekiyor.
 
Katılım
9 Aralık 2019
Mesajlar
4
Excel Vers. ve Dili
Tr
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,733
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kullandığınız kodu paylaşırsanız daha sağlıklı yardım alabilirsiniz.
 
Katılım
9 Aralık 2019
Mesajlar
4
Excel Vers. ve Dili
Tr
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,733
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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
 
Katılım
17 Mart 2012
Mesajlar
14
Excel Vers. ve Dili
2003 207 ve 2016 Türkçe
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.
 
Üst