acceder aux données sans ouvrir le fichier - VB/VBA/VBS - Programmation
Marsh Posté le 25-11-2004 à 22:36:00
ta premiere partie de code est bonne, elle t'ouvre bien le fichier "NomFichier.xls"
Dim appXl As Excel.Application
Set appXl = CreateObject("Excel.Application" )
With appXl
.Workbooks.Open ("C:\Doc\NomFichier.xls" )
.Visible = False
End With
Par contre dans la deuxieme partie, a aucun moment tu ne fait reference a ce fichier "NomFichier.xls" , pourquoi ?
et pour finir , avant de quitter la macro ,n'oublie pas de fermer ton fichier "NomFichier.xls" par un appXl.workbook("NomFichier.xls" ).close et par un Set AppXl=Nothing, sinon tu va te retrouver avec des quantités incontrolables d'instance "EXCEL.EXE" en mémoire, meme la macro terminée
Marsh Posté le 26-11-2004 à 14:51:58
merci garg, t'avais raison, je pense que c'est la fatique. bref ma macro marche, je l'affiche si dessous au cas où elle pourrait interressé quelqu'un
(elle permet d'avoir accès aux données d'un classeur sans l'ouvrir; et d'enregistrer les modifs)
Function OpenFileExcel()
Dim appxl As Excel.Application
Dim fichier As Window
Dim feuille As Worksheet
Set appxl = CreateObject("Excel.application" )
Dim read As Variant
With appxl
.Workbooks.Open "H:\macro\essais.xls"
.Visible = False
End With
Dim i As Integer
Dim j As Integer
Dim k As Integer
i = 1
j = 0
k = 2
For i = 1 To 3
Set fichier = appxl.Windows("essais.xls" )
fichier.Activate
Set feuille = appxl.Sheets("contrat" )
feuille.Range("B" & i).Select
feuille.Range("B" & i).Cut
Windows("menu.xls" ).Activate
Range("B" & k).Activate
ActiveCell.Offset(0, j).Select
ActiveSheet.Paste
feuille.Range("B" & i).Clear
j = j + 1
Next i
appxl.Workbooks("essais.xls" ).Save
appxl.Workbooks("essais.xls" ).Close
End Function
Marsh Posté le 15-01-2014 à 15:56:16
Hello,
La meilleure façon pour récuperer les données d'un autre fichier Excel en VBA est d'ouvrir le fichier source (sans le rendre visible), recuperer les données et fermer le fichier source.
Le code sur le lien ci-dessous fonctionne parfaitement chez moi :
vba-useful.blogspot.fr/2013/12/how-do-i-retrieve-data-from-another.html
+
Marsh Posté le 16-01-2014 à 13:26:52
eddybzh, merci d'éviter de remonter un post vieux de 10 ans, surtout en répondant à côté ‼
Pour en revenir à la question initiale, c'est à dire sans ouvrir le classeur, il y a deux méthodes.
La première, la plus simple, n'a même pas besoin de VBA, une simple formule dans une cellule :
un coller avec liaison, le B-A-BA de l'utilisation d'Excel ‼ Toujours penser aux bases …
La seconde est d'utiliser une connection ADODB, un peu de lecture …
Et deux messages au-dessus, voir l'exemple par formule …
Marsh Posté le 25-11-2004 à 10:52:15
salut!
je souhaiterai acceder aux données d'une feuille excel sans ouvrir le fichier. j'ai essayé le code ci-dessous mais ça ne marche pas; il m'affiche une erreur. apparement le fichier s'ouvre en lecture seule. Si quelqu'un à une idée.......merci.
Function OpenFileExcel()
Dim appXl As Excel.Application
Set appXl = CreateObject("Excel.Application" )
With appXl
.Workbooks.Open ("C:\Doc\NomFichier.xls" )
.Visible = False
End With
Dim i As Integer
Dim j As Integer
Dim k As Integer
i = 1
j = 0
k = 2
For i = 1 To 3
Windows("Essais.xls" ).Activate
toto = Range("B" & i).Select
Selection.Cut
toto = Selection
Windows("menu.xls" ).Activate
Range("B" & k).Activate
ActiveCell.Offset(0, j).Select
ActiveSheet.Paste
j = j + 1
Next i
End Function