UserForm, TextBox'daki bilgileri pdf çıktı alma

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Arkadaşlar UserForm da bulunan Textbox'daki bilgileri "PDF" olarak çıktısını almak istiyorum. Aşağıda; daha önce Word için yazılmış bir kod var bu kod ile word'a aktarım yapılıyor. Bunu PDF olarak nasıl revize edebiliriz.

Kod:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
For i = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(i) = True Then
j = j + 1
End If
Next i

If j = 0 Then MsgBox "Seçim Yapmadınız": Exit Sub

'On Error Resume Next
Dim appword As Word.Application
Dim docword As Word.Document

Set appword = CreateObject(class:="Word.Application")
If Not appword Is Nothing Then Set appword = GetObject(class:="Word.Application")
appword.Visible = True
Set docword = appword.Documents.Add

For k = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(k) = True Then
sayfa22 = ListBox2.List(k, 1)
satır = ListBox2.List(k, 0)

docword.Paragraphs(docword.Paragraphs.Count).Range.Font.Bold = True
docword.Paragraphs(docword.Paragraphs.Count).Range.ParagraphFormat.Alignment = wdAlignParagraphLeft  '' ortalı
docword.Paragraphs(docword.Paragraphs.Count).Range.Font.Name = "Times New Roman"
docword.Paragraphs(docword.Paragraphs.Count).Range.Font.Size = 12
docword.Paragraphs(docword.Paragraphs.Count).Range.InsertBefore sayfa22

docword.Paragraphs.Add
docword.Paragraphs.Add

End If
Next k

say5 = CreateObject("Scripting.FileSystemObject").getfolder(ThisWorkbook.Path).Files.Count + 1
docword.SaveAs ThisWorkbook.Path & "\sablon" & say5 & ".docx"
docword.Close
appword.Quit
Application.CutCopyMode = False

MsgBox "işlem tamam"
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,314
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Word olarak aktarmak mantıklı...

Sonrasında word dosyasını kayıt anında PDF formatına aşağıdaki kod yardımıyla çözebilirsiniz. Önerdiğim kod bloğunu docword.Close satırının üstüne konumlandırıp deneyiniz.


C++:
Sub Makro1()
    Yol = ThisWorkbook.Path & "\Deneme.pdf"
    ActiveDocument.ExportAsFixedFormat OutputFileName:=Yol, _
    ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, _
    OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportAllDocument, _
    From:=1, To:=1, Item:=wdExportDocumentContent, _
    IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:=wdExportCreateNoBookmarks, _
    DocStructureTags:=True, BitmapMissingFonts:=True, UseISO19005_1:=False
End Sub
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Word olarak aktarmak mantıklı...

Sonrasında word dosyasını kayıt anında PDF formatına aşağıdaki kod yardımıyla çözebilirsiniz. Önerdiğim kod bloğunu docword.Close satırının üstüne konumlandırıp deneyiniz.


C++:
Sub Makro1()
    Yol = ThisWorkbook.Path & "\Deneme.pdf"
    ActiveDocument.ExportAsFixedFormat OutputFileName:=Yol, _
    ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, _
    OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportAllDocument, _
    From:=1, To:=1, Item:=wdExportDocumentContent, _
    IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:=wdExportCreateNoBookmarks, _
    DocStructureTags:=True, BitmapMissingFonts:=True, UseISO19005_1:=False
End Sub
Korhan Bey ilginize teşekkür ederim.
Kodun son kısmına tıpkı Word belgesinde olduğu gibi dosya kapatılsa daha iyi olacak Yani PDF dosyası açık olmasın kayıt yapınca kapansın. Bunun için kodun sonuna
docword.Close
appword.Quit

Bunların karşılığı ne yazılabilir
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,314
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
OpenAfterExport:=True bu bölümdeki kalın yazı karakterli kısmı FALSE olarak revize ediniz.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
OpenAfterExport:=True bu bölümdeki kalın yazı karakterli kısmı FALSE olarak revize ediniz.
Korhan Bey selamlar
Kod çalışırken bir hata veriyor.
Hata şu: form aktif iken bir defa bilgileri word ve pdf ye güzel aktarıyor. Ancak komutu ikinci defa çalıştırınca Word dosyasına aktarıyor ama PDF dosyasına çevirmeden takılı kalıyor.
PDF kod kısmı ilave edilmeden böyle bir sorun yoktu. Hata aşağıdaki şekilde

244181


244182
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,314
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
O komut böyle bir hataya sebep vermemeli diye düşünüyorum.

Tekrar eski haline alınca durum düzeliyor mu?
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
O komut böyle bir hataya sebep vermemeli diye düşünüyorum.

Tekrar eski haline alınca durum düzeliyor mu?
Evet düzeliyor. Sizin PDF ilave kodu kaldırınca isterseniz 50 defa çıktı alın hata vermiyor. PDF kodunu ilave edince sadece bir defa çalışıyor ikinci defa hata veriyor ancak formu kapatıp açınca tekrar bir defa çalışıyor. sonra ikincide yine aynı hata.
İkincide Word dosyasına aktarıyor sonra pdf yapmıyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,314
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Paylaştığım kodlar ofis 2016 sürümünde makro kaydet yöntemiyle elde ettiğim kodlardır. Ben sadece YOL kısmını değişken yaparak paylaştım.

Neden hata verdiği konusunda açıkçası bir fikrim yok. Dilerseniz örnek dosyanızı paylaşın inceleyelim.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Paylaştığım kodlar ofis 2016 sürümünde makro kaydet yöntemiyle elde ettiğim kodlardır. Ben sadece YOL kısmını değişken yaparak paylaştım.

Neden hata verdiği konusunda açıkçası bir fikrim yok. Dilerseniz örnek dosyanızı paylaşın inceleyelim.
Korhan Bey selamlar...
Kod'un Başına "On Error Resume Next" ekleyince hata vermeden devam ediyor. Ancak ikinci çalışmada word dosyasına aktarıyor, PDF olarak kaydetmiyor. Yani kod sadece bir defa PDF olarak kaydetmeye izin veriyor. PDF ye ikinci kez izin vermiyor fakat word dosyasını çıktı vermeye devam ediyor
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Paylaştığım kodlar ofis 2016 sürümünde makro kaydet yöntemiyle elde ettiğim kodlardır. Ben sadece YOL kısmını değişken yaparak paylaştım.

Neden hata verdiği konusunda açıkçası bir fikrim yok. Dilerseniz örnek dosyanızı paylaşın inceleyelim.
Korhan Bey Yukarıdaki mesajımda anlatmaya çalıştım. Kod bir defaya mahsus PDF ye izin veriyor. Bu sizin word makrosu ile hazırladığınız koddan olabilir mi acaba?
Bu kodu excel makro kodu mantığı ile word dosyasını PDF olarak kaydet şeklinde kod yazılabilirmi?
Sizin kodu önce word dosyasının kapanmasını pasif yaptım sonra kodu bağımsız bir komut düğmesiyle denedim yine birinci defa da kaydediyor, ikinci defa kaydetmiyor.
 
Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,314
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Paylaştığım kodlar ofis 2016 sürümünde makro kaydet yöntemiyle elde ettiğim kodlardır. Ben sadece YOL kısmını değişken yaparak paylaştım.

Neden hata verdiği konusunda açıkçası bir fikrim yok. Dilerseniz örnek dosyanızı paylaşın inceleyelim.
 
Katılım
20 Şubat 2007
Mesajlar
659
Excel Vers. ve Dili
2007 Excel, Word Tr
Bu hata ile daha önce karşılaşmıştım.
Activedocument'in önüne set yapılan Application ismini de yazınca düzeliyor.

appword.ActiveDocument.ExportAsFixedFormat OutputFileName:=Yol, _

yada:
Activedocument'in yerine SET yapılan dosya ismi yazılınca da düzeliyor.

docword.ExportAsFixedFormat OutputFileName:=Yol, _

NOT: "Application.ScreenUpdating = False" satırını makro sonunda "true" ya çevirmemişsiniz.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Bu hata ile daha önce karşılaşmıştım.
Activedocument'in önüne set yapılan Application ismini de yazınca düzeliyor.

appword.ActiveDocument.ExportAsFixedFormat OutputFileName:=Yol, _

yada:
Activedocument'in yerine SET yapılan dosya ismi yazılınca da düzeliyor.

docword.ExportAsFixedFormat OutputFileName:=Yol, _

NOT: "Application.ScreenUpdating = False" satırını makro sonunda "true" ya çevirmemişsiniz.
Necati Bey Teşekkürler...

ActiveDocument.ExportAsFixedFormat OutputFileName:=Yol, _
satırını sizin dediğiniz
docword.ExportAsFixedFormat OutputFileName:=Yol, _
olarak değiştirince düzeldi.

Yalnız "Application.ScreenUpdating = False" komutunu True yapmasamda çalışıyıyor, Yapsamda çalışıyor. Bu kodu True yapmak ne fayda sağlar. O kodu hiç yazmasam ilerde sakınca oluşturur mu
 
Katılım
20 Şubat 2007
Mesajlar
659
Excel Vers. ve Dili
2007 Excel, Word Tr
Bunun gibi komutlarla makro başında excelin bazı özelliklerini kapatıyoruz ki işlemleri hızlı yapabilsin diye. Makro bitince de doğal olarak açmalıyız ki başka işlemelerde etkisi olmasın. Sıkıntı farketmediyseniz sizin için problem yok demektir. Kalsa da olur.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Bu makronun her defasında PDF kaydetmemesi için ben şu şekilde değiştirdim ve artık bunda da sıkıntı çıkartmıyor. Böylece çok daha kullanışlı oldu
Kod:
If CheckBox5 = True Then
 Yol = ThisWorkbook.Path & "\Hadisler_" & say5 & ".pdf"
    docword.ExportAsFixedFormat OutputFileName:=Yol, _
    ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, _
    OptimizeFor:=wdExportOptimizeForPrint, Range:=wdExportAllDocument, _
    From:=1, To:=1, Item:=wdExportDocumentContent, _
    IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:=wdExportCreateNoBookmarks, _
    DocStructureTags:=True, BitmapMissingFonts:=True, UseISO19005_1:=False
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

End If
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Korhan Bey Necati Bey'in söylediği şekilde
ActiveDocument.ExportAsFixedFormat OutputFileName:=Yol, _
satırını
docword.ExportAsFixedFormat OutputFileName:=Yol, _
olarak değiştirince düzeldi.
Şahsınıza da çok çok teşekkür ederim. Ellerinize, emeklerinize sağlık.
 

asdsxx

Altın Üye
Katılım
22 Mayıs 2012
Mesajlar
491
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
20-02-2025
Bunun gibi komutlarla makro başında excelin bazı özelliklerini kapatıyoruz ki işlemleri hızlı yapabilsin diye. Makro bitince de doğal olarak açmalıyız ki başka işlemelerde etkisi olmasın. Sıkıntı farketmediyseniz sizin için problem yok demektir. Kalsa da olur.
Necati Bey bir konuda daha yardıma ihtiyacım var. Bu da yapılırsa çalışmam tamamlanmış olacak.
Olay şu:
UserForm da bulunan TextBox1 kutusunda Arapça metin var. Şuan çalıştığım bilgisayarda ayarladığım yazı fontu "Windows/Font" klasöründe olduğu için sıkıntı çıkmıyor. Ama farklı bir bilgisayarda çalıştırdığım zaman o bilgisayarda ilgili yazı fontları olmadığı için Arapça metinler düzgün görünmüyor.
UserForm içine yazı fontunu entegre edilebilir mi? Başka bilgisayarlarda da çalıştırsam Font klasöründe ilgili yazı fontu yoksa bile TextBox1 ayarlanan yazı fontunda metinleri gösterecek.
Yazı Fontları:
Shaikh Hamdullah Mushaf
veya
Arabic Typesetting
 
Katılım
20 Şubat 2007
Mesajlar
659
Excel Vers. ve Dili
2007 Excel, Word Tr
Özel fontları bilgisayara yüklemek gerekir. UserForm içine yazı fontu entegre edilebilir mi bilemiyorum? Bir yolu varsa ben de bilmek isterim.
 
Üst