Win32ole - Come specificare il formato con SaveAs

Con office 2007 c’è la possibilità di salvare un documento in pdf ma non
capisco come scegliere il formato di salvataggio, prima di perderci del
tempo provo a chiedere magari qualcuno ci è già passato, questo è il
codice di esempio:

require ‘win32ole’
word = WIN32OLE.new(‘Word.Application’)
document = word.Documents.Open(‘C:\prova.doc’)
document.SaveAs(‘C:\out.doc’, 0)
document.close
word.quit

ho provato cambiando l’estensione ma da questa non rileva il tipo
document.SaveAs(‘C:\out.pdf’, 0)

Qua’ c’è scritto di impostare il numero dopo il nome ma come trovare a
cosa corrisponde il pdf?

Grazie per la risposta Michele, a quanto pare non è un problema comune.

Comunque ho trovato il sistema ed estendo quanto si può trovare nel blog
che ho citato prima.

Dal blog:
document.SaveAs(‘c:\temp\MyDocument.doc’, 0) # Word document
(default)
document.SaveAs(‘c:\temp\MyDocument.dot’, 1) # Word template
document.SaveAs(‘c:\temp\MyDocument.txt’, 2) # Text
document.SaveAs(‘c:\temp\MyDocument.rtf’, 6) # Rich Text Format (RTF)

Da office 2003 in poi:
document.SaveAs(‘c:\temp\MyDocument.xml’, 11) # Xml format

Da office 2007 + plugin pdf in poi:
document.SaveAs(‘c:\temp\MyDocument.pdf’, 17) # Pdf format

Ciao

Marco M. wrote:

Con office 2007 c’è la possibilità di salvare un documento in pdf ma non
capisco come scegliere il formato di salvataggio, prima di perderci del
tempo provo a chiedere magari qualcuno ci è già passato, questo è il
codice di esempio:

require ‘win32ole’
word = WIN32OLE.new(‘Word.Application’)
document = word.Documents.Open(‘C:\prova.doc’)
document.SaveAs(‘C:\out.doc’, 0)
document.close
word.quit

ho provato cambiando l’estensione ma da questa non rileva il tipo
document.SaveAs(‘C:\out.pdf’, 0)

Io ho lavorato con xls.
Ho creato una classe per semplificarmi la vita (per la gestione dei
fogli e delle celle). Tornando al tuo problea. Spezzoni della classe
[…]
def initialize(nomefile, fogli)
#inizializza le variabili e prepara i fogli di lavoro
@nome_file = nomefile
@excel = WIN32OLE.new(“excel.application”)
@excel.visible = false
@excel.DisplayAlerts = false
@workbook = @excel.workbooks.add
[…]

def salva_file
@workbook.saveas @nome_file
end
[…]

Le differenze (rispetto al tuo codice) sono 3

  1. non uso il metodo saveas sull’oggetto excel ma su workbook
  2. il metodo saveas è minuscolo
  3. senza parentesi e senza il parametro zero

P.S. ricordati di liberare la memoria chiudendo word.

Ciao Michele.