Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VB6 ed excel

85 views
Skip to first unread message

Sauro

unread,
Jan 23, 2014, 7:44:53 AM1/23/14
to
Scopiazzando in questo NG e altrove sono riuscito
ad aprire e trattare un file excel o ad aprire excel
aggiungendo un nuovo foglio.

Tutto bene quando excel non è già aperto prima
che io lanci la mia procedura.
Quando excel è già aperto ed io lancio la mia
procedura per aggiungere un foglio, detto foglio
viene aggiunto al file già precedentemente aperto
invece che ad un nuovo file come vorrei.

Quando si lancia excel normalmente viene automaticamente
aperta il file standard Cartel1
Mi mancano le istruzioni per fare la stessa cosa da VB
anche quando excel è già aperto.

Se qualcuno sà come fare .......

Grazie e saluti
Sauro



Luca D

unread,
Jan 23, 2014, 7:53:29 AM1/23/14
to
On Thursday, January 23, 2014 1:44:53 PM UTC+1, Sauro wrote:
> Scopiazzando in questo NG e altrove sono riuscito
> ad aprire e trattare un file excel o ad aprire excel
> aggiungendo un nuovo foglio.
>
> Tutto bene quando excel non è già aperto prima
> che io lanci la mia procedura.
> Quando excel è già aperto ed io lancio la mia
> procedura per aggiungere un foglio, detto foglio
> viene aggiunto al file già precedentemente aperto
> invece che ad un nuovo file come vorrei.
>

In generale, che Excel sia aperto o meno, appena creato l'oggetto principale Application puoi andare a scorrere l'insieme dei Workbooks per vedere se ne esistono già aperti; a sua volta, ogni oggetto Workbook ha una property che punta all'insieme Worksheets, tramite il quale puoi vedere di quanti fogli è composto il file attivo e quindi scegliere se aggiungerne uno ad hoc o intervenire su quelli esistenti.

Nel tuo caso ti basta quindi decidere se e quando invocare un .Workbooks.Open per ottenere una cartella di lavoro vuota su cui lavorare

Sauro

unread,
Jan 23, 2014, 8:49:23 AM1/23/14
to
[cut]

>In generale, che Excel sia aperto o meno, appena creato l'oggetto
>principale Application puoi andare a scorrere l'insieme dei Workbooks per
>vedere se ne esistono già aperti; a sua volta, ogni oggetto Workbook ha una
>property che punta all'insieme Worksheets, tramite il quale puoi vedere di
>quanti fogli è composto il file attivo e quindi scegliere se aggiungerne
>uno ad hoc o intervenire su quelli esistenti.

>Nel tuo caso ti basta quindi decidere se e quando invocare un
>.Workbooks.Open per ottenere una cartella di lavoro vuota su cui lavorare

Il concetto è chiaro, e ti ringrazio per il chiarimento,
ma mi mancano le istruzioni per aprire il nuovo workbook
anche perchè non sò a priori dove diavolo sia il file "Cartel1"
se il programma gira su diversi PC (XP o W7)..

Grazie Luca
Sauro


Federico

unread,
Jan 23, 2014, 9:35:10 AM1/23/14
to
Sauro ha scritto...
>Il concetto č chiaro, e ti ringrazio per il chiarimento,
>ma mi mancano le istruzioni per aprire il nuovo workbook
>anche perchč non sň a priori dove diavolo sia il file "Cartel1"
>se il programma gira su diversi PC (XP o W7)..

Analizza questo spezzone di codice che ho buttato giů a braccio
e vedi se ti puň in qualche modo aiutare:

Private Sub Form_Load()
Dim ExApp As Object
Dim ExWrk As Object
Dim ExSheet As Object

On Error Resume Next
Set ExApp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Debug.Print Err.Description
Err.Clear
Set ExApp = CreateObject("Excel.Application")
If Err.Number <> 0 Then
MsgBox "Error! " & Err.Description
exit sub
end if
End If
On Error GoTo 0
ExApp.Visible = True

Set ExWrk = ExApp.Workbooks.Add
If Dir(App.Path & "\Test.xls", vbNormal) = "Test.xls" Then Kill App.Path
& "\Test.xls"
ExWrk.SaveAs App.Path & "\Test.xls"
For Each ExSheet In ExWrk.Worksheets
Debug.Print ExSheet.Name
Next
Set ExSheet = ExWrk.Worksheets("Foglio1")
Set ExSheet = ExWrk.Worksheets(1)
ExSheet.Cells(5, 2).Value = "Pippo"
Debug.Print ExSheet.Cells(5, 2).Value
ExWrk.Save
ExWrk.Close
ExApp.Quit

Set ExApp = Nothing
Set ExWrk = Nothing
Set ExSheet = Nothing
End Sub

Sauro

unread,
Jan 23, 2014, 10:14:58 AM1/23/14
to
[cut]

Perfetto.

Grazie Federico
Sauro


0 new messages