Excel, word.... dans une form [Résolu]

Messages postés
15
Date d'inscription
jeudi 8 février 2007
Dernière intervention
3 septembre 2010
- 3 sept. 2010 à 09:54 - Dernière réponse :
Messages postés
38
Date d'inscription
samedi 17 juillet 2004
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!
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 3 sept. 2010 à 11:06
3
Merci
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 3 sept. 2010 à 10:03
0
Merci
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
Commenter la réponse de Renfield
Messages postés
15
Date d'inscription
jeudi 8 février 2007
Dernière intervention
3 septembre 2010
- 3 sept. 2010 à 10:27
0
Merci
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
Commenter la réponse de a2bfango
Messages postés
15
Date d'inscription
jeudi 8 février 2007
Dernière intervention
3 septembre 2010
- 3 sept. 2010 à 10:28
0
Merci
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
Commenter la réponse de a2bfango
Messages postés
15
Date d'inscription
jeudi 8 février 2007
Dernière intervention
3 septembre 2010
- 3 sept. 2010 à 11:42
0
Merci
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.
Commenter la réponse de a2bfango
Messages postés
38
Date d'inscription
samedi 17 juillet 2004
Dernière intervention
19 octobre 2010
- 19 oct. 2010 à 10:23
0
Merci
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,
Commenter la réponse de kornetmuse

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.