Condividi:        

visualbasic 2010 express e excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

visualbasic 2010 express e excel

Postdi karug64 » 04/03/14 19:15

Salve a tutti.
Ho quasi finito di realizzare un programmino in vba excel.
Vorrei provare a realizzarlo anche in visual basic 2010 express.

Mi interesserebbe sapere se in VB 2010 c'e' modo di interfacciarsi con file.xls, fogli, celle, range in maniera nativa (senza librerie di terze parti) e dove poter reperire qualche esempio (per esempio scrittura di valori su celle, lettura, cancellazione di valori da colonne, righe, ordinamento fogli su colonne ecc ecc)

Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: visualbasic 2010 express e excel

Postdi karug64 » 05/03/14 00:39

Ho trovato la soluzione su internet:
occorre inserire il riferimento alla "Microsoft Excel 14.0 Object Library"
e poi inserire questo codice :

Codice: Seleziona tutto
Imports Excel = Microsoft.Office.Interop.Excel

Public Class Form1
    Dim APP As New Excel.Application
    Dim worksheet As Excel.Worksheet
    Dim workbook As Excel.Workbook


quindi i riferimenti saranno del tipo


Codice: Seleziona tutto
workbook = APP.Workbooks.Open("d:\test\tabulato1.xls")
        worksheet = workbook.Sheets.Item(1)
        'Read the value from Cell A1, B1
        TextBox1.Text = worksheet.Cells(1, 1).Value
        TextBox2.Text = worksheet.Cells(1, 2).Value



Alla prossima domanda ....
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: visualbasic 2010 express e excel

Postdi Anthony47 » 06/03/14 01:06

Vedi viewtopic.php?f=26&t=93677&p=535983#p535983
viewtopic.php?p=538345#p538227

Similmente, non e' strettamente necessario inserire il riferimento alla "Microsoft Excel 14.0 Object Library" se usi la notazione "late binding" e quindi
Codice: Seleziona tutto
Set APP = CreateObject("excel.application")
Il vantaggio e' che l' applicazione VB dovrebbe girare anche su versioni Excel diverse da 2010 (Excel 14.0); di questo pero' non sono sicuro, dipende da come si imposta in VB tale riferimento. Quindi prendi con le pinze...

Un' altra opzione che potresti valutare e' l' inserimento nella tua applicazione di un ActiveX di tipo "spreadsheet" con cui puoi simulare un foglio di lavoro; senza quindi aver bisogno del pacchetto Office.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: visualbasic 2010 express e excel

Postdi karug64 » 06/03/14 22:19

Anthony47 ha scritto:Un' altra opzione che potresti valutare e' l' inserimento nella tua applicazione di un ActiveX di tipo "spreadsheet" con cui puoi simulare un foglio di lavoro; senza quindi aver bisogno del pacchetto Office.

Ciao


Ciao, Anthony.
Questa sarebbe proprio la soluzione (penso) migliore !!! Potresti indicarmi qualche activeX completo (magari in trial per provarlo) o se ne esiste qualcuno gratuito ?

P.S.
Eventualmente potresti essere cosi' gentile da spiegarmi come usarlo ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: visualbasic 2010 express e excel

Postdi Anthony47 » 07/03/14 01:32

In VBA e' disponibile un "Microsoft Office Spreadsheet 10.0", sia come controllo userform (se non e' gia' nella casella degli strumenti standard lo trovi in Menu /Strumenti /Controlli aggiuntivi) che come ActiveX da inserire direttamente sul documento (lo trovi tra gli "... Altri controlli"). Credo che corrisponda alla libreria MSOWC.dll o forse OWC10.exd (Office 2010 su Win7).

In Visual Basic standard non so come si selezionano i controlli, ma qui ne saprai piu' di me.

Come si usa? Come si usa un foglio Excel: alcune cose (le formule, ad esempio) si inseriscono nell' oggetto durante la progettazione, altre si inseriscono da programma usando le proprieta' dell' oggetto, altre le inserisce a mano l' utente secondo le istruzioni che bisogna dargli.
Avendo a disposizione Excel mi sono occupato marginalmente di questo attrezzino, devi esplorarlo con un po' di pazienza e tanti esperimenti.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: visualbasic 2010 express e excel

Postdi karug64 » 07/03/14 10:27

Ok. Grazie. Appena mi metto davanti al pc provo le soluzioni proposte. Intanto, come sempre, Grazie.
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: visualbasic 2010 express e excel

Postdi karug64 » 08/03/14 17:12

Dunque ....

ho seguito il suggerimento. Non ho inserito il riferimento ed ho scritto il seguente codice:

Codice: Seleziona tutto
Dim APP As Object
        Dim workbook As Object
        Dim worksheet As Object

        APP = CreateObject("excel.application")
        workbook = APP.Workbooks.Open("d:\test\x.xls")
        worksheet = workbook.Sheets.Item(1)
        TextBox1.Text = worksheet.Cells(1, 1).Value


e funziona. Non riesco, pero', a chiudere l'istanza salvando il file.

Potreste aiutarmi ?
Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: visualbasic 2010 express e excel

Postdi karug64 » 08/03/14 21:00

Mi rispondo da solo.

Codice: Seleziona tutto
workbook.save()
workbook.close()


Alla prossima.
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: visualbasic 2010 express e excel

Postdi Anthony47 » 10/03/14 00:50

Bravo...
Se vuoi anche chiudere l' istanza Excel userai
Codice: Seleziona tutto
    APP.Quit
    Set APP = Nothing


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: visualbasic 2010 express e excel

Postdi karug64 » 10/03/14 16:18

Grazie.

Avrei un domanda a livello di pura curiosita'.
Il programma che ho realizzato i vba fa un uso massiccio di excel (a cui si appoggia con fogli dati (che fungono da database), fogli di report ecc). Come detto vorrei cimentarmi a riscriverlo in visualbasic 2010.

La mia domanda è questa:
Secondo voi avrei dei vantaggi reali da questa soluzione ?
Cioe', lavorando su excel, è più opportuno utilizzare vba ? Oppure ritenete, per esperienza, che scritto in vb il programma risulti migliore ? E se si, quali vantaggi ed eventuali svantaggi pensate che ci siano ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: visualbasic 2010 express e excel

Postdi Anthony47 » 11/03/14 00:05

Il vantaggio e' che non c'e' bisogno di pagare la licenza Excel; quindi se il programma va usato da terzi potrebbe godere di questo vantaggio.
Se invece verra' usato solo da chi Excel certamente ce l' ha gia' non ha senso complicarsi la vita e complicarla all' utente.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: visualbasic 2010 express e excel

Postdi karug64 » 11/03/14 20:51

Per mia opinione aggiungerei che con vb2010 non consegni al cliente i sorgenti del prg dando un exe mentre con vba è tutto visibile ....
Nel mio caso, comunque, il problema dei sorgenti non sussiste e quindi se il codice prodotto è ugualmente robusto e performante, lascio tutto in vba.

Grazie e alla prossima.
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: visualbasic 2010 express e excel

Postdi karug64 » 11/03/14 21:06

Anthony47 ha scritto:In VBA e' disponibile un "Microsoft Office Spreadsheet 10.0", sia come controllo userform (se non e' gia' nella casella degli strumenti standard lo trovi in Menu /Strumenti /Controlli aggiuntivi).



Volevo utilizzare questo controllo da inserire su un form, ma tra i controlli aggiuntivi non trovo nessun controllo "Microsoft Office".
Utilizzo Office 2010.
Come posso fare per rimediare ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: visualbasic 2010 express e excel

Postdi Anthony47 » 12/03/14 00:02

Forse in effetti non viene distribuito con Office2010, ma il controllo per le vecchie versioni gira anche su XL2010; lo puoi scaricare qui:
http://www.microsoft.com/en-us/download ... x?id=22276
Sono citate anche le istruzioni di installazione.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: visualbasic 2010 express e excel

Postdi karug64 » 12/03/14 12:26

Fatto. Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: visualbasic 2010 express e excel

Postdi karug64 » 12/03/14 21:34

Un'ulteriore domanda sul controllo appena installato:

Quando lancio l'applicazione compare una finestra di avvertimento che chiede se si e' sicuri di utilizzare un activeX di terze parti ecc, ecc. (Non c'e' modo di non visualizzarla ? )

Inoltre, dopo aver compilato il foglio, non riesco a trovare il modo per stamparne il contenuto.
Non è possibile ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: visualbasic 2010 express e excel

Postdi Anthony47 » 13/03/14 01:04

Per i primo problema, vedo che chi ne parla trova la soluzione in questo questo articolo Microsoft: http://support.microsoft.com/?scid=kb;e ... 530&sid=50
Suggerisce la creazione di due nuove chiavi di registro, ma mi sembrea strano che non viene citato Excel 2003 tra i "si applica a". Non so valutare le implicazioni di questa operazione, e' una competenza di sistema che non posseggo; ma mi immagino che sia una cosa che bisognerebbe fare su tutti i pc che eseguiranno l' applicazione... Hummm...

Per la stampa, il controllo ha una sua guida (clicca sulle intestazioni, il simbolo con il "?") dove dice che "per stampare un foglio di calcolo su una pagina Web, è necessario stampare l'intera pagina Web": trasponendo l' ambiente (l' oggetto e' nato per le pagine web) si puo' tradurre "e' necessario stampare tutta la userform"
In alternativa ti dovresti fare una stampa su un file txt, di cui devi controllare allineamento dei campi e impaginazione, e poi mandare in stampa quel file.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: visualbasic 2010 express e excel

Postdi karug64 » 13/03/14 07:49

Ok. La prima soluzione non mi entusiasma (inserire chiavi nel registro nei PC dell'ufficio non è il massimo). La seconda non andrebbe competente : le varie celle hanno formattazioni varie (sottolineature, colori, grassetti ecc ecc) che così andrebbero persi.
Ritorno alla vecchia versione (un file di appoggio xls che poi provvedo a stampare con il comando printout.
Grazie comunque potrebbe servire in futuro.
Alla prossima.
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: visualbasic 2010 express e excel

Postdi Anthony47 » 13/03/14 12:47

Direi che abbiamo dimostrato che Excel vale il costo della sua licenza.
Alla prossima.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: visualbasic 2010 express e excel

Postdi karug64 » 14/03/14 22:44

Anthony47 ha scritto:Direi che abbiamo dimostrato che Excel vale il costo della sua licenza.
Alla prossima.


Beh ... diciamo che forse non è tutt'oro quanto pesa !!!
Il programma funziona perfettamente, ma quando lancio l'userform6, e solo allora, che contiene questo codice:

Codice: Seleziona tutto
Private Sub CommandButton1_Click()
    If CheckBox1.Value = True Then
        Workbooks("tabulato.xls").Close
        Workbooks("database.xls").Close
        Workbooks("ad.xls").Close
    Else
        If CheckBox2.Value = True Then
            If Len(Trim(fil)) <> 0 Then
                diptab = Workbooks("Tabulato.xls").Worksheets("elaborazione").Cells(1, 2).Value
                If Val(fil) <> Val(adtab) Then
                    If MsgBox("Attenzione è presente il tabulato della Ditta " + Str(adtab) + " ma è stata selezionata la Ditta " + Str(fil) + " Verrà salvato il tabulato della Ditta " + Str(adtab), vbExclamation + vbYesNo, "Incongruenza") = vbYes Then
                        Application.DisplayAlerts = False
                        Workbooks("tabulato.xls").SaveAs Application.ActiveWorkbook.Path & "\" & Right("000" + Trim(Str(adtab)), 3) + "_tab_ditta.xls", xlWorkbookNormal
                        Application.DisplayAlerts = True
                    Else
                        Exit Sub
                    End If
                Else
                        Application.DisplayAlerts = False
                        Workbooks("tabulato.xls").SaveAs Application.ActiveWorkbook.Path & "\" & Right("000" + Trim(Str(adtab)), 3) + "_tab_ditta.xls", xlWorkbookNormal
                        Application.DisplayAlerts = True
                End If
            Else
                adtab = Workbooks("Tabulato.xls").Worksheets("elaborazione").Cells(1, 2).Value
                If Len(Str(adtab)) <> 0 Then
                    If MsgBox("Attenzione. Non è stata seleziona alcuna Ditta ma è presente il tabulato della Ditta " + Str(adtab) + " che verrà salvato. Continui ?", vbExclamation + vbYesNo, "Incongruenza") = vbYes Then
                        Application.DisplayAlerts = False
                        Workbooks("tabulato.xls").SaveAs Application.ActiveWorkbook.Path & "\" & Right("000" + Trim(Str(adtab)), 3) + "_tab_ditta.xls", xlWorkbookNormal
                        Application.DisplayAlerts = True
                    Else
                        Exit Sub
                    End If
                End If
            End If
           
   End If
End If
End Sub


compare una finestra in cui c'e' scritto

MICROSOFT EXCEL HA SMESSO DI FUNZIONARE
(ricerca soluzione in corso)
e subito dopo un'altra
MICROSOFT EXCEL HA SMESSO DI FUNZIONARE
Windows: si è verificato un problema che impedisce il funzionamento corretto del programma. Se è disponibile una soluzione, verrà chiuso il programma e inviata una notifica automatica. [Chiudi programmi]
Ed excel si chiude.

Mah ....
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "visualbasic 2010 express e excel":


Chi c’è in linea

Visitano il forum: Nessuno e 26 ospiti