mevcut olan "sayfaları ayır ve (excell olarak) kaydet" makrosuna PDF Eklemek

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
arkadaşlar elimde bu şekilde çalışan bir makrom var
bu makro kitap içindeki sayfaları tek klasör içine ayrı ayrı kitap halinde kaydediyor.

yapmak istediğim şey ise; excell formatında değil de PDF formatında kaydedebilir mi ?
Yazıcılarımda PDF converter yüklü
(dosya uzantısını değiştirince formatı okumuyor, xlsx uzantılı dosyayı .pdf uzantıya çevirip açmaya çalışmak gibi oluyor, yani en sonki uzantıyı değiştirmek işe yaramıyor.

Makro:


Sub sayfalari_ayir_kaydet()
Dim Sheet As Worksheet, SheetName$, MyFilePath$, N&
MyFilePath$ = ActiveWorkbook.Path & "\" & _
Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
With Application
.ScreenUpdating = False
.DisplayAlerts = False
On Error Resume Next
MkDir MyFilePath
For N = 1 To Sheets.Count
Sheets(N).Activate
SheetName = ActiveSheet.Name
Cells.Copy
Workbooks.Add (xlWBATWorksheet)
With ActiveWorkbook
With .ActiveSheet
.Paste
.Name = SheetName
[A1].Select
End With

.SaveAs Filename:=MyFilePath _
& "\" & SheetName & ".xlsx"
.Close SaveChanges:=True
End With
.CutCopyMode = False
Next
End With
Sayfa1.Activate
End Sub
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,114
Excel Vers. ve Dili
2007 Türkçe
Merhaba, aşağıdaki kodu kullanabilirsiniz.
Kod:
    With ActiveSheet
        .ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=MyFilePath & "\" & SheetName & ".pdf", _
        OpenAfterPublish:=False
    End With
 

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
sondan 4.satırdaki "Next" döngüsünden hata alıyorum
 
Son düzenleme:

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
sorunu çözebilmiş değilim, konu günceldir
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,295
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Merhaba;

Kullandığınız XL versiyonu ÖmerBey tarafından önerilen metodu desteklemiyor sanırım. Ancak; anladığıma göre bilgisayarınızda sanal PDF sürücüsü var.

O zaman, kodlarınızdaki Next satırından önce aşağıdaki kodu yerleştirip bir deneme yapabilirsiniz. Koddaki yazıcı ismini (Adobe PDF on Ne04:) kendi sisteminize göre değiştirmeyi unutmayın.

Kod:
Application.ActivePrinter = "Adobe PDF on Ne04:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="Adobe PDF on Ne04:", collate:=True
.
 
Son düzenleme:

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
Merhaba;

Kullandığınız XL versiyonu ÖmerBey tarafından önerilen metodu desteklemiyor sanırım. Ancak; anladığıma göre bilgisayarınızda sanal PDF sürücüsü var.

O zaman, kodlarınızdaki Next satırından önce aşağıdaki kodu yerleştirip bir deneme yapabilirsiniz. Koddaki yazıcı ismini (Adobe PDF on Ne04:) kendi sisteminize göre değiştirmeyi unutmayın.

Kod:
Application.ActivePrinter = "Adobe PDF on Ne04:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:="Adobe PDF on Ne04:", collate:=True
.

Cevabınız için teşekkür ederim.
başaralı olmadı, yazıcı yönteminde sanal PDF sürücüsü her seferinde onay istiyor. bu bir sorun oluşturdu.
farklı kaydet ile PDF formatında kaydedebilirmiyiz acaba, sayfanın adıyla kaydetmem gerekiyor
Kitap1 adıyla bir dosya ekledim basit ve içinde makrosu bulunan
 

Ekli dosyalar

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,295
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Erman Bey;
Dosyanizi manuel olarak farkli kaydet yapmayi denerken PDF secenegi cikmiyorsa VBA ile de yapamazsiniz. Bu tamamen sizin XL versiyonunuzla ilgili bir durum.
Sanal PDF yazici da isteklerinizi karsilamiyorsa ve bu tip PDF islerini sikca yapiyorsaniz, belki biraz butce ayirip XL versiyonunuzu yukseltmenin zamani gelmistir.
Kolay gelsin,

.
 

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
farklı kaydet penceresinde PDF seçeneği var, hatta yazıcılarda da "convert to PDF" var, fakat makroyu çalıştıramadım.
kitap içinde 200 den fazla sayfa mevcut ve bunları el ile yapmamın imkanı yok.
daha önce excell olarak kaydettim tüm sayfaları tek tek.
fakat şimdi PDF yapmam gerekiyor.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,295
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
farklı kaydet penceresinde PDF seçeneği var.....
O zaman aşağıdaki kodu deneyin, gerekirse ihtiyacınıza göre revize edersiniz.

Kod:
Sub Sayfalari_Ayir_PDF_Kaydet()
    Dim objFSO As Object, FileName As String, MyFolder As String, N As Integer
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    FileName = objFSO.GetBasename(ThisWorkbook.Name)
    MyFolder = ThisWorkbook.Path & Application.PathSeparator & FileName
    If Dir(MyFolder, vbDirectory) = "" Then MkDir MyFolder
    For N = 1 To Worksheets.Count
        Worksheets(N).ExportAsFixedFormat Type:=xlTypePDF, FileName:=MyFolder & Application.PathSeparator & Sheets(N).Name
    Next
    Sheets(1).Activate
End Sub
.
 
Son düzenleme:

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
1 sayfayı pdf yaptıktan sonra visual basic 400 hatasını alıyorum
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,295
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
2010 versiyonu ile yaptığım denemelerde bir sorun olmadı. Dosyanızı bana e-posta ile gönderin, bakayım ......

.
 

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
2010 versiyonu ile yaptığım denemelerde bir sorun olmadı. Dosyanızı bana e-posta ile gönderin, bakayım ......

.
sanırım çıkan hata yazdırma alanı olmayan sayfalar içindi. şu an örnek dosyada çalışıyor.
ana dosyada deneyeceğim birazdan, durumu size bildireceğim.
 
Son düzenleme:

ermanusta

Altın Üye
Katılım
18 Nisan 2008
Mesajlar
304
Excel Vers. ve Dili
excel 365
Office 365
Altın Üyelik Bitiş Tarihi
14-11-2024
Haluk bey gayet iyi çalıştı,
elinize sağlık, teşekkür ederim.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,295
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Kolay gelsin ...


.
 
Katılım
29 Ocak 2009
Mesajlar
21
Excel Vers. ve Dili
2010 Türkçe
Haluk Bey ben de ilave birşey sorabilir miyim. beceremedim bir türlü.
her sayfayı sayfa adıyla değil de örneğin sayfalardaki a1 hücresindeki veri ile kaydetmesini istesem nasıl revize etmem gerekir ?
 
Katılım
29 Ocak 2009
Mesajlar
21
Excel Vers. ve Dili
2010 Türkçe
O zaman aşağıdaki kodu deneyin, gerekirse ihtiyacınıza göre revize edersiniz.

Kod:
Sub Sayfalari_Ayir_PDF_Kaydet()
    Dim objFSO As Object, FileName As String, MyFolder As String, N As Integer
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    FileName = objFSO.GetBasename(ThisWorkbook.Name)
    MyFolder = ThisWorkbook.Path & Application.PathSeparator & FileName
    If Dir(MyFolder, vbDirectory) = "" Then MkDir MyFolder
    For N = 1 To Worksheets.Count
        Worksheets(N).ExportAsFixedFormat Type:=xlTypePDF, FileName:=MyFolder & Application.PathSeparator & Sheets(N).Name
    Next
    Sheets(1).Activate
End Sub
.

Yukarıdaki kodu revize edemedim rica etsem yardımcı olur musunuz
sayfaları kendi adıyla değil de içindeki bir hücrenin içeriği ile kaydetmesini istiyorum
"örneğin her sayfanın a1 hücresinde yazan veri ile kaydetmesi"
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,295
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
bay-musti;

Aşağıdaki satırı eskisi ile değiştirin ...

Rich (BB code):
Worksheets(N).ExportAsFixedFormat Type:=xlTypePDF, FileName:=MyFolder & Application.PathSeparator & Worksheets(N).Range("A1")
.
 
Üst