KLASÖR İÇİNDEKİ EXCEL DOSYALARINI TOPLU HALDE PDF'e ÇEVİRMEK

catalinastrap

Özgür ALTAY
Destek Ekibi
Katılım
19 Ağustos 2006
Mesajlar
606
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO /64 bit /Türkçe
Merhaba Arkadaşlar;
MASAÜRTÜNDE KAYITLI OLAN KLASÖR İÇİNDEKİ EXCEL DOSYALARINI TOPLU HALDE PDF'e ÇEVİRME MAKROSU ARIYORUM.
 
Katılım
20 Şubat 2012
Mesajlar
244
Excel Vers. ve Dili
office2007 Türkçe
Merhaba

deneyin

Sub PDFYAP()
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder("C:\Users\xxxx\Desktop\Yeni klasör") 'Dosya Yolu yapıştırın
For Each file In f.Files
Set xlWB = Workbooks.Open(file)
thisFileName = Left(xlWB.FullName, InStrRev(xlWB.FullName, ".") - 1)
xlWB.Sheets.Select
xlWB.ActiveSheet.ExportAsFixedFormat 0, thisFileName & ".pdf", 0, 1, 0, , , 0
xlWB.Close False
counter = counter + 1
MsgBox "Dosya " & counter & " of " & f.Files.Count & "Pdf yapıldı"
Next
End Sub
 

catalinastrap

Özgür ALTAY
Destek Ekibi
Katılım
19 Ağustos 2006
Mesajlar
606
Excel Vers. ve Dili
Microsoft® Excel® Microsoft 365 için MSO /64 bit /Türkçe
Çok teşekkür ederim,
işime yaradı
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Alternatif kod

Kod:
Sub pdf_dosyasi_yap()

Set Klasor = CreateObject("shell.application").browseforfolder(0, "Kaynak Dosyaları İçeren Klasörü Seçin", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.SELF.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla

Liste (Kaynak)
Application.ScreenUpdating = True
Application.DisplayAlerts = True

MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
    
End Sub
 
Private Sub Liste(Yol As String)
Dim fL As Object, f As Object, j As Long, n As Long
Set fL = CreateObject("Scripting.FileSystemObject")

aranan_Uzanti = LCase(fL.GetExtensionName(Application.AddIns.Item(1).FullName))

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim wb As Workbook
For Each dosya In fL.getfolder(Yol).Files

Uzanti = LCase(fL.GetExtensionName(dosya.Name))

If aranan_Uzanti = "xlam" Then
If Uzanti = "xls" Or Uzanti = "xlsm" Or Uzanti = "xlsx" Or Uzanti = "xlsb" Then
Else
GoSub Atla
End If
End If

If aranan_Uzanti = "xla" Then
If Uzanti <> "xls" Then
GoSub Atla
Else
End If
End If

If ThisWorkbook.Name = dosya.Name Then GoSub Atla
If "~$" & ThisWorkbook.Name = dosya.Name Then GoSub Atla

Set wb = Workbooks.Open(dosya, Password:="", WriteResPassword:="")
Set fL = CreateObject("Scripting.FileSystemObject")
dosya_adi = fL.GetBaseName(dosya)

wb.Worksheets.Select
say = CreateObject("Scripting.FileSystemObject").getfolder(Yol).Files.Count + 1
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Yol & "\" & say & " " & dosya_adi & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
wb.Close False

Atla:

Next

On Error GoTo sonraki
For Each f In fL.getfolder(Yol).SubFolders
Liste (f.Path)
sonraki:
Next

Set fL = Nothing
End Sub
 
Katılım
2 Ağustos 2005
Mesajlar
20
Excel Vers. ve Dili
Microsoft Office Ev ve İş 2010 TR
Merhaba,
Aynı durum word dosyaları için de olurmu ?
Yani klasör içindeki word dosyalarını topluca ayrı ayrı pfd e çevirebilirmiyiz acaba?
Teşekkürler.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Merhaba,
Aynı durum word dosyaları için de olurmu ?
Yani klasör içindeki word dosyalarını topluca ayrı ayrı pfd e çevirebilirmiyiz acaba?
Teşekkürler.
kod:

Kod:
Sub word_pdf_dosyasi_yap()

Set Klasor = CreateObject("shell.application").browseforfolder(0, "Kaynak Dosyaları İçeren Klasörü Seçin", 50, &H0)
If Not Klasor Is Nothing Then
Kaynak = Klasor.SELF.Path
If InStr(1, Kaynak, "{") > 0 Then GoTo Atla
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Liste2 (Kaynak)
Application.ScreenUpdating = True
Application.DisplayAlerts = True

MsgBox "işlem tamam"
Else
Atla:
MsgBox "Lütfen Kaynak Klasör Seçimini Yapınız !", vbInformation, "DİKKAT"
End If
    
End Sub
 
Private Sub Liste2(Yol As String)
Dim fL As Object, f As Object
Set fL = CreateObject("Scripting.FileSystemObject")

For Each dosya In fL.getfolder(Yol).Files

Uzanti = LCase(fL.GetExtensionName(dosya.Name))
dosya_adi = fL.GetBaseName(dosya)

If Uzanti = "doc" Or Uzanti = "docx" Then

Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
Set wrdApp = CreateObject("Word.Application")
wrdApp.Documents.Open (dosya)
wrdApp.Visible = True
say = CreateObject("Scripting.FileSystemObject").getfolder(Yol).Files.Count + 1
wrdApp.ActiveDocument.ExportAsFixedFormat OutputFileName:=Yol & "\" & say & " " & dosya_adi & ".pdf", ExportFormat:=wdExportFormatPDF

wrdApp.Quit
Set wrdApp = Nothing

End If
Atla:

Next

On Error GoTo sonraki
For Each f In fL.getfolder(Yol).SubFolders
Liste2 (f.Path)
sonraki:
Next

Set fL = Nothing
End Sub
not: bilgisayarınızda ofis 2007 ve üzeri word yüklü olması gerekiyor.
 
Katılım
2 Ağustos 2005
Mesajlar
20
Excel Vers. ve Dili
Microsoft Office Ev ve İş 2010 TR
Merhaba, ilgi ve alakanız için teşekkür ederim.

Office 2010 kullanıyorum, fakat "user-defined type not defined" diye bir hata veriyor.
Klasör seçiyor fakat sonrasında hata veriyor.

Private Sub Liste2(Yol As String)
Dim fL As Object, f As Object
Set fL = CreateObject("Scripting.FileSystemObject")

For Each dosya In fL.getfolder(Yol).Files

Uzanti = LCase(fL.GetExtensionName(dosya.Name))
dosya_adi = fL.GetBaseName(dosya)

If Uzanti = "doc" Or Uzanti = "docx" Then

************Dim wrdApp As Word.Application BURADA HATA VERİYOR !*************
Dim wrdDoc As Word.Document
Set wrdApp = CreateObject("Word.Application")
wrdApp.Documents.Open (dosya)
wrdApp.Visible = True
say = CreateObject("Scripting.FileSystemObject").getfolder(Yol).Files.Count + 1
wrdApp.ActiveDocument.ExportAsFixedFormat OutputFileName:=Yol & "\" & say & " " & dosya_adi & ".pdf", ExportFormat:=wdExportFormatPDF

wrdApp.Quit
Set wrdApp = Nothing

End If
Atla:

Next

On Error GoTo sonraki
For Each f In fL.getfolder(Yol).SubFolders
Liste2 (f.Path)
sonraki:
Next

Set fL = Nothing
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Referanslar listesinden bunu ekleyin.

Kod:
microsoft word [COLOR="Red"]12.0[/COLOR] object library
kırmızı yerin rakamı sizde farklı olabilir onu ekleyiniz.


 
Katılım
2 Ağustos 2005
Mesajlar
20
Excel Vers. ve Dili
Microsoft Office Ev ve İş 2010 TR
Teşekkürler, emeğinize sağlık.
Kısmen de olsa işimi gördü. (altışar olarak çeviriyor :) )
 
Katılım
17 Mart 2005
Mesajlar
31
Arkadaşlar bende de excel dosyası içindeki sayfaları makro kontrolü ile toplu halde seçip (duruma göre bu sayfalar değişecek), daha sonra pdf yapacağım. PDF yapmada sorun yok ama sayfaları toplu seçmede sıkıntı var.

Aşağıdataki komutu bir türlü kontrol altına alamadım
Sheets(Array("Sayfa1", "Sayfa3", "Sayfa8")).Select
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Teşekkürler, emeğinize sağlık.
Kısmen de olsa işimi gördü. (altışar olarak çeviriyor :) )
Uygulamada Kısıtlama varmı bilmiyorum ama ben 18 adet dosyada denedim hepsinide pdf ye çevirdi
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Arkadaşlar bende de excel dosyası içindeki sayfaları makro kontrolü ile toplu halde seçip (duruma göre bu sayfalar değişecek), daha sonra pdf yapacağım. PDF yapmada sorun yok ama sayfaları toplu seçmede sıkıntı var.

Aşağıdataki komutu bir türlü kontrol altına alamadım
Sheets(Array("Sayfa1", "Sayfa3", "Sayfa8")).Select
Aşağıdaki linkleri irdeleyiniz.
ayrıca dosyadaki bütün sayfalar için şöyle deneyiniz.

Kod:
Sheets(Array("Sayfa1", "Sayfa3", "Sayfa8")).Select
bunun yerine
Kod:
ThisWorkbook.Worksheets.Select
bunu deneyiniz.

http://www.excel.web.tr/f48/ko-ullu-ve-birle-tirerek-pdf-kaydetme-t147913.html

http://www.excel.web.tr/f48/birle-351-tirerek-pdf-kaydetme-t146723.html

http://www.excel.web.tr/f48/secili-sayfalary-pdf-olarak-kaydetme-t145431.html
 
Katılım
17 Mart 2005
Mesajlar
31
Halit Hocam ben derdimi anlatamadım ;
Userform üzerinde yapılacak seçime göre sayfa adları oluşacak (bunlar bir hücreye yazılacak) ve bu sayfaları toplu seçerek pdf'e dönüştürmek.

Sheets(Array("Sayfa1", "Sayfa3", "Sayfa8")).Select
Her makro çalıştığında bu komutu excel sayfasında oluşan sayfa isimleri ile değiştirebileyim.

Örnek;
ko = Worksheets("PPPP").Cells(10, 12) -- "P1","P2","P4"

Sheets(Array(ko)).Select

hata veriyor.
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,852
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Halit Hocam ben derdimi anlatamadım ;
Userform üzerinde yapılacak seçime göre sayfa adları oluşacak (bunlar bir hücreye yazılacak) ve bu sayfaları toplu seçerek pdf'e dönüştürmek.

Sheets(Array("Sayfa1", "Sayfa3", "Sayfa8")).Select
Her makro çalıştığında bu komutu excel sayfasında oluşan sayfa isimleri ile değiştirebileyim.

Örnek;
ko = Worksheets("PPPP").Cells(10, 12) -- "P1","P2","P4"

Sheets(Array(ko)).Select

hata veriyor.
Bu konu baya karıştı siz sorunuzu farklı bir konu başlığı altında örnek dosyanızı ekliyerek sorunuz.
 

mzsakall

Altın Üye
Katılım
6 Şubat 2018
Mesajlar
109
Excel Vers. ve Dili
Excel 2010
Altın Üyelik Bitiş Tarihi
15-06-2025
Merhaba ben kendime uyarlayamadim nerde hata yapiyorum aynisini alip yaptistrdim makroda atadim ancak degsitrmem gereken ve ilk klasor seciminde secmem gereken yer neresi yardimci olur msuunuz
 
Üst