Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 7 su 7

errore 438 in apertura file XLS in pagina ASP

  1. #1
    misonsan non è in linea Scolaretto
    grazie a tutti gli amici

    da dentro una pagina ASP voglio aprire un file XLS.

    il codice usato è il seguente

    Dim oApp, oWks, oSheet '<-- creo gli oggetti dichiarandone i tipi

    Set oApp = CreateObject("Excel.Application") '<-- assegno all'oggetto l'istanza di Excel

    if Err.Number <> 0 then
    MessErroreListino = "caricatoOrdiniXls check_01 - Errore " & err.number & " " & Err.description
    exit function
    end if

    Set oWks = oApp.Workbooks

    Set oSheet = oWks.Worksheets

    if Err.Number <> 0 then
    MessErroreListino = "caricatoOrdiniXls check_02 - Errore " & err.number & " " & Err.description
    exit function
    end if

    esce sulla definizione in rosso con il codice d'errore 438 Proprietà o metodo non supportati dall'oggetto


    qualcuno sa darmi una mano ?

    grazie


    Moreno


  2. #2
    L'avatar di dragone bianco
    dragone bianco non è in linea Certosino
    Ciao

    ti sei accorto che non gli dici a che file si riferisce manca la parte in rosso
    e il file deve essere già aperto altrimenti devi usare l'open workbooks
    Idem per lo Worksheets manca il nome del foglio a cui di riferisci

    Set oWks = oApp.Workbooks("c:/prova.xls")
    
    Set oSheet = oWks.Worksheets("Foglio1")
    
    Ciao
    ℹ️ Leggi di più su dragone bianco ...

  3. #3
    misonsan non è in linea Scolaretto
    grazie Dragone Bianco

    Il problema è che il file è multifoglio e DEVO leggere sequenzialemnte tutti i fogli per verificare se all'interno ci sono delle informazioni da elaborare.
    Quindi non posso indicargli un foglio uin particolare.

    aspetto una risposta.

    grazie per la cortesia

    ciao

    Moreno


  4. #4
    L'avatar di dragone bianco
    dragone bianco non è in linea Certosino
    in questo caso si usa un ciclo (o il for i o il For Each)

    For each Foglio in oWks.Worksheets
        ... tuo codice per il foglio corrente....
    next foglio
    
    Foglio rappresenta un oggetto worksheets del foglio corrente
    per fare riferimento ad esso basta fare così
    Foglio.range("A1")

    For I=1 to oWks.Worksheets.count
       ... tuo codice per il foglio corrente....
    next foglio
    
    per fare riferimento ad un foglio basta fare
    oWks.Worksheets(i).range("A1")

    Ciao
    ℹ️ Leggi di più su dragone bianco ...

  5. #5
    misonsan non è in linea Scolaretto
    Ciao Dragone Bianco

    ti ringrazio innanzi tutto per la partecipazione e per la cortesia
    Ho provato a inserire le tue correzzioni, che sembravano già molto in linea con quanto avevo scritto, ma non va.
    mi permetto di metterti il codice che uso nella pagina ASP


    Function caricatoOrdiniXls()
     On Error Resume Next 
    
    caricatoOrdiniXls = false
    
    dim rs, rs1, rs2, Strsql, Strsql1, Strsql2, Strsql3, GG, MM, YYYY, DataListino, Indice, Prog, NrecListino, NrecListinoF, ParamSearch, ListinoMove, x, endLoop, Fornitore, f
    dim Fso 
    dim FoglioElaborabile, NumFornitore, NumOrdSocioXLS, Valore, NumartOrd, ImpArtOrd
    
    
    
    Dim oApp, oWks, oSheet                                     '<-- creo gli oggetti dichiarandone i tipi
    
    Set oApp = CreateObject("Excel.Application")        '<-- assegno all'oggetto l'istanza di Excel
    
    if Err.Number <> 0 then
        MessErroreListino = "caricatoOrdiniXls check_01 - Errore  " & err.number & " " & Err.description
        exit function
    end if 
    
        
            FileXLS = "C:\FileRicevuti\"  & xlsSocio 
         
            Set fso = Server.CreateObject("Scripting.FileSystemObject")
            if not fso.FileExists(FileXLS) then
                MessErroreListino = "check_01 - file " & FileXLS  &  " non presente su Cartella  - FileRicevuti"
                exit function
            else
      
                OApp.Workbooks.Open FileXLS   ' elaboro il file excel 
            
                if Err.Number <> 0 then
                    MessErroreListino = "caricatoOrdiniXls check_9999 - Errore  " & err.number & " " & Err.description
                    exit function
                end if 
    
                ParamSearch = "FOGLIO"            ' Imposto il nome parziale del foglio da cancellare perchè inutili
                
                For x=1 to oWks.Worksheets.count
        
                
         ' diagnostico            
                    f =  oWks.Worksheets.Count
                    MessErroreListino = "check_55 -  N.fogli " & f
                    exit function
    ' fine diagnostico
    
    ..............  istruzioni 
    
    next
    
    ..................   altre istruzioni
    

    come vedi ho messo anche un diagnostico per vedere il n.ro di fogli del mio file, ma mi viene visualizzato un messaggio di errore che non evidenzia nessun numero di fogli, quindi non riesce ad eseguire l'istruzione oWks.Worksheets.count

    sicuramente è solo una banale dimenticanza di assegnazioni, am non so come e dove farle.

    riesci a capire perchè ?

    ti ripeto che sto scrivendo codice dentro una pagina ASP, per evitare eventuali dubbi.

    ciao e grazie


    Moreno


    Ultima modifica di dragone bianco; 06-01-2009 20:50 

  6. #6
    L'avatar di dragone bianco
    dragone bianco non è in linea Certosino
    Ciao
    Hai dimenticato di settare oWks in questo passaggio (manca la parte rossa)
    Set  oWks=OApp.Workbooks.Open FileXLS   ' elaboro il file excel
    
    alcuni consigli pratici
    per il test del file usa DIR

    if len(dir(FileXLS)=0) then
          MessErroreListino = "check_01 - file " & FileXLS  &  " non presente su Cartella  - FileRicevuti"
                exit function
    end if
    
    per la gestione degli errori userei On error Goto
    On error Goto errore
    
    ....in fondo alla funzione primadel end function scriverei.....
    
    exit function
    Errore:
    ' Verifica la presenza dell'errore, quindi visualizza il messaggio.
    If Err.Number <> 0 Then
        Msg = "Errore " & Str(Err.Number) & " generato da " _
                & Err.Source & Chr(13) & Err.Description
        MsgBox Msg, , "Errore", Err.Helpfile, Err.HelpContext
        Err.clear
    End If
    Resume Next
    
    Conoscendo il numero di errore puoi con una select gestire in modo differente gli errori
    If Err.Number <> 0 Then
        Select case Err.Number
             case=11 'errore di divisibilità per zero
                 Msg = "Errore " & Str(Err.Number) & " generato da " _
                & Err.Source & Chr(13) & Err.Description
                 MsgBox Msg, , "Errore", Err.Helpfile, Err.HelpContext
                     Err.clear
                  Resume Next
           case else
                 Msg = "Errore " & Str(Err.Number) & " generato da " _
                & Err.Source & Chr(13) & Err.Description
                 MsgBox Msg, , "Errore", Err.Helpfile, Err.HelpContext
        end select
    End If
    
    in questo esempio se trova un errore di divisibilità per zero appare il messaggio e dopo aver confermato continua il codice
    per gli altri errori si blocca
    Semplifica la gestione degli errori

    Ciao
    ℹ️ Leggi di più su dragone bianco ...

  7. #7
    misonsan non è in linea Scolaretto
    Dragone Bianco sei un MITO


    GRAZIE


    Funziona bene

    adesso posso proseguire con il codice




    ciao Moreno

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. VB.net: Errore in apertura file Excel
    Da newcontex nel forum Visual Basic .Net
    Risposte: 2
    Ultimo Post: 30-04-2020, 09:53
  2. Errore apertura file xls inviato via e-mail con vba
    Da Gioventus nel forum Microsoft Word
    Risposte: 10
    Ultimo Post: 11-02-2010, 14:26
  3. errore apertura file word da excel
    Da jon nel forum Microsoft Excel
    Risposte: 3
    Ultimo Post: 13-05-2009, 09:20
  4. Errore durante apertura file mdb
    Da killamah nel forum Visual Basic 6
    Risposte: 8
    Ultimo Post: 23-10-2008, 10:05
  5. Errore nell’apertura dei file XLS
    Da MAURO59 nel forum Microsoft Word
    Risposte: 8
    Ultimo Post: 30-03-2005, 13:01