Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Errore CreateObject "server remoto non disponibile"

292 views
Skip to first unread message

Marco

unread,
Aug 1, 2003, 6:17:01 AM8/1/03
to
Ciao a tutti.

Ho una routine di importazione che mi apre Word, fa qualche sostituzione, mi
salva il file come txt e mi importa i dati in Access.

Funziona perfettamente.

Se però rieseguo la routine mi restituisce l'errore di run time '462'
"computer server remoto non esiste o non è raggiungibile.

Access riesce ad accedere a Word e ad aprire il file che gli ho indicato.
Tuttavia si blocca quando deve effettuare le sostituzioni

Il problema è simile a quello del post di Femto "Errore di run-time" ma, pur
seguendo i consigli di Carlo Costarella e di Sergio Mazza non ho risolto

Dopo WordApp.Quit
ho scritto

Set WordApp = Nothing
Set frase = Nothing
(oggetto RANGE che utiilizzo)
Set colFoundItems = Nothing
(oggetto Collection che utiilizzo)

ma non va lo stesso

Suggerimenti??


Sergio MAZZA

unread,
Aug 1, 2003, 6:24:33 AM8/1/03
to
"Marco" <marpis...@yahoo.it> ha scritto nel messaggio
news:x6rWa.219016$Ny5.6...@twister2.libero.it...

> Ciao a tutti.
>
> Ho una routine di importazione che mi apre Word, fa qualche sostituzione,
mi
> salva il file come txt e mi importa i dati in Access.
>
> Funziona perfettamente.
>
> Se perņ rieseguo la routine mi restituisce l'errore di run time '462'
> "computer server remoto non esiste o non č raggiungibile.

>
> Access riesce ad accedere a Word e ad aprire il file che gli ho indicato.
> Tuttavia si blocca quando deve effettuare le sostituzioni
>
> Il problema č simile a quello del post di Femto "Errore di run-time" ma,

pur
> seguendo i consigli di Carlo Costarella e di Sergio Mazza non ho risolto
>
> Dopo WordApp.Quit
> ho scritto
>
> Set WordApp = Nothing
> Set frase = Nothing
> (oggetto RANGE che utiilizzo)
> Set colFoundItems = Nothing
> (oggetto Collection che utiilizzo)
>
> ma non va lo stesso
>
> Suggerimenti??
>

La gestione degli errori?

Ciao.

--
Sergio MAZZA


Marco

unread,
Aug 1, 2003, 6:32:21 AM8/1/03
to

"Sergio MAZZA" <sergi...@tiscalinet.it> ha scritto nel messaggio
news:bgderq$q2d$1...@canarie.caspur.it...

Cosa intendi?
Ho riletto la tua risposta ma non capisco come potrei gestire l'errore
Non vorrei dover dire all'utente guarda, se devi importare 10 files devi
aprire e chiudere access 10 volte...

Sergio MAZZA

unread,
Aug 1, 2003, 8:09:59 AM8/1/03
to
"Marco" <marpis...@yahoo.it> ha scritto nel messaggio
news:VkrWa.219193$lK4.6...@twister1.libero.it...

>
>
> Cosa intendi?
> Ho riletto la tua risposta ma non capisco come potrei gestire l'errore
> Non vorrei dover dire all'utente guarda, se devi importare 10 files devi
> aprire e chiudere access 10 volte...

Se per un qualsiasi caso va in errore la ruotine ti potrebbe rimanere aperta
una sessione a word che il riavvio dell'applicazione non azzera.
Quindi dovresti (se non l'hai fatto) inserire le istruzioni necessarie per
intercettare un eventuale errore:
Es.
Private Sub bttnEsporta()
On error goto bttnEsporta_err
Dim oggetti as qualcosa
istruzioni
istruzioni
istruzioni

Exit Sub

bttnEsporta_err:


Set WordApp = Nothing
Set frase = Nothing

Set colFoundItems = Nothing

End Sub

Questo intendevo. Controlla con ctrl-alt-canc se hai delle sessioni
"appese"...

Ciao.

--
Sergio MAZZA


Marco

unread,
Aug 1, 2003, 1:00:09 PM8/1/03
to

"Sergio MAZZA" <sergi...@tiscalinet.it> ha scritto nel messaggio
news:bgdl1h$rv6$1...@canarie.caspur.it...

> "Marco" <marpis...@yahoo.it> ha scritto nel messaggio
> news:VkrWa.219193$lK4.6...@twister1.libero.it...
> >
[cut]

AGGIORNAMENTO:

cercando su Google mi sono imbattuto in questo thread

http://groups.google.it/groups?hl=it&lr=&ie=UTF-8&threadm=8s75mu%24orj%241%4
0suite03.caspur.it&rnum=1&prev=/groups%3Fhl%3Dit%26lr%3D%26ie%3DUTF-8%26selm
%3D8s75mu%2524orj%25241%2540suite03.caspur.it

dal titolo Una volta si' e una no
dell'ottobre 2000 dove Sergio Mazza, (sempre lui) risolve il mio problema
dicendo di referenziare bene gli oggetti.
In sostanza mettere sempre (che palle) WordApp. davanti ad ogni comando Word

(logicamente se fai Dim WordApp as Word.Object)

Cosě facendo una delle mie procedure funziona.

Il problema č l'altra.

Devo far fare a Word una serie di sostituzioni e ho utilizzato un
"raccoglitore" trovato su microsoft.public.it.office.word
http://groups.google.it/groups?hl=it&lr=&ie=UTF-8&threadm=19yTa.5763%24Df5.1
38545%40news1.tin.it&rnum=1&prev=/groups%3Fhl%3Dit%26lr%3D%26ie%3DISO-8859-1
%26q%3Dottimizzazione%2Bmacro%26btnG%3DCerca%2Bcon%2BGoogle%26meta%3Dgroup%2
53Dmicrosoft.public.it.office.word
che qui vi posto:

Sub formPnd()
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting

ImpostaParametri Testo:="Event", TestoNuovo:="Dati"
ImpostaParametri Testo:="Date", TestoNuovo:="Anno"
ImpostaParametri Testo:="White", TestoNuovo:="Bianco"
ImpostaParametri Testo:="Black", TestoNuovo:="Nero"
ImpostaParametri Testo:="Result", TestoNuovo:="Risultato"
ImpostaParametri Testo:="ECO", TestoNuovo:="Apertura"
End Sub

Sub ImpostaParametri(byVal Testo As String, byVal TestoNuovo As String)
With Selection.Find
.Text = Testo
.Replacement.Text = TestoNuovo
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

End Sub

Il problema č che non riesco a referenziare bene la routine ImpostaParametri
ogni volta si blocca su questo.
Cioč anche se scrivo:

WordApp.Selection.Find.Replacement.ClearFormatting
ImpostaParametri Testo:="Event", TestoNuovo:="Dati"
mi da errore.

Devo fare le sostituzioni una a una o posso sperare in una soluzione?

Grazie a tutti e soprattutto a Sergio "CreateObjet" MAzza
Ciao
MArco

Sergio MAZZA

unread,
Aug 1, 2003, 1:15:21 PM8/1/03
to
"Marco" <marpis...@yahoo.it> ha scritto nel messaggio
news:t0xWa.219938$Ny5.6...@twister2.libero.it...

>
> (logicamente se fai Dim WordApp as Word.Object)

Forse era meglio Dim WordApp as Word.Application

> Così facendo una delle mie procedure funziona.
>
> Il problema è l'altra.

> Il problema è che non riesco a referenziare bene la routine


ImpostaParametri
> ogni volta si blocca su questo.

> Cioè anche se scrivo:


>
> WordApp.Selection.Find.Replacement.ClearFormatting
> ImpostaParametri Testo:="Event", TestoNuovo:="Dati"
> mi da errore.
>
> Devo fare le sostituzioni una a una o posso sperare in una soluzione?
>
> Grazie a tutti e soprattutto a Sergio "CreateObjet" MAzza
> Ciao
> MArco

Aspe', facciamo un po' di ordine; queste sub sono scritte in VBA "lato word"
no? Quindi manca il riferimento all'oggetto principale, l'oggetto
application. Ma se utilizzi delle sub dovresti dichiarare l'oggetto
application come globale.
Dim WordApp as Word.Application
set WordApp = createobject("Word.Application")

Sub ImpostaParametri(byVal Testo As String, byVal TestoNuovo As String)

With WordApp.Selection.Find
etc. etc.
End sub

Sub formPnd()
WordApp.Selection.Find.ClearFormatting
etc. etc.
End Sub

TuaSub
ImpostaParametri "Event", "Dati"

Alla chiusura dell'applicazione devi testare se l'oggetto WordApp è ancora
vivo, se è così devi chiuderlo; e sopratutto inserire la gestione degli
errori nella TuaSub che preveda lo stesso test...

Spero di aver capito.

Ciao.

--
Sergio CreateObject("MAZZA")


Marco

unread,
Aug 1, 2003, 3:59:45 PM8/1/03
to

"Sergio MAZZA" <sergi...@tiscali.it> ha scritto nel messaggio
news:JexWa.8670$an6.2...@news1.tin.it...

> "Marco" <marpis...@yahoo.it> ha scritto nel messaggio
> news:t0xWa.219938$Ny5.6...@twister2.libero.it...

> Forse era meglio Dim WordApp as Word.Application

Qual'è la differenza??


[Cut]


> Aspe', facciamo un po' di ordine; queste sub sono scritte in VBA "lato
word"
> no? Quindi manca il riferimento all'oggetto principale, l'oggetto
> application. Ma se utilizzi delle sub dovresti dichiarare l'oggetto
> application come globale.
> Dim WordApp as Word.Application
> set WordApp = createobject("Word.Application")

Fin qui ci siamo e così ho risolto i problemi dell'altra

> Sub ImpostaParametri(byVal Testo As String, byVal TestoNuovo As String)
> With WordApp.Selection.Find
> etc. etc.
> End sub

Se scrivo così mi ritorna un errore 91 variabile oggetto o variabile del
blocco With non impostata


> Sub formPnd()
> WordApp.Selection.Find.ClearFormatting
> etc. etc.
> End Sub
>
> TuaSub
> ImpostaParametri "Event", "Dati"
>
> Alla chiusura dell'applicazione devi testare se l'oggetto WordApp è ancora
> vivo, se è così devi chiuderlo; e sopratutto inserire la gestione degli
> errori nella TuaSub che preveda lo stesso test...
>
> Spero di aver capito.
>
> Ciao.
>
> --
> Sergio CreateObject("MAZZA")

Suggerimenti???

Ciao
Marco


Sergio MAZZA

unread,
Aug 2, 2003, 12:10:06 PM8/2/03
to
"Marco" <marpis...@yahoo.it> ha scritto nel messaggio
news:REzWa.220417$lK4.6...@twister1.libero.it...
>
> Qual'è la differenza??

Con questa dichiarazione hai le proprietà/metodi visibili quando premi il
"punto" dopo l'oggetto e MS la consiglia.

> Se scrivo così mi ritorna un errore 91 variabile oggetto o variabile del
> blocco With non impostata

Strano; con il debug ci passi nella dim globale?

> Suggerimenti???

Invia il codice se non risolvi;

> Ciao
> Marco

Ciao.

--
Sergio MAZZA


Marco

unread,
Aug 2, 2003, 12:39:55 PM8/2/03
to

> Strano; con il debug ci passi nella dim globale?

Ci arrivo e si blocca in questo punto:

Sub ImpostaParametri(ByVal Testo As String, ByVal TestoNuovo As String)
With Selection.Find


Invia il codice se non risolvi;

Ecco a Lei, Maestro

' Crea l'oggeto Word e apre il file specificato
On Error GoTo ErroreImportazione

Dim WordApp As Word.Application
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = False
WordApp.Documents.Open FileName:=PercorsoFile

WordApp.Selection.Find.ClearFormatting
WordApp.Selection.Find.Replacement.ClearFormatting

'Esegue le sostituzioni dei caratteri
ImpostaParametri Testo:=" ", TestoNuovo:=""
ImpostaParametri Testo:="_", TestoNuovo:=""
ImpostaParametri Testo:="~", TestoNuovo:="ņ"
ImpostaParametri Testo:="", TestoNuovo:="°"
ImpostaParametri Testo:="^", TestoNuovo:="ą"
ImpostaParametri Testo:="¯", TestoNuovo:="ł"
ImpostaParametri Testo:=ChrW(8220), TestoNuovo:="ģ"
ImpostaParametri Testo:="Z", TestoNuovo:="é"
ImpostaParametri Testo:="¸", TestoNuovo:="č"
ImpostaParametri Testo:="¤", TestoNuovo:="§"

Dim NomeRtf As String
Dim Percorso As String
Dim LunghezzaNome As Variant
Dim NomeSenzaEstensione As Long
Dim Nome As String
Dim NomeTXT As String


NomeRtf = WordApp.ActiveDocument.Name
Percorso = WordApp.ActiveDocument.Path
LunghezzaNome = Len(PercorsoFile)
NomeSenzaEstensione = (LunghezzaNome - 4)
Nome = Left(PercorsoFile, NomeSenzaEstensione)
NomeTXT = Nome & ".txt"

WordApp.ActiveDocument.SaveAs FileName:=NomeTXT, FileFormat:= _
wdFormatText, LockComments:=False, Password:="",
AddToRecentFiles:=False, _
WritePassword:="", ReadOnlyRecommended:=False,
EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False,
SaveAsAOCELetter:= _
False
WordApp.Quit
Set WordApp = Nothing

Sub ImpostaParametri(ByVal Testo As String, ByVal TestoNuovo As String)

' Routine che passa i parametri per la sostituzione dei caratteri alla
routine
' di sostituzione. Definiti TESTO e TESTONUOVO gli dice di trovare il primo
' e sostituirlo col secondo con la formattazione adeguata

With Selection.Find
.Text = Testo
.Replacement.Text = TestoNuovo
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll


End Sub
Ciao
Marco

Sergio MAZZA

unread,
Aug 3, 2003, 9:04:51 AM8/3/03
to
"Marco" <marpis...@yahoo.it> ha scritto nel messaggio
news:vPRWa.221768$Ny5.6...@twister2.libero.it...

>
> > Strano; con il debug ci passi nella dim globale?
>
> Ci arrivo e si blocca in questo punto:
>
> Sub ImpostaParametri(ByVal Testo As String, ByVal TestoNuovo As String)
> With Selection.Find
>
----- super omissis ------
> Ciao
> Marco
>

Prova con:
Public WordApp As Word.Application
...

e poi

Sub ImpostaParametri(ByVal Testo As String, ByVal TestoNuovo As String)

With WordApp.Selection.Find

Marco

unread,
Aug 3, 2003, 9:52:04 AM8/3/03
to

"Sergio MAZZA" <sergi...@tiscali.it> ha scritto nel messaggio
news:bgj0gu$bi6$1...@canarie.caspur.it...
Niente da fare, ho provato sia con

Sub ImpostaParametri(ByVal Testo As String, ByVal TestoNuovo As String)
With WordApp.Selection.Find

che con

> Sub ImpostaParametri(ByVal Testo As String, ByVal TestoNuovo As String)
> With Selection.Find

Mi rivolgo al Mago di Arcella??? o č meglio il mago Forrest??

Provo ad eliminare la sub ImpostaParametri e a fare le sostituzioni a
"manella"
Ti tengo informato

Ciao
Marco


Marco

unread,
Aug 3, 2003, 10:44:24 AM8/3/03
to

"Sergio MAZZA" <sergi...@tiscali.it> ha scritto nel messaggio
news:JexWa.8670$an6.2...@news1.tin.it...

> "Marco" <marpis...@yahoo.it> ha scritto nel messaggio
> news:t0xWa.219938$Ny5.6...@twister2.libero.it...

[cut]

> Aspe', facciamo un po' di ordine; queste sub sono scritte in VBA "lato
word"
> no? Quindi manca il riferimento all'oggetto principale, l'oggetto
> application. Ma se utilizzi delle sub dovresti dichiarare l'oggetto
> application come globale.
> Dim WordApp as Word.Application
> set WordApp = createobject("Word.Application")
>
> Sub ImpostaParametri(byVal Testo As String, byVal TestoNuovo As String)
> With WordApp.Selection.Find
> etc. etc.
> End sub
>
> Sub formPnd()
> WordApp.Selection.Find.ClearFormatting
> etc. etc.
> End Sub
>
> TuaSub
> ImpostaParametri "Event", "Dati"
>
> Alla chiusura dell'applicazione devi testare se l'oggetto WordApp è ancora
> vivo, se è così devi chiuderlo; e sopratutto inserire la gestione degli
> errori nella TuaSub che preveda lo stesso test...
>
> Spero di aver capito.
>
> Ciao.
>
> --
> Sergio CreateObject("MAZZA")
>

AGGIORNAMENTO:

Ho eliminato la procedura IMPOSTA PARAMETRI scrivendo " a manella " tutte le
sostituzioni e mi fa andare avanti.
Dopo aver fatto le sostituzioni devo trovare una certa stringa ad inizio
riga e devo eliminare tutta la riga perché non so quanti caratteri ci
possano essere

Per fare questo utilizzo questa procedura, sempre lato Word:

Dim colFoundItems As New Collection
Dim frase As Word.Range
Dim intFindCounter As Integer
With WordApp.Selection.Find
.ClearFormatting


.Forward = True
.Wrap = wdFindContinue

.Text = "§§§§§"
.MatchWildcards = True
.Execute
Do While WordApp.Selection.Find..Found =
True
intFindCounter = intFindCounter + 1
colFoundItems.Add Selection.Range,
CStr(intFindCounter)
WordApp.Selection.Find.Execute
Loop
End With


' Per ogni occorrenza seleziona la riga e la elimina

For Each frase In colFoundItems
If frase.Text = "§§§§§" Then
WordApp.Selection.HomeKey Unit:=wdStory

With WordApp.Selection.Find
.ClearFormatting
.Text = "§§§§§"


.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With

WordApp.Selection.Find.Execute
WordApp.Selection.EndKey Unit:=wdLine,
Extend:=wdExtend
WordApp.Selection.Delete Unit:=wdCharacter,
Count:= End If
Next frase

L'altro punto in cui si blocca è questo:


...

colFoundItems.Add Selection.Range, CStr(intFindCounter)

Non so bene allora come fare riferimento all'oggetto Collection e chiuderlo
bene

PS. alla fine della procedura c'è

Set frase = Noting
Set colFoundItems = Nothing

PS. ho provato anche a definire
Public colFoundItems As New Collection
ma senza risultato

Ciao
Marco


Marco

unread,
Aug 3, 2003, 12:41:25 PM8/3/03
to

"Marco" <marpis...@yahoo.it> ha scritto nel messaggio
news:cd9Xa.223042$Ny5.6...@twister2.libero.it...

>
> "Sergio MAZZA" <sergi...@tiscali.it> ha scritto nel messaggio
> news:JexWa.8670$an6.2...@news1.tin.it...
> > "Marco" <marpis...@yahoo.it> ha scritto nel messaggio
> > news:t0xWa.219938$Ny5.6...@twister2.libero.it...
>
[cut]
Ho risolto, pare, (per ora ho provato solo con 10 kg di aglio sulla porta,
cornetti vari , incensi e incrocio permanente di gambe e dita) utilizzando
questo codice.

Il problema era:

1) trovare una stringa ad inizio paragrafo
2) selezionare tutta la riga
3) eliminarla

piuttosto che quella spippolata precedente ho utilizzato questo codice:

With WordApp.ActiveDocument.Content.Find
.ClearFormatting
Do While .Execute(FindText:="STRINGA", Forward:=True, _
Format:=True) = True ' Trova la stringa
With .parent
.EndOf Unit:=wdParagraph, Extend:=wdExtend 'seleziona
tutta la riga
.Delete ' la cancella
.Move Unit:=wdParagraph, Count: =1 ' riprende il ciclo
End With
Loop
End With

Così sembra funzionare e non bloccarsi una volta sì ed una no.

Ciao a tutti e grazie ancora a Sergio
Marco


Sergio MAZZA

unread,
Aug 4, 2003, 3:45:55 AM8/4/03
to
"Marco" <marpis...@yahoo.it> ha scritto nel messaggio
news:VWaXa.223549$lK4.6...@twister1.libero.it...

>
> Ho risolto, pare, (per ora ho provato solo con 10 kg di aglio sulla porta,
> cornetti vari , incensi e incrocio permanente di gambe e dita) utilizzando
> questo codice.

Urgh! Ma cosě tieni lontato pure i cristiani...

> Il problema era:
>
> 1) trovare una stringa ad inizio paragrafo
> 2) selezionare tutta la riga
> 3) eliminarla
>
> piuttosto che quella spippolata precedente ho utilizzato questo codice:
>
> With WordApp.ActiveDocument.Content.Find
> .ClearFormatting
> Do While .Execute(FindText:="STRINGA", Forward:=True, _
> Format:=True) = True ' Trova la stringa
> With .parent
> .EndOf Unit:=wdParagraph, Extend:=wdExtend 'seleziona
> tutta la riga
> .Delete ' la cancella
> .Move Unit:=wdParagraph, Count: =1 ' riprende il ciclo
> End With
> Loop
> End With
>

> Cosě sembra funzionare e non bloccarsi una volta sě ed una no.


>
> Ciao a tutti e grazie ancora a Sergio
> Marco
>


Nel messaggio precedente dicevi di essere in "lato Word" o sbaglio? Se č
cosě non hai bisogno di istanziare di nuovo "word.application"...

Ciao.

--
Sergio MAZZA


0 new messages