Konu: Exceli Pdf Yapmak
Office 2010 da Farklı kaydet bölümünde kayıt türü seçeneğinde pdf var. Ancak kodlarla program içinden mevcut excel dosyasını nasıl pdf yapabilirim?
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
fox4um » Kodlama ve Komutlar » Exceli Pdf Yapmak
Office 2010 da Farklı kaydet bölümünde kayıt türü seçeneğinde pdf var. Ancak kodlarla program içinden mevcut excel dosyasını nasıl pdf yapabilirim?
Soykan bey, Forumda aradım ama bulamadım. Varsa bile ben bulamadım herhalde.
Bukadar basit bir soruya kimsenin cevap vermemesi düşündürücü.
Bu soruya cevap verebilecek en az 10 forum üyesini tanıyorum.
Sanırım hepsi tatildeler.
Ben? Ben maalesef bu sene tatile çıkamiyorum: çok iş, az para
Mehmet, bu senden kaynaklanıyor olmasın.("Çok iş az para")
Bence piyasayı düşürüyosun.
Tamam gençsin anladık ama yine de yaşlanabileceğini düşün ve ona göre fiyat ver derim.
Sevgilerimle,
Soykan bey, Forumda aradım ama bulamadım. Varsa bile ben bulamadım herhalde.
linki vermistim ama hatali imis ozur:) dogru link http://www.fox4um.com/topic/1770/foxypreviewer-195/
ve o thread te gecen vermis oldugum ornek aslinda aradigin degil FRX ten PDF yapiyor...
bu noktada aklima su geliyor office otomasyon kodlari kullanmak ve olusan xls dosyasini SaveAs ile PDF olarak kaydetmek nasil dersen ilk aklima gelen office2010 veya 2013 ile xls dosyasini ac makro kaydi yap ve save as kodlarini al bundan sonraki adim VFP uzerinden dosyayi ekranda goruntulemeden az onceki bahsettigim makro kolari ile pdf e donusturmek . ornek bulursam buradan paylasacagim
SET PROCEDURE TO LOCFILE("FoxyPreviewer.App") ADDITIVE
LOCAL loReport as "PreviewHelper" OF "FoxyPreviewer.App"
loReport = CREATEOBJECT("PreviewHelper")
WITH loReport as ReportHelper
.AddReport(_Samples + "\Solution\Reports\percent.frx", "NODIALOG") && FRX dosyan
.cDestFile = "c:\Test.pdf" && Use to create an output without previewing "c:\Test.JPG" "c:\Test.TIFF"
.RunReport()
ENDWITH
loReport = NULL
RUN /N Explorer.Exe c:\Test.pdf
sanirim bu isini gorur
=Xls2Pdf("d:\pdftest.xls")
Function Xls2Pdf
Lparameters tcXlsFileWithPath
Local oExcel,loDoc,cPdfFileName
m.cPdfFileName = Forcepath(Juststem(m.tcXlsFileWithPath)+".pdf",Justpath(m.tcXlsFileWithPath))
#Define xlTypePDF 0
oExcel=Createobject("Excel.Application")
loDoc=oExcel.Workbooks.Open(m.tcXlsFileWithPath)
Try
WAIT WINDOW "PDF dosyasi yaratiliyor..." NOWAIT
oExcel.activeSheet.ExportAsFixedFormat(xlTypePDF, m.cPdfFileName)
WAIT CLEAR
Catch
oExcel = Null
Endtry
loDoc.Close()
oExcel.Quit()
ayrica asagidaki kodla sistemde excel yuklu olup olmadigini kontrol edebilirsin
Function isExcel
oExcel = Createobject("Excel.Application")
If Vartype(oExcel) != "O"
* could not instantiate Excel object
* show an error message here
Messagebox('MS Excel Sisteminizde Yüklü Değil !',16,'Excel Hatası')
Return .F.
Endif
Endif
buda Excel versiyon kontrolu
Function getExcelVersion()
*!* usage : m.cXlsVer = getExcelVersion()
Local oExcel As "excel.application",cExcelVersion
oExcel = Createobject('Excel.Application')
With oExcel
oWorkbook = .WorkBooks.Add()
.Visible = .F.
Do Case
Case .Application.Version = "15.0"
*-Messagebox("You are using Excel 2013.")
Case .Application.Version = "14.0"
*-Messagebox("You are using Excel 2010.")
Case .Application.Version = "12.0"
*-Messagebox("You are using Excel 2007.")
Case .Application.Version = "11.0"
*-Messagebox("You are using Excel 2003.")
Case Application.Version = "10.0"
*-Messagebox("You are using Excel 2002.")
Case .Application.Version = "9.0"
*-Messagebox("You are using Excel 2000.")
Case .Application.Version = "8.0"
*-Messagebox("You are using Excel 97.")
Case .Application.Version = "7.0"
*-Messagebox("You are using Excel 95.")
Endcase
m.cExcelVersion = .Application.Version
Endwith
oExcel.Quit()
oExcel = .Null.
Release oExcel
Return m.cExcelVersion
Endfunc
benden bu kadar
bu ornekte ihtiyaci olanlar icin yazdirilabilir tum dosyalari PDF printer sayesinde PDF e donusturur
**Acrobat pdfWriter,bullzip vs , Devices And Printers da gorunen isim
lcPDFPrinter="Bullzip PDF Printer"
lcOldPrinter=Set("PRINTER",2)
Set Printer To Name(lcPDFPrinter)
afile=Getfile('*.*|frx|doc|htm|html|xls|rtf|ppt|pps|txt|prg|jpg|bmp|png|tif|gif')
If Not Empty(afile)
Declare Integer ShellExecute In shell32.Dll ;
INTEGER hndWin, String cAction, String cFileName, ;
STRING cParams, String cDir, Integer nShowWin
ShellExecute(0,"open",afile,"","",1)
Inkey(5)
oShell = Createobject("Wscript.Shell")
oShell.SendKeys("^{p}")
Endif
Soykan bey çok teşekkürler.
NOT:
PDF olarak kaydetme seçeneği Office 2007'de SP-3 güncellemesi ile de aktif olmakta. Office 2010 ve üzeri olması önemli değil.
Ancak Office 2007'de SP-3 yüklü değil ise hata ile karşılaşılıyor. Onun kontrolü nasıl yapılır hiç bakmadım.
Yapacağınız programda belki bu kontrolü de yapmanız gerekebilir.
Ali Bey,
Soykan Beyin kodu ile oluşturabiliyorum. Ofisi açmadan kodla yapmam gerekiyor.
Ancak bir problemim var. Excel Dosyam 3 sayfadan oluşuyor. Pdf yaptığımda açık olan sayfa hangisi ise onu pdf ye dönüştürüyor. Tüm sayfaları pdf ye nasıl dönüştürebilirim?
Excel de aktif sayfayı değiştirebiliyorsun :
loExcel.Sheets("Sheet2").Select
Döngü içerisinde her bir sayfa için PDF ye çevirme işlemini yapabilirsin.
Yada bana daha kolay gelen bir yöntemle; hiç excel e bulaşmadan (amacının sadece PDF çıktısı olduğunu varsayıyorum) rapor dosyanı (FRX) doğrudan PDF ye çevirebilirsin. Tek yapman gereken FoxyPreviewer ı kullanmak.
Benim istediğim birden fazla excel sayfasını tek bir pdf yapmak. Ya da mevcut excel dosyasını (mevcut sayfalarıyla birlikte) tek bir pdf dosyası olarak kaydetmek
Çok soru soruyorsam lütfen affedin. Foxypreviewer ile veya başka bir yolla (belki foxypreviewer bu iş için uygun çözüm değildir) bir klasördeki tüm doc, docx, xls, xlsx dosyalarını PDF nasıl yaparım ?
Herhangi bir word dökümanını ekranda açıp göstermeden arka planda PDF olarak kaydetmeye yönelik örnek varsa tüm klasördeki diğer dosyalara uygulamasını yapabilirim.
Saygıdeğer üstadlarım aşağıdaki şekilde hallettim.
ow = CREATEOBJECT("word.application")
owd = ow.Documents.Open("f:\test.docx")
owd.SaveAs("f:\test.pdf",17)
owd.Close()
owd = null
ow = null
Comez sadece bir animsatma: Programi calistirdigin bilgisayarda MS Office in x86 olarak yuklu olmasi gerekiyor. Yoksa 64 bit Office yuklu bilgisayarlarda calismaz. Office kurulumunda ozellikle X86 setup i ile yukleme yapman gerekiyor.
İkaz için çok teşekkürler, sadece kendi bilgisayarım için gerekiyordu, genele yazılmış bir yazılım değildi, sorun olmadı.
fox4um » Kodlama ve Komutlar » Exceli Pdf Yapmak