Uscire da excel con il VB

di il
2 risposte

Uscire da excel con il VB

Scusate se vi "importuno" ancora (vedo che gli ultimi due messaggi sono miei).

Ma avevo bisogno di una dritta per cominciare a studiare/lavorare e informarmi sulla fattibilità di un progetto in VB.

Mi chiedevo, in particolare, se VB ha la capacità di utilizzare un dato che proviene da excel, per "uscire" da questo programma ed eseguire operazioni su un altro programma esterno (aprire finestre, farce clic su determinate zone, inserire valori o numeri).

E' una cosa possibile? O, che voi sappiate, esistono altro linguaggi per ottenere questo scopo? ....so che è una domanda molto generale, ma è proprio per questo che (non conoscendo di persona nessun programmatore) non riesco ad avere un input di partenza, anche perchè le informazioni che trovo sul VB in un manuale che sto leggendo sono, a seconda dei momenti, o troppo specialistiche o troppo generali per sapere se è questa la strada giusta per affrontare questo progetto.

Grazie mille per ogni aiuto (anche un link o un'informazione di semplice fattibilità o meno) che potesse indirizzarmi.

Luca

2 Risposte

  • Re: Uscire da excel con il VB

    Nel lontano 2000 ebbi la necessità di esporre il 'Rendimento medio' di un cliente in un programma che ho sviluppato per la gestione dei Clienti per Promotori Finanziari.
    Siccome esisteva un foglio Excel con le formule giuste per effettuare il calcolo allora ho esportato sul foglio, a cominciare da una riga e colonna prestabiliti i valori dei movimenti e le rispettive date, quindi estraevo da una determinata cella il risultato del calcolo.
    Ti propongo un esempio di quel passaggio:
    Private Sub CalcolaRendimento()
    Dim MyXL As Object
    Dim WkBk As Object, ShFoglio As Object
    Dim XlsFile As String, XlsFoglio As String, NomeFoglio As String
    Dim Jy As Integer, dblRendimento  As Double
    Dim TabXY(5) As Long
    
    On Error GoTo CalcolaRendERR
    Me.WindowState = vbHourglass
    DoEvents
    
    TabXY(1) = 1000
    TabXY(2) = 2000
    TabXY(3) = 3000
    TabXY(4) = 4000
    TabXY(5) = 5555
    
    'file Excel con le formule che mi servivano
    XlsFile = App.Path & "\CkRendimento.xls"
    'verifico la sua esistenza
    If Dir(XlsFile) = "" Then
        MsgBox "File Excel inesistente: " & XlsFile
        Exit Sub
    End If
    'suo foglio con le formule che mi servivano
    XlsFoglio = "Calcoli"
    
    'apertura del file Excel
    Set MyXL = GetObject(XlsFile)
    Set WkBk = MyXL.Application.Workbooks(1)
    'cerco il Foglio giusto
    NomeFoglio = ""
    'controllo l'esistenza del foglio desiderato: Calcoli
    For Jy = 1 To WkBk.Sheets.Count           'per ogni foglio esistente
        If UCase(WkBk.Sheets(Jy).Name) = UCase(XlsFoglio) Then
            NomeFoglio = XlsFoglio
            Exit For
        End If
    Next Jy
    If NomeFoglio = "" Then
        MsgBox "Foglio inesistente: " & XlsFoglio
        Exit Sub
    End If
    
    Set ShFoglio = WkBk.Sheets(NomeFoglio)
    For Jy = 1 To UBound(TabXY)                 'per ogni prodotto definito nella tabella Globale
        ShFoglio.cells(Jy, 1) = TabXY(Jy)       'scrivo l'importo del movimento
    Next Jy
    'quindi estraggo il risultato del calcolo alla cella 1:9
    dblRendimento = Format(ShFoglio.cells(1, 9), "#0.00")
    
    'per salvare le modifiche effettuate sul foglio (se in Italiano, altrimenti ="Y"
    MyXL.Parent.Windows(1).Visible = True
    SendKeys "S"
    WkBk.Close
    
    Set WkBk = Nothing
    Set MyXL = Nothing
    Set ShFoglio = Nothing
    Me.WindowState = vbNormal
    Exit Sub
    
    CalcolaRendERR:
        If Err = 3012 Then Resume Next   'Object 'name' already exists.
        Me.WindowState = vbNormal
        MsgBox Err & ": " & Err.Description
    End Sub
    
    Buon lavoro
  • Re: Uscire da excel con il VB

    Grazie per la gentile risposta, Guido.

    Ma da quanto ho capito (non sono esperto in programmazione, lo avrai capito ) si tratta di una routine che serve ad estrarre dati da altri fogli di excel.

    Che tu sappia queste operazioni sono fattibili su un ambiante "non" microsoft (come per esempio una piattaforma scritta in java)?

    Grazie ancora

    Luca
Devi accedere o registrarti per scrivere nel forum
2 risposte