Newsgroup: it.comp.appl.access
Titolo: Errore CreateObject "server remoto non disponibile"

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

 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...

 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

 >
[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

 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")

 Sergio CreateObject("MAZZA")
 Suggerimenti???
Ciao
Marco

 Marco
Ciao.
--
Sergio MAZZA

> 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


Prova con:
Public WordApp As Word.Application
...
e poi
Sub ImpostaParametri(ByVal Testo As String, ByVal TestoNuovo As String)
    With WordApp.Selection.Find


     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


 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


 [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


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