Newsgroup: it.comp.lang.visual-basic
Titolo: Vb6 e Word, applicazione non si avvia

Ho sviluppato una form che sfrutti Word. Quando apro il programma tutto ok.
Quando clicco su un command button (dove inizio a dargli le info per aprire
un documento in word), non si avvia neanche e mi restituisce l'errore di
windows: "Il programma pincopallo.exe ha restituito un errore in.... e verrà
chiuso".
Da cosa può dipendere?
Tutto questo mi succede su una macchina dove ho installato il tutto con il
pacchetto d'installazione fatto con il wizard di vb6
Sulla macchina di test, il tutto funziona regolarmente.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Da cosa può dipendere?
Forse da 10.000 cose?
Asp....vedo se riesco a trovare la palla magica da indovino.... ;-)
Posta un po' di codice..magari qualcosa si riesce a capire!!!!
Daniele.

la macchina dove esegui il prg deve avere installato lo stesso word cpon cui 
hai programmato 

 stesso word cpon cui hai programmato
Non necessariamente.
Vedi qualche post fa:
http://groups.google.it/group/it.comp.lang.visual-basic/msg/8f08ac47a4d886a1
hth,
Lokar 

 hai programmato
L'accesso all'object model di Office deve avvenire sempre col 
CreateObject e LateBinding, quindi oggetto Application dimensionato ad 
Objet.
Questo, oltre a consentire di essere immuni da problemi di 
distribuzione, è anche l'unico modo pulito perchè l'accesso col New 
genera l'entrata nell'albero dell'object model in punti diversi a 
seconda della versione di Office, e questo è un casino immane per lo 
sviluppo stesso.
Entrando col CreateObject, funziona sempre e comunque (beh, un Office 
sulla macchina ci vuole...).
ciao
Alberto
-- 
La bellezza è opinabile, sulla bruttezza sono tutti d'accordo.


Quindi ho capito dove ho sbagliato. L'office non è lo stesso e per rimediare
invece di richiamare l'istanza di Word con NEW, uso CreateObject.
Ho preso le informazioni in modo corretto?


 Ho preso le informazioni in modo corretto?
Si.
Ricorda però di dimensionare anche TUTTE le variabili che fanno 
riferimento a qualcosa di word come Object. Per essere sicuro di non 
sbagliarti, togli dai riferimenti del progetto le dll di word.
Ciao
Alberto
-- 
L'economia sa tutto di te e tu non sai niente dell'economia. La tua 
banca sa tutto di te, di quanti soldi hai, e quando li spendi; ma tu 
non sai niente di cosa fa la banca dei tuoi soldi e dove li mette, e se 
ce li ha!


Eventualmente potrebbe fare anche così:
nelle proprietà di progetto per la compilazione condizionale:
DEBUG=TRUE
#IF DEBUG
Dim objWord As Word.Application
#ELSE
Dim objWord As Object
#END IF
Così ha l'intellisense durante lo sviluppo.
L'unica cosa è che bisogna ricordarsi di rimuovere il DEBUG=TRUE per la 
compilazione ;)
Poi occorre tener conto che come al solito la compatibilità è all'indietro, 
quindi volendo proprio essere pignoli occorrerebbe sviluppare su un Office97 
perchè non è detto che il contrario funzioni.
Ciao 

Fabio ha usato la sua tastiera per scrivere :

in realtà esiste un subset dell'object model che è compatibile con 
tutte le versioni. Mentre esistono aree dell'object model che variano 
da versione a versione, senza compatibilità nè all'indietro nè 
all'avanti. Può cioè essere che un ramo dell'OM di Office97 non esista 
più in Office2000, o viceversa.
Il caso estremo era proprio il New, che generava oggetti di tipo 
diverso pur utilizzando la stessa classe. L'unico punto di ingresso 
condiviso da tutte le versioni è .Application, da lì si può scendere 
nell'OM con i successivi Set, fino al dettaglio che serve.
Ricordo un bel documento MS con tutte le cautele da utilizzare per 
l'automazione di Office da Vb, ma non saprei ritrovarlo.
Ciao



Già.
Però dovrebbe esistere una tlb "generica" per sopravvivere a questo.
Dico dovrebbe perchè ho solo intravisto queste cose.
Ciao 

Sembra che Fabio abbia detto :

Non esiste una .tlb (o, quantomeno, a me non risulta).
E comunque non sarebbe bene utiilzzarla, sempre meglio il late binding.


 ha scritto:

Questa sera, appena metterò mani al codice, vi farò sapere come e se sono
riuscito a risolvere.
Grazie per la Vostra disponibilità.


Purtroppo ho riscontrato un altro errore, copio di seguito il codice:
Private Sub Command1_Click()
Dim a As String
Dim b As String
Dim c As String
Dim Count As Integer
Dim ins As Integer
c = "inizio"
On Error GoTo Errore
Dim objWord As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Dim objDoc As Object
MsgBox "Ora apro il file"
Set objDoc = objWord.Documents.Open(App.Path + "\RESULT")
If Option1.Value = True Then
Selection.Find.Text = "PINCO"
Else
Selection.Find.Text = "PALLO"
End If
objWord.Documents("RESULT").Activate //HO PROVATO AD ATTIVARE LA FINESTRA
PENSANDO
MsgBox "Ora conto le righe" //CHE USCIVA PERCHE' NON LA TROVAVA
Do
    Selection.Find.Execute
    Selection.EndKey Unit:=wdLine //QUI MI DA L'ERRORE DI SEMPRE, OVVERO CHIUDE
    Count = Count + 1 // IL PROGRAMMA CON LA SCHERMATA DI WINDOWS
Loop Until Selection.Find.Found = False // CHE HA ESEGUITO UNA OPERAZIONE
NON VALIDA
Che può essere? Ho controllato dal vb interno di Word, i comandi
sembrerebbero gli stessi anche se la versione è differente, o mi sbaglio?
Grazie.


Scriveva Luca S. sabato, 02/12/2006:

Ma "Selection" da dove arriva?
Non si capisce dove lo dichiari, dove lo istanzi, dove lo colleghi 
all'object model di objWord.
Mica userai Selection a se stante?
Anche perchè per funzionare dovresti avere i riferimenti di Word nel 
progetto, cosa che abbiamo già detto di evitare...
Ma se così fosse, avresti due oggetti diversi che lavorano su Word, uno 
è objWord (corretto) e uno 'Selection', basato sul nulla ma che cerca 
comunque di operare...



--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 La bellezza è opinabile, sulla bruttezza sono tutti d'accordo.
Ho capito, ero convito di aver inizializzato objWord con un With, invece non
era cosi e quindi ecco perchè Selection sembra apparira dal nulla.
Grazie per avermi ricordato... Ora dovrebbe andare.
