cs_fauve
Messages postés661Date d'inscriptionvendredi 2 décembre 2005StatutMembreDernière intervention23 mars 20118 28 déc. 2008 à 14:03
Salut,
Tu peux y parvenir avec l'exemple du code ci-dessous (je lance l'application Excel en étant invisible, je charge le fichier xls, je récupère la valeur d'une cellule et enfin je ferme Excel) :
<hr size= "2" width="100%" />
' Déclaration et initialisation d'une collection qui va contenir les Id des Processus Excel existants
Dim
IdExcel As New System.Collections.Generic.List(Of String)
' Déclaration et Initialisation des variables
' Pour ouvrir un fichier excel
Dim oXL As New Object Dim oBook As New Object Dim oSheet As New Object
' Déclaration de la variable qui va contenir
' le contenu de la cellule du fichier excel
Dim var As String
' On parcoure tous les processus existants
For Each Proc As Process In Process.GetProcesses
' Si un processus "excel" existe
If Proc.ProcessName = "excel" Then ' On récupère son Id
IdExcel.Add(Proc.Id)
End If Next
' Création de l'application Excel
oXL = CreateObject ("Excel.Application")
' Ouverture du fichier xls
oBook = oXL.Workbooks.Open( "D:\Test.xls" )
' On rajoute une feuille
oSheet = oBook.Worksheets( 1 )
' On récupère la valeur de la cellule
' 1° ligne, 1° colonne et on la
' stocke dans var
var = oSheet.Cells(1, 1).Value
oXL.Quit()
oXL = Nothing
' On parcoure les processus existants
For Each Proc As Process In Process.GetProcesses
' Si un processus "excel" existe
If Proc.ProcessName = "excel" Then ' On parcoure les Id des processus
' Existants avant l'ouverture du
' fichier xls
For nb As Integer = 0 To IdExcel.Count - 1 ' Si l'un des Id du processus "excel"
' ne se trouve pas dans la liste
' il s'agit de celui qu'on a lancé
If IdExcel.Contains(Proc.Id) = False Then ' On arrête immédiatement le processus
Proc.Kill()
End If Next End If Next
jlo28
Messages postés3Date d'inscriptiondimanche 28 décembre 2008StatutMembreDernière intervention28 décembre 2008 28 déc. 2008 à 17:06
Effectivement ça fonctionne.
Ce n'est pas vraiment ça que je veux.
J'ai un fichier excel ouvert et dans ce fichier j'ai des codes articles. Mon application VB consiste a taper manuellement le code et ouvre le fichier associé à ce code (plan).
Je voudrait que l'opérateur sélectionne une cellule ou il y'a ce code et dans mon application vb j'ai un bouton "récupéré contenu cellule active"
sachant que les classeur excel porte différent nom et de même pour les feuilles.
jlo28
Messages postés3Date d'inscriptiondimanche 28 décembre 2008StatutMembreDernière intervention28 décembre 2008 28 déc. 2008 à 18:57
Voila j'ai réussi avec ce code la; le problème c'est que si j'ai plusieurs instance excel de lancer il me récupère la cellule active de l'instance lancer en 1er.
Si quelqu'un à une idée pour récupéré la cellule active dans n'importe quel classeur ouvert merci.
Dim appxls As Microsoft.Office.Interop.Excel.Application
Dim workbook As Microsoft.Office.Interop.Excel.Workbook
Dim sheet As Microsoft.Office.Interop.Excel.Workbook
Dim var As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
appxls = GetObject(, "Excel.Application")
workbook = appxls.ActiveWorkbook
var = appxls.ActiveCell.Value
MsgBox(var)
End Sub