Excel, word.... dans une form

Résolu
a2bfango Messages postés 15 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 3 septembre 2010 - 3 sept. 2010 à 09:54
kornetmuse Messages postés 38 Date d'inscription samedi 17 juillet 2004 Statut Membre Dernière intervention 19 octobre 2010 - 19 oct. 2010 à 10:23
Bonjour,

Cela fait maintenant 2 jours que je cherche un moyen d'intégrer une feuille de calcul Excel dans une form sous vb2010.
J'ai d'abord pensé a un container OLE mais je suis tombé sur:

http://support.microsoft.com/kb/304562
A similar OLE container control is not available for Windows Forms when you use the following:

Microsoft Visual Basic 2005

J'ai alors trouvé qu'on peut le faire sur le webbrowser mais ce n'est plus possible non plus:
http://support.microsoft.com/kb/304643/
By default, the 2007 Office programs do not open Office documents in the Web browser.

N'étant plus sur Vista je ne peux même pas utiliser le correctif.

Je pense que j'ai du loupé quelque chose car c'est dommage de ne plus pouvoir utiliser de container...

Vous avez des infos ou des idées à ce sujet?

Merci à tous!

6 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 sept. 2010 à 11:06
tes déclarations sont fausses...
Long ==> Integer

et oui, tu es en .Net ^^

Gaffe également a rechercher TA fenetre Excel, pas la premiere trouvée :
Private Declare Function SetParent Lib "user32.dll" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

Private moExcel As Excel.Application
Private moWorkBook As Workbook
Private mhDeskWnd As Long
Private mhDeskParentWnd As Long

Private Sub Form_Load()
    Set moExcel = New Excel.Application
    moExcel.Visible = True
    Set moWorkBook = moExcel.Workbooks.Open("D:\Documents and Settings\THOM31R.DOM\Mes documents\Fiches de temps\Fiche de temps - 2007-02.xls")
    mhDeskWnd = FindWindowEx(moWorkBook.Application.hwnd, 0, "XLDESK", vbNullString)
    
    If mhDeskWnd Then
        mhDeskParentWnd = SetParent(mhDeskWnd, Me.hwnd)
    Else
        MsgBox "Fenetre XLDESK non trouvée"
    End If
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    SetParent mhDeskWnd, mhDeskParentWnd
    moWorkBook.Close False
    moExcel.Quit
End Sub



a adapter pour .Net, donc


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 sept. 2010 à 10:03
il est surement possible d'inclure ta fenetre de la classe XLDESK via l'API SetParent

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
a2bfango Messages postés 15 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 3 septembre 2010
3 sept. 2010 à 10:27
Merci pour l'info, je suis en train d'essayer.
Il faut faire un truc du genre?:

SetParent(FindWindow(vbNullString, "Microsoft Excel"), Me.Handle)

Avec ca pour le moment rien ne se passe :( je continue à chercher
0
a2bfango Messages postés 15 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 3 septembre 2010
3 sept. 2010 à 10:28
avec:

Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
a2bfango Messages postés 15 Date d'inscription jeudi 8 février 2007 Statut Membre Dernière intervention 3 septembre 2010
3 sept. 2010 à 11:42
Merci, en effet il suffisait de remplacer les long par integer, j'avais pas fait attention.
Pour le rendu je trouve pas ca top. Je vais finalement laisser tomber

En tout cas, les setparent pourraient bien me servir prochainement, c'est un bon truc à savoir.
0
kornetmuse Messages postés 38 Date d'inscription samedi 17 juillet 2004 Statut Membre Dernière intervention 19 octobre 2010
19 oct. 2010 à 10:23
Bonjour,

mhDeskParentWnd = SetParent(mhDeskWnd, Me.hwnd)

quand je met cette ligne il me dit que hwnd n'est pas un élément de windows.Form ?

Une piste ?

Merci.

Cordialement,
0
Rejoignez-nous