# Win32ole - Come specificare il formato con SaveAs

**URL:** <https://www.ruby-forum.com/t/win32ole-come-specificare-il-formato-con-saveas/166054>\
**Category:** IT\
**Created:** [April 21, 2009, 12:02pm UTC](https://www.ruby-forum.com/t/win32ole-come-specificare-il-formato-con-saveas/166054 "2009-04-21T12:02:11Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![triplem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b19c9b/32.png) [@triplem](https://www.ruby-forum.com/u/triplem)\
**Post date:** [April 21, 2009, 12:02pm UTC](https://www.ruby-forum.com/t/win32ole-come-specificare-il-formato-con-saveas/166054/1 "2009-04-21T12:02:11Z")

</div>

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)

---

<div class="post-metadata">

**Author:** ![triplem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b19c9b/32.png) [@triplem](https://www.ruby-forum.com/u/triplem)\
**Post date:** [April 21, 2009, 12:10pm UTC](https://www.ruby-forum.com/t/win32ole-come-specificare-il-formato-con-saveas/166054/2 "2009-04-21T12:10:28Z")

</div>

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

> **[Ruby on Windows](http://rubyonwindows.blogspot.com/search/label/word)**
>
> On using the Ruby programming language on the Microsoft Windows platform

---

<div class="post-metadata">

**Author:** ![triplem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b19c9b/32.png) [@triplem](https://www.ruby-forum.com/u/triplem)\
**Post date:** [April 21, 2009, 3:05pm UTC](https://www.ruby-forum.com/t/win32ole-come-specificare-il-formato-con-saveas/166054/3 "2009-04-21T15:05:33Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![triplem](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/t/b19c9b/32.png) [@triplem](https://www.ruby-forum.com/u/triplem)\
**Post date:** [April 21, 2009, 12:35pm UTC](https://www.ruby-forum.com/t/win32ole-come-specificare-il-formato-con-saveas/166054/4 "2009-04-21T12:35:06Z")

</div>

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.
