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

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

6 réponses

Répondre au sujet
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 3 sept. 2010 à 11:06
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Renfield
Renfield 17307 Messages postés mercredi 2 janvier 2002Date d'inscription 18 janvier 2017 Dernière intervention - 3 sept. 2010 à 10:03
0
Utile
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
a2bfango 15 Messages postés jeudi 8 février 2007Date d'inscription 3 septembre 2010 Dernière intervention - 3 sept. 2010 à 10:27
0
Utile
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
a2bfango 15 Messages postés jeudi 8 février 2007Date d'inscription 3 septembre 2010 Dernière intervention - 3 sept. 2010 à 10:28
0
Utile
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
a2bfango 15 Messages postés jeudi 8 février 2007Date d'inscription 3 septembre 2010 Dernière intervention - 3 sept. 2010 à 11:42
0
Utile
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
kornetmuse 38 Messages postés samedi 17 juillet 2004Date d'inscription 19 octobre 2010 Dernière intervention - 19 oct. 2010 à 10:23
0
Utile
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.