none
VB.net: Errore apertura file Excel RRS feed

  • Domanda

  • Buongiorno, eccomi qui con un'altro problema che non capisco...
    Ho definito le variabili Pubbliche in un Modulo  in questa maniera:

    Imports Excel = Microsoft.Office.Interop.Excel

    e ho definito gli oggetti così:

     ReadOnly APP As New Excel.Application
     Public worksheet As New Excel.Worksheet
     Public workbook As New Excel.Workbook

    in seguito ho definito le funzioni nelle varie Form in cui devo aprire e gestire il file di Exce richiamando le vaiabili Pubbliche definite nel Modulo:

    ApriExcel(), ApriSheet() e Chiudiexcel() di cui riporto il codice

    Public Class Form1

    Private Sub ApriFileExcel()
            Try

                workbook = APP.Workbooks.Open(FileExcel) 'Qua è dove genera errore (vedi giù)

                 RunExcel = True
            Catch ex As Exception

                'Me.Text = "StampaEtichette -  Excel chiuso"
                MsgBox("ERRORE FILE EXCEL! il FILE " & Chr(34) & ex.Message)
            End Try
        End Sub

        Private Function ApriSheet(ByRef mySheet As String) As Boolean

            ApriSheet = False
            Try
                If mySheet <> "" Then
                      worksheet = workbook.Worksheets(mySheet)
                    ApriSheet = True
                End If

            Catch ex As Exception
            End Try
        End Function

        Private Sub ChiudiExcel(ByRef CampoDaSalvare As Boolean)
            Try
                If RunExcel Then
                    If CampoDaSalvare Then
                        If MsgBox("Attenzione! Salvare i dati?", vbYesNo + vbInformation) = vbYes Then
                            'Salvadati()
                            workbook.Save()
                        End If
                    End If

                    workbook.Close()
                    'Termino applicazione Ecel
                    APP.Quit()
                End If
            Catch
            End Try
            RunExcel = False
        End Sub

    End Class

    Il problema che nel aprire il file di Excel mi genera un errore:

    Se tutto il codice di gestione del file di excel quello definito nel Modulo come Pubblic) , lo inserisco nella Form dove devo gestire i dati, funziona perfettamente.
    Non capisco perchè non debba funzionare inserendolo come Public in un Modulo e richiamando le funzioni da forms differenti.

    Sapete darmi qualche indicazione dove sbaglio?

    Grazie mille








    • Modificato NewContex martedì 14 aprile 2020 09:05
    domenica 5 aprile 2020 14:41

Risposte

Tutte le risposte

  • hai scritto

    workbook = APP.Workbooks.Open(FileExcel)

    ma FileExcel dove è definito ?

    domenica 5 aprile 2020 16:23
  • Ciao patel45...FileExcel è definito a monte come variabile Pubblica

     Public FileExcel As String = SettingPath & "\" & My.Settings.NomeFileExcel

    cmq il dato che arriva alla routine ApriExcel() è corretto.

    domenica 5 aprile 2020 16:38
  • :(( altro problema di Excel apparso oggi:
    (Posto il codice)

    Imports Excel = Microsoft.Office.Interop.Excel
    Imports Microsoft.Office

    Public Class FrmTabelle
        Inherits System.Windows.Forms.Form

        Dim APP As New Excel.Application      'errore: Il tipo  Excel.Application non definito
        Dim worksheet As Excel.Worksheet    'errore: Il tipo  Excel.Application non definito
        Dim workbook As Excel.Workbook      'errore: Il tipo  Excel.Application non definito

    end Class

    però modificato così funziona:

        Dim APP As New Microsoft.Office.Interop.Excel.Application
        Dim worksheet As Microsoft.Office.Interop.Excel.Worksheet
        Dim workbook As Microsoft.Office.Interop.Excel.Workbook

    quindi pare che la sintassi: Imports Excel = Microsoft.Office.Interop.Excel
    non gli piaccia più anche se fino a ieri non vi erano problemi...
    qualcuno sa darmi qualche dritta ed il motivo che oggi stranamente non riconosce la parolina Excel.Microsoft.Office...... ??

    Grazie


    • Modificato NewContex mercoledì 8 aprile 2020 08:03
    mercoledì 8 aprile 2020 08:03
  • Imports Microsoft.Office.Interop

    non

    Imports Excel = Microsoft.Office.Interop.Excel

    mercoledì 8 aprile 2020 08:10
  • mmmm...ho provato a modificare (anche se non capisco visto che fino a ieri sera funzionava!!!) ma non funziona ugualmente.

    Ossia

    Modificando Imports Excel = Microsoft.Office.Interop.Excel in Imports Microsoft.Office.Interop
    l'errore rimane

    Dim APP As New Excel.Application      'errore: Il tipo  Excel.Application non definito
        Dim worksheet As Excel.Worksheet    'errore: Il tipo  Excel.Application non definito
        Dim workbook As Excel.Workbook      'errore: Il tipo  Excel.Application non definito

    invece questo funziona
        Dim APP As New Microsoft.Office.Interop.Excel.Application
        Dim worksheet As Microsoft.Office.Interop.Excel.Worksheet
        Dim workbook As Microsoft.Office.Interop.Excel.Workbook

    quindi non mi cambia la situazione!

    mercoledì 8 aprile 2020 08:32
  • ho provato su un mio progetto la riga

    Imports Excel = Microsoft.Office.Interop.Excel

    e funziona, non so cosa consigliarti

    mercoledì 8 aprile 2020 09:25
  • Non ho al momento modo di provarlo, ma butto li...

    Non è che anche in Microsoft.Office è presente una classe o un NameSpace "Excel"?

    Se così fosse, scrivendo solo Excel, il compilatore non sa se si tratta di Microsoft.Office.Excel oppure di Microsoft.Office.Interop.Excel

    Prova ad eliminare l'imports di Microsoft.Office, oppure verifica che non esista nessun Microsof.Office.Excel che andrebbe in conflitto con l'altra istruzione di imports

    • Contrassegnato come risposta NewContex mercoledì 8 aprile 2020 16:34
    • Contrassegno come risposta annullato NewContex martedì 14 aprile 2020 08:55
    mercoledì 8 aprile 2020 10:34
  • Ma certo vbMizio, hai fatto centro!!!
    ...quando uno a le fette di salame sugli occhi...il modulo aveva lo stesso nome.

    Modulo excel
            ....
            ....

    end Modulo

    mercoledì 8 aprile 2020 16:34
  • Rimetto attivo il problema...perchè l'errore iniziale rimane.

    Ho modificato la domanda iniziale per maggior chiarezza!

     
    martedì 14 aprile 2020 08:58
  • Thread archiviato. 

    • Microsoft offre questo servizio gratuitamente, per aiutare gli utenti e aumentare il database dei prodotti e delle tecnologie. Il contenuto fornito “as is“ non comporta alcuna responsabilità da parte dell’azienda.

    lunedì 29 giugno 2020 16:56
    Moderatore