RaphaelMD
Messages postés2Date d'inscriptionmercredi 9 avril 2008StatutMembreDernière intervention11 avril 2008
-
9 avril 2008 à 20:24
RaphaelMD
Messages postés2Date d'inscriptionmercredi 9 avril 2008StatutMembreDernière intervention11 avril 2008
-
11 avril 2008 à 16:59
Bonjour à tous,
ça fait un moment que je me réfère à ce site lorsque j'ai un problème, mais c'est la première fois que je pose une question. Voilà mon problème. Je développe une application en VB.NET sous Visual Studio 2008 et je cherche à récupérer une série de valeurs situé dans un classeur Excel 2000. J'ai essayer de toute sorte de façon de faire ce passage, mais chaque méthode que j'essai me retourne une erreur plus étrange que la précédente. Évidemment, je ne suis pas programmeur de formation et je m'y perds un peu. voilà, si un bon samaritain pouvait me débloquer ce serait grandement apprécié! Voici la dernière façon que j'ai essayée et qui a misérablement échouée:
Imports Microsoft.Office.Interop
... (sub et tout le tralala)
Dim
oExcel
As
Excel.Application
Dim
oDoc
As
Excel.Workbook
Dim
oWorksheet
As
Excel.Worksheet
Dim
var1oExcel =
New
Excel.Applicationvar1 = oExcel.Workbooks.Open(
"c:\mto09703\test.xls"
)
et là ça plante. ça me donne l'erreure: "Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
En d,autre mots, ce que je cherche à faire c'est ouvrire un classeur dont je fourni le path, récupérer les valeurs dans une plage (range) que je spécifie pour les mettre dans un array et refermer excel. Il faut que le tout soit invisible à l'utilisateur.
Toute aide est apprécier et, évidemment, si la réponse se trouve dans un post que je n'ai pas vu n'hésitez pas à me le dire!
RaphaelMD
Messages postés2Date d'inscriptionmercredi 9 avril 2008StatutMembreDernière intervention11 avril 2008 11 avril 2008 à 16:59
Bon, ça fonctionne en partie, mais pas en totalité. Je suis capable de récupérer une plage de valeur en utilisant le code suivant:
Dim
strconn
As
String =
"Provider=Microsoft.Jet.OLEDB.4.0;" &
"Data Source=" & lcs_file_box.Text &
";Extended Properties=""Excel 8.0;HDR=NO"";"
Dim stSQL
As
String =
"SELECT * FROM [LCS$F4:AU138]"
Dim cn
As
New OleDbConnection(strconn)
Dim cmd
As
New OleDbCommand(stSQL, cn)
Dim table(134, 41)
As
Double
Dim inc = 0
'Before executing the command the connection must be open.
cn.Open()
Dim dr
As OleDbDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
Try
While (dr.Read)
For inc2 = 0
To dr.FieldCount - 1
table(inc, inc2) = dr(inc2)
Next
inc = inc + 1
End
While
Finally
dr.Close()
End
Try
'Relase objects from memory.
cmd.Dispose()
cn.Dispose()
Par contre j'ai aussi besoin d'ouvrir un autre fichier pour que l'utilisateur puisse sélectionner une cellule. Le code suivant ne fonctionne pas et je ne comprend pas pourquoi:
Dim
xlsApp
As Excel.Application
Dim xlsWB
As Excel.Workbook
Dim xlsSheet
As Excel.Worksheets
Dim xlsCell
As Excel.Range
'Dim xlsDatei As String
xlsApp =
New Excel.Application
'Dim test As Boolean = xlsApp.Visible
xlsWB = xlsApp.Workbook.Open(
"c:\mto09703\test.xls")
xlsSheet = xlsWB.Worksheet(1)
xlsCell = xlsSheet.Range(
"A1")
...
à la ligne Workbook.Open( ) j'obtiens l'erreure suivante:
COMExecption was unhandled
Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))