Newsgroup: it.comp.appl.access
Titolo: File Excel

Salve
Come posso fare per avviare da access un file di excel ??
Ho provato a cercare nel newsgroup , ma non sono riuscito a trovare niente.
Grazie
Giorgio

 Ho provato a cercare nel newsgroup , ma non sono riuscito a trovare
niente.
prova con l'autocomposizione di un pulsante.
Sib

Sib ha scritto:

ecco uno spunto:
Option Compare Database
' Dichiara le routine API necessarie:
Declare Function FindWindow Lib "user32" Alias _
                 "FindWindowA" (ByVal lpClassName As String, _
                                ByVal lpWindowName As Long) As Long
Declare Function SendMessage Lib "user32" Alias _
                 "SendMessageA" (ByVal hWnd As Long, _
                                 ByVal wMsg As Long, _
                                 ByVal wParam As Long, _
                                 ByVal lParam As Long) As Long
Sub GetExcel()
     Dim MyXL As Object    ' Memorizza il riferimento a Microsoft Excel.
     Dim ExcelWasNotRunning As Boolean    ' Flag per il rilascio finale.
     ' Prova per verificare se vi è già una copia di Microsoft Excel in 
esecuzione.
     On Error Resume Next
     ' La funzione GetObject chiamata senza il primo argomento 
restituisce un
     ' riferimento a un'istanza dell'applicazione. Se l'applicazione non 
è in
     ' esecuzione viene generato un errore.
     Set MyXL = GetObject(, "Excel.Application")
     Select Case Err.Number
         Case 429: Set MyXL = CreateObject("Excel.Application") 'crea 
l'oggetto
         Case 0: ExcelWasNotRunning = False
         Case Else: ExcelWasNotRunning = True
     End Select
     Err.Clear    ' Cancella l'oggetto Err in presenza di errori.
     ' Ricerca Microsoft Excel. Se Microsoft Excel è in esecuzione, lo 
inserisce
     ' nella tabella Running Object.
     DetectExcel
     ' Imposta la variabile oggetto in modo che faccia riferimento al file
     ' che si desidera visualizzare.
     Set MyXL = GetObject("c:\windows\temp\file.xls")
     ' Visualizza Microsoft Excel tramite la proprietà Application, 
quindi visualizza
     ' la finestra effettiva che contiene il file utilizzando l'insieme 
Windows
     ' del riferimento all'oggetto MyXL.
     MyXL.Application.Visible = True
     MyXL.Parent.Windows(1).Visible = True
     ' Posizione per operazioni di modifica del file.
     MyXL.Workbooks.Add "C:\windows\temp\file.xls"
     MyXL.Worksheets(1).Cells(1, 1) = "Tanti saluti da Access"
     ' Se questa copia di Microsoft Excel non era già in esecuzione 
dall'inizio,
     ' la chiude utilizzando il metodo Quit della proprietà Application.
     ' Si noti che quando si cerca di uscire da Microsoft Excel, la 
barra del titolo
     ' lampeggia e viene visualizzato un messaggio per richiedere se si 
desidera
     ' salvare i file caricati.
     If ExcelWasNotRunning = True Then
         MyXL.Application.Quit
     Else
         MyXL.Quit acPrompt
         MyXL.Application.Quit
     End If
     ' Rilascia il riferimento alla applicazione e al foglio di lavoro.
     Set MyXL = Nothing
End Sub
Sub DetectExcel()
     ' La routine individua un'istanza di Excel in esecuzione e la registra.
     Const WM_USER = 1024
     Dim hWnd As Long
     ' Se Excel è in esecuzione questa chiamata API restituisce l'handle 
corrispondente.
     hWnd = FindWindow("XLMAIN", 0)
     If hWnd = 0 Then    ' 0 significa che Excel non è in esecuzione.
         Exit Sub
     Else
     ' Poiché Excel è in esecuzione è necessario utilizzare la funzione
     ' API SendMessage per inserirlo nella tabella Running Object.
         SendMessage hWnd, WM_USER + 18, 0, 0
     End If
End Sub
Function DetectXLS() As Boolean
     ' Funzione che individua un'istanza di Excel in esecuzione.
     Dim hWnd As Long
     ' Se Excel è in esecuzione questa chiamata API restituisce l'handle 
corrispondente.
     hWnd = FindWindow("XLMAIN", 0)
     If hWnd = 0 Then    ' 0 significa che Excel non è in esecuzione.
         DetectXLS = False
     Else
         DetectXLS = True
     End If
End Function
byez
-- 
Claudio(BS)
per rispondere aggiungi claudio
** Articolo inviato tramite i servizi gratuiti di 
www.x-privat.org
 **

 ' Dichiara le routine API necessarie:
cut
Esagerato!
perche' scomodare le api (che pungono)?
Private Sub Excel_Click()
On Error GoTo Err_Excel_Click
    Dim ExcelWorksheet As Object
    Dim stNote As String
    Dim stParam() As String
    Dim vParam() As Variant
    Dim NumPar As Integer
    'Apre il file excel
    Set ExcelWorksheet = GetObject(DLookup("Testo", "Servizio",
"Impostazione='Moduli'"))
    'Imposta a visibile l'applicazione
    ExcelWorksheet.Application.Visible = True
    'Imposta a visibile il file aperto
    ExcelWorksheet.Parent.Windows(1).Visible = True
    'Seleziona il Foglio
    ExcelWorksheet.sheets("Inviti da DBAccess").Select
    'Espande a tutto schermo excel
    ExcelWorksheet.Application.windowstate = MaximizeExcel
    'Ritrova le note da inserire nel modulo per gli inviti
    stNote = DLookup("Testo", "Servizio", "Impostazione= 'NoteInviti'")
    'Verifica che stNote non sia null per evitare errori
    stNote = IIf(IsNull(stNote), " ", stNote)
    'Imposta i parametri
    If stSQLCorsisti <> "ListaInvitiNonAbbonati Query" Then
        ReDim stParam(3)
        ReDim vParam(3)
        stParam(1) = "[Forms]![CorsoPerInviti]![IntAbbonati]"
        stParam(2) = "[Forms]![CorsoPerInviti]![TuttiCorsisti]"
        stParam(3) = "[Forms]![corsoperinviti]![VediSospesi]"
        vParam(1) = Me![IntAbbonati]
        vParam(2) = Me![TuttiCorsisti]
        vParam(3) = Me![VediSospesi]
        NumPar = 3
    End If
    'Riempie le celle del foglio
    RiempiCelle ExcelWorksheet, ExcelWorksheet.sheets("Inviti da DBAccess"),
stSQLCorsisti, stParam, vParam, NumPar, stNote
    'Only XL 97 supports UserControl Property
    On Error Resume Next
    ExcelWorksheet.UserControl = True
Exit_Excel_Click:
    Exit Sub
Err_Excel_Click:
    MsgBox Err.Description
    Resume Exit_Excel_Click
End Sub
Questa e' una sub di una mia applicazione.
A parte la sezione che predispone i parametri di una mia funzione che va a
riempire le celle, apre perfettamente qualsiasi file excel senza problemi.
Sib

 perche' scomodare le api (che pungono)?
[CUT]
Ma sono solo 2! Mica un'alveare!
Al massimo le puoi sempre eliminare, anche se quelli del WWF non saranno 
contenti :-) ed ottieni una sub *simile* alla tua.
