Est-il possible de faire une extraction d'un fichier excel via un script vbs ?
Ou alors d'injecter une macro dans excel et d'exécuter cette macro via un
script vbs ?
L'exemple suivant extrait le contenu de la cellule C3 du document C:TABLEAU.xls
Dim ex, feuille, contenu Set ex = CreateObject("Excel.Application") ex.Application.DisplayAlerts = False ex.Visible = True Set feuille = ex.Workbooks.Open("C:TABLEAU.xls") msgbox(ex.ActiveSheet.Cells(3,3).Value) ex.Quit()
@-salutations -- Michel Claveau
'soir !
L'exemple suivant extrait le contenu de la cellule C3 du document
C:TABLEAU.xls
Dim ex, feuille, contenu
Set ex = CreateObject("Excel.Application")
ex.Application.DisplayAlerts = False
ex.Visible = True
Set feuille = ex.Workbooks.Open("C:TABLEAU.xls")
msgbox(ex.ActiveSheet.Cells(3,3).Value)
ex.Quit()
L'exemple suivant extrait le contenu de la cellule C3 du document C:TABLEAU.xls
Dim ex, feuille, contenu Set ex = CreateObject("Excel.Application") ex.Application.DisplayAlerts = False ex.Visible = True Set feuille = ex.Workbooks.Open("C:TABLEAU.xls") msgbox(ex.ActiveSheet.Cells(3,3).Value) ex.Quit()
@-salutations -- Michel Claveau
moi
Boby Lapointe wrote:
Bonjour,
Est-il possible de faire une extraction d'un fichier excel via un script vbs ? Ou alors d'injecter une macro dans excel et d'exécuter cette macro via un script vbs ?
Pour extraire des données il faut que le script s'exécute sur une machine contenant Excel puisque ce derniert est scriptable ( objet Excel.application )
Pour injecter du code dans un classeur existant ( puis l'exécuterl'exécuter), c'est possible aussi mais c'est assez "technique".
Qui plus est, l'objet " VBProject.VBComponents" change un peu selon la version installée , si je me souviens bien.
Exemple en VBA ( facilement adaptable en vbs, donc) pour créer un module et y déclarer les constante Pi et e puis y définir une fonction ... qui calcule exp(Pi*x)
============================== Set VBC = Nothing Set VBC = ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule) VBC.Name = "ModuleTest" Set VBC = Nothing
With ActiveWorkbook.VBProject.VBComponents("ModuleTest").CodeModule .InsertLines 1, "Public Const Pi = 3.14159265358979" .InsertLines 2, "Public Const e = 2.71828182845905" End With With ActiveWorkbook.VBProject.VBComponents("ModuleTest").CodeModule
Lideb = .CountOfLines
.InsertLines Lideb + 1, "" .InsertLines Lideb + 2, "Public Function Machin(Truc as Double) As Double" .InsertLines Lideb + 3, " Machin = e^(Pi*Truc)" .InsertLines Lideb + 4, "End Function"
End With ============================== Pour ce type de choses "avancées, mieux vaut voir sur l'excellent NG consacré à Excel ...
Bon courage
HB
Boby Lapointe wrote:
Bonjour,
Est-il possible de faire une extraction d'un fichier excel via un
script vbs ? Ou alors d'injecter une macro dans excel et d'exécuter
cette macro via un script vbs ?
Pour extraire des données il faut que le script s'exécute sur une
machine contenant Excel puisque ce derniert est scriptable ( objet
Excel.application )
Pour injecter du code dans un classeur existant ( puis
l'exécuterl'exécuter), c'est possible aussi mais c'est assez
"technique".
Qui plus est, l'objet " VBProject.VBComponents"
change un peu selon la version installée ,
si je me souviens bien.
Exemple en VBA ( facilement adaptable en vbs, donc)
pour créer un module et y déclarer les constante Pi et e
puis y définir une fonction ... qui calcule exp(Pi*x)
============================== Set VBC = Nothing
Set VBC =
ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule)
VBC.Name = "ModuleTest"
Set VBC = Nothing
With
ActiveWorkbook.VBProject.VBComponents("ModuleTest").CodeModule
.InsertLines 1, "Public Const Pi = 3.14159265358979"
.InsertLines 2, "Public Const e = 2.71828182845905"
End With
With ActiveWorkbook.VBProject.VBComponents("ModuleTest").CodeModule
Lideb = .CountOfLines
.InsertLines Lideb + 1, ""
.InsertLines Lideb + 2, "Public Function Machin(Truc as Double) As
Double"
.InsertLines Lideb + 3, " Machin = e^(Pi*Truc)"
.InsertLines Lideb + 4, "End Function"
End With
============================== Pour ce type de choses "avancées,
mieux vaut voir sur l'excellent NG consacré à Excel ...
Est-il possible de faire une extraction d'un fichier excel via un script vbs ? Ou alors d'injecter une macro dans excel et d'exécuter cette macro via un script vbs ?
Pour extraire des données il faut que le script s'exécute sur une machine contenant Excel puisque ce derniert est scriptable ( objet Excel.application )
Pour injecter du code dans un classeur existant ( puis l'exécuterl'exécuter), c'est possible aussi mais c'est assez "technique".
Qui plus est, l'objet " VBProject.VBComponents" change un peu selon la version installée , si je me souviens bien.
Exemple en VBA ( facilement adaptable en vbs, donc) pour créer un module et y déclarer les constante Pi et e puis y définir une fonction ... qui calcule exp(Pi*x)
============================== Set VBC = Nothing Set VBC = ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule) VBC.Name = "ModuleTest" Set VBC = Nothing
With ActiveWorkbook.VBProject.VBComponents("ModuleTest").CodeModule .InsertLines 1, "Public Const Pi = 3.14159265358979" .InsertLines 2, "Public Const e = 2.71828182845905" End With With ActiveWorkbook.VBProject.VBComponents("ModuleTest").CodeModule
Lideb = .CountOfLines
.InsertLines Lideb + 1, "" .InsertLines Lideb + 2, "Public Function Machin(Truc as Double) As Double" .InsertLines Lideb + 3, " Machin = e^(Pi*Truc)" .InsertLines Lideb + 4, "End Function"
End With ============================== Pour ce type de choses "avancées, mieux vaut voir sur l'excellent NG consacré à Excel ...
Bon courage
HB
Fred
Dans : news:, MCI (ex do ré Mi chel la si do) [MVP] disait :
'soir !
Hello,
Set ex = CreateObject("Excel.Application")
À ce propos, le driver ODBC Excel est-il présent sur une machine sans Excel ? Pour de l'extraction, cela pourrait alors peut-être être suffisant.
-- Fred
Dans : news:ebVqGnYoIHA.2068@TK2MSFTNGP05.phx.gbl,
MCI (ex do ré Mi chel la si do) [MVP] disait :
'soir !
Hello,
Set ex = CreateObject("Excel.Application")
À ce propos, le driver ODBC Excel est-il présent sur une machine sans
Excel ?
Pour de l'extraction, cela pourrait alors peut-être être suffisant.
Dans : news:, MCI (ex do ré Mi chel la si do) [MVP] disait :
'soir !
Hello,
Set ex = CreateObject("Excel.Application")
À ce propos, le driver ODBC Excel est-il présent sur une machine sans Excel ? Pour de l'extraction, cela pourrait alors peut-être être suffisant.
-- Fred
moi
Re,
J'ai Oublié :
1. la constante vbext_ct_StdModule vaut 1 (connue en VBA mais pas en VBS)
2; pour que l'accès au code soit possible la bibli VBIDE doit être "chargée" (interface VBA ; Menu "Outils" Item "Références ...")
Voilà ce que j'utilisais pour charger VBIDE si nécessaire et/ou pour la décharger ( période des tests) C'est pour le chargement qu'il faut faire attention au n° de version Là ( c'est ancien) cela convenait à Excel 97 et 2000. (versions 5.0 et 5.3) pour fonctionner avec des versions plus récentes d'excel ( i.e. moins anciennes ;o) il faut voir ... ... et peut être modifier les valeurs possibles de "Major" et "minor" ... ====================================================== Sub PourVBIDE() Dim r Dim I As Integer ' petite procédure pour ajouter en VBA une référence à la ' bibliothèque Microsoft Visual Basic For Applications Extensibility
For Each r In ThisWorkbook.VBProject.References If r.GUID = "{0002E157-0000-0000-C000-000000000046}" Then VBIDEestIci = True Exit Sub End If Next r
For I = 1 To 0 Step -1 On Error GoTo PaslàI ThisWorkbook.VBProject.References.AddFromGuid _ GUID:="{0002E157-0000-0000-C000-000000000046}", Major:=5, Minor:=3 * I VBIDEestIci = True
Exit Sub PaslàI: Err = 0
Next I
Paslà: MsgBox " La bibliothèque " & vbCr & _ " Microsoft Visual Basic For Applications Extensibility" & vbCr & _ " n'a pas été trouvée et elle est indispensable", , "Désolé !" VBIDEestIci = False
End Sub ========================================================
A+
HB
Re,
J'ai Oublié :
1. la constante
vbext_ct_StdModule
vaut 1
(connue en VBA mais pas en VBS)
2; pour que l'accès au code soit possible
la bibli VBIDE doit être "chargée"
(interface VBA ; Menu "Outils" Item "Références ...")
Voilà ce que j'utilisais pour charger VBIDE si nécessaire
et/ou pour la décharger ( période des tests)
C'est pour le chargement qu'il faut faire attention au n° de version
Là ( c'est ancien) cela convenait à Excel 97 et 2000.
(versions 5.0 et 5.3)
pour fonctionner avec des versions plus récentes d'excel
( i.e. moins anciennes ;o)
il faut voir ...
... et peut être modifier
les valeurs possibles de "Major" et "minor" ...
====================================================== Sub PourVBIDE()
Dim r
Dim I As Integer
' petite procédure pour ajouter en VBA une référence à la
' bibliothèque Microsoft Visual Basic For Applications Extensibility
For Each r In ThisWorkbook.VBProject.References
If r.GUID = "{0002E157-0000-0000-C000-000000000046}" Then
VBIDEestIci = True
Exit Sub
End If
Next r
For I = 1 To 0 Step -1
On Error GoTo PaslàI
ThisWorkbook.VBProject.References.AddFromGuid _
GUID:="{0002E157-0000-0000-C000-000000000046}", Major:=5, Minor:=3
* I
VBIDEestIci = True
Exit Sub
PaslàI:
Err = 0
Next I
Paslà:
MsgBox " La bibliothèque " & vbCr & _
" Microsoft Visual Basic For Applications Extensibility" & vbCr & _
" n'a pas été trouvée et elle est indispensable", , "Désolé !"
VBIDEestIci = False
1. la constante vbext_ct_StdModule vaut 1 (connue en VBA mais pas en VBS)
2; pour que l'accès au code soit possible la bibli VBIDE doit être "chargée" (interface VBA ; Menu "Outils" Item "Références ...")
Voilà ce que j'utilisais pour charger VBIDE si nécessaire et/ou pour la décharger ( période des tests) C'est pour le chargement qu'il faut faire attention au n° de version Là ( c'est ancien) cela convenait à Excel 97 et 2000. (versions 5.0 et 5.3) pour fonctionner avec des versions plus récentes d'excel ( i.e. moins anciennes ;o) il faut voir ... ... et peut être modifier les valeurs possibles de "Major" et "minor" ... ====================================================== Sub PourVBIDE() Dim r Dim I As Integer ' petite procédure pour ajouter en VBA une référence à la ' bibliothèque Microsoft Visual Basic For Applications Extensibility
For Each r In ThisWorkbook.VBProject.References If r.GUID = "{0002E157-0000-0000-C000-000000000046}" Then VBIDEestIci = True Exit Sub End If Next r
For I = 1 To 0 Step -1 On Error GoTo PaslàI ThisWorkbook.VBProject.References.AddFromGuid _ GUID:="{0002E157-0000-0000-C000-000000000046}", Major:=5, Minor:=3 * I VBIDEestIci = True
Exit Sub PaslàI: Err = 0
Next I
Paslà: MsgBox " La bibliothèque " & vbCr & _ " Microsoft Visual Basic For Applications Extensibility" & vbCr & _ " n'a pas été trouvée et elle est indispensable", , "Désolé !" VBIDEestIci = False
End Sub ========================================================
A+
HB
MCI (ex do ré Mi chel la si do) [MVP]
Bonjour !
Ma réponse est un peu normande, et elle pose plus de questions qu'elle n'apporte de "vrais" réponses.
Je ne sais pas si le driver ODBC est présent, en l'absence d'Excel. Ou, s'il peut être installé indépendamment. Mais, le driver ODBC tout seul n'est peut-être pas suffisant. Je m'explique. Je travaille (beaucoup) avec Paradox. Jusqu'à la version 9, il était fourni avec un driver ODBC. Ce driver ODBC peut également être acquis directement chez Intersolv. Or, si l'installation sur une machine qui n'a pas Paradox fonctionne fort bien, impossible d'accéder aux données Paradox si ce dernier est absent. En fait, Paradox DOIT être installé, pour que le driver ODBC puisse fonctionner complètement.
Donc, il arrive qu'un driver ODBC installé ne suffise pas, pour accéder aux données. Alors, pour Excel, il faudrait vérifier si on peut être dans la même situation.
Sinon, avec un fichier .xlsx (Excel-2007), il est possible d'accéder au contenu, avec des outils XML. (plus .ZIP).
Autre solution : il existe une librairie pour Python, pyexcelerator (joli, le nom, hein ?), qui permet d'accéder aux fichiers .xls (Excel 97 à 2003, et 2007 en option), directement, sans avoir Excel. On peut même créer des documents Excel à partir de rien.
Ceci étant, le pilotage d'Excel via OLE-automation ("Excel.application"), est plutôt simple, et relativement performant ; j'ai écrit une classe Python, qui me permet d'envoyer ou lire 58000 lignes sur 3 colonnes (des codes postaux), en moins de deux secondes (en mémoire).
Sur ce, l'heure de l'apéro approchant à grand pas, je laisse le groupe (il y a des priorités...)
@+
Michel Claveau
.
Bonjour !
Ma réponse est un peu normande, et elle pose plus de questions qu'elle
n'apporte de "vrais" réponses.
Je ne sais pas si le driver ODBC est présent, en l'absence d'Excel. Ou,
s'il peut être installé indépendamment.
Mais, le driver ODBC tout seul n'est peut-être pas suffisant. Je
m'explique. Je travaille (beaucoup) avec Paradox. Jusqu'à la version 9,
il était fourni avec un driver ODBC. Ce driver ODBC peut également être
acquis directement chez Intersolv.
Or, si l'installation sur une machine qui n'a pas Paradox fonctionne
fort bien, impossible d'accéder aux données Paradox si ce dernier est
absent. En fait, Paradox DOIT être installé, pour que le driver ODBC
puisse fonctionner complètement.
Donc, il arrive qu'un driver ODBC installé ne suffise pas, pour accéder
aux données. Alors, pour Excel, il faudrait vérifier si on peut être
dans la même situation.
Sinon, avec un fichier .xlsx (Excel-2007), il est possible d'accéder au
contenu, avec des outils XML. (plus .ZIP).
Autre solution : il existe une librairie pour Python, pyexcelerator
(joli, le nom, hein ?), qui permet d'accéder aux fichiers .xls (Excel 97
à 2003, et 2007 en option), directement, sans avoir Excel. On peut même
créer des documents Excel à partir de rien.
Ceci étant, le pilotage d'Excel via OLE-automation
("Excel.application"), est plutôt simple, et relativement performant ;
j'ai écrit une classe Python, qui me permet d'envoyer ou lire 58000
lignes sur 3 colonnes (des codes postaux), en moins de deux secondes (en
mémoire).
Sur ce, l'heure de l'apéro approchant à grand pas, je laisse le groupe
(il y a des priorités...)
Ma réponse est un peu normande, et elle pose plus de questions qu'elle n'apporte de "vrais" réponses.
Je ne sais pas si le driver ODBC est présent, en l'absence d'Excel. Ou, s'il peut être installé indépendamment. Mais, le driver ODBC tout seul n'est peut-être pas suffisant. Je m'explique. Je travaille (beaucoup) avec Paradox. Jusqu'à la version 9, il était fourni avec un driver ODBC. Ce driver ODBC peut également être acquis directement chez Intersolv. Or, si l'installation sur une machine qui n'a pas Paradox fonctionne fort bien, impossible d'accéder aux données Paradox si ce dernier est absent. En fait, Paradox DOIT être installé, pour que le driver ODBC puisse fonctionner complètement.
Donc, il arrive qu'un driver ODBC installé ne suffise pas, pour accéder aux données. Alors, pour Excel, il faudrait vérifier si on peut être dans la même situation.
Sinon, avec un fichier .xlsx (Excel-2007), il est possible d'accéder au contenu, avec des outils XML. (plus .ZIP).
Autre solution : il existe une librairie pour Python, pyexcelerator (joli, le nom, hein ?), qui permet d'accéder aux fichiers .xls (Excel 97 à 2003, et 2007 en option), directement, sans avoir Excel. On peut même créer des documents Excel à partir de rien.
Ceci étant, le pilotage d'Excel via OLE-automation ("Excel.application"), est plutôt simple, et relativement performant ; j'ai écrit une classe Python, qui me permet d'envoyer ou lire 58000 lignes sur 3 colonnes (des codes postaux), en moins de deux secondes (en mémoire).
Sur ce, l'heure de l'apéro approchant à grand pas, je laisse le groupe (il y a des priorités...)
@+
Michel Claveau
.
Fred
"MCI (ex do ré Mi chel la si do) [MVP]" a écrit dans le message de news:
Bonjour !
Ma réponse est un peu normande, et elle pose plus de questions qu'elle n'apporte de "vrais" réponses.
Je ne sais pas si le driver ODBC est présent, en l'absence d'Excel. Ou, s'il peut être installé indépendamment.
Je n'y avait pas pensé au moment de poster mais j'ai regardé sur un serveur entre-temps. Dans les outils d'administration, sources de données ODBC : il y est. Ceci dit, j'avais installé la visionneuse XL, alors c'est peut-être un reliquat. Autre détail, la dll du pilote est la même que pour Access : ODBCJT32.DLL et cela, cela laisse penser que c'est bien sur toute machine Windows.
Sinon, avec un fichier .xlsx (Excel-2007), il est possible d'accéder au contenu, avec des outils XML. (plus .ZIP).
Oui
Autre solution : il existe une librairie pour Python, pyexcelerator (joli, le nom, hein ?), qui permet d'accéder aux fichiers .xls (Excel 97 à 2003, et 2007 en option), directement, sans avoir Excel. On peut même créer des documents Excel à partir de rien.
C'est une librairie de ton cru ? Les documents créés le sont dans quelle version ? Les format sont connus ? (avant les nouveaux formats xml)
Ceci étant, le pilotage d'Excel via OLE-automation ("Excel.application"), est plutôt simple, et relativement performant ;
Oui, je proposais cette alternative justement pour le cas où l'on n'aurait pas Excel : sur un serveur par exemple ;-)
j'ai écrit une classe Python, qui me permet d'envoyer ou lire 58000 lignes sur 3 colonnes (des codes postaux), en moins de deux secondes (en mémoire).
Pour une problématique d'exportation de grande quantité de données vers XL, après avoir testé l'insertion directe dans les cellules, j'ai finalement opté pour une exportation temporaire en CSV suivi d'une ouverture avec Excel. Mais peut-être mon code n'était-il pas très optimum (en late binding)
Sur ce, l'heure de l'apéro approchant à grand pas, je laisse le groupe (il y a des priorités...)
Tiens, puique tu en parles, je vais aussi me siffler un godet : à la tienne !
-- Fred
"MCI (ex do ré Mi chel la si do) [MVP]"
<enleverlesO.OmcO@OmclaveauO.com> a écrit dans le message de
news:u8Td5ojoIHA.5096@TK2MSFTNGP02.phx.gbl...
Bonjour !
Ma réponse est un peu normande, et elle pose plus de questions qu'elle
n'apporte de "vrais" réponses.
Je ne sais pas si le driver ODBC est présent, en l'absence d'Excel.
Ou, s'il peut être installé indépendamment.
Je n'y avait pas pensé au moment de poster mais j'ai regardé sur un
serveur entre-temps.
Dans les outils d'administration, sources de données ODBC : il y est.
Ceci dit, j'avais installé la visionneuse XL, alors c'est peut-être un
reliquat.
Autre détail, la dll du pilote est la même que pour Access :
ODBCJT32.DLL et cela, cela laisse penser que c'est bien sur toute
machine Windows.
Sinon, avec un fichier .xlsx (Excel-2007), il est possible d'accéder
au contenu, avec des outils XML. (plus .ZIP).
Oui
Autre solution : il existe une librairie pour Python, pyexcelerator
(joli, le nom, hein ?), qui permet d'accéder aux fichiers .xls (Excel
97 à 2003, et 2007 en option), directement, sans avoir Excel. On peut
même créer des documents Excel à partir de rien.
C'est une librairie de ton cru ? Les documents créés le sont dans quelle
version ? Les format sont connus ? (avant les nouveaux formats xml)
Ceci étant, le pilotage d'Excel via OLE-automation
("Excel.application"), est plutôt simple, et relativement performant
;
Oui, je proposais cette alternative justement pour le cas où l'on
n'aurait pas Excel : sur un serveur par exemple ;-)
j'ai écrit une classe Python, qui me permet d'envoyer ou lire 58000
lignes sur 3 colonnes (des codes postaux), en moins de deux secondes
(en mémoire).
Pour une problématique d'exportation de grande quantité de données vers
XL, après avoir testé l'insertion directe dans les cellules, j'ai
finalement opté pour une exportation temporaire en CSV suivi d'une
ouverture avec Excel.
Mais peut-être mon code n'était-il pas très optimum (en late binding)
Sur ce, l'heure de l'apéro approchant à grand pas, je laisse le groupe
(il y a des priorités...)
Tiens, puique tu en parles, je vais aussi me siffler un godet : à la
tienne !
"MCI (ex do ré Mi chel la si do) [MVP]" a écrit dans le message de news:
Bonjour !
Ma réponse est un peu normande, et elle pose plus de questions qu'elle n'apporte de "vrais" réponses.
Je ne sais pas si le driver ODBC est présent, en l'absence d'Excel. Ou, s'il peut être installé indépendamment.
Je n'y avait pas pensé au moment de poster mais j'ai regardé sur un serveur entre-temps. Dans les outils d'administration, sources de données ODBC : il y est. Ceci dit, j'avais installé la visionneuse XL, alors c'est peut-être un reliquat. Autre détail, la dll du pilote est la même que pour Access : ODBCJT32.DLL et cela, cela laisse penser que c'est bien sur toute machine Windows.
Sinon, avec un fichier .xlsx (Excel-2007), il est possible d'accéder au contenu, avec des outils XML. (plus .ZIP).
Oui
Autre solution : il existe une librairie pour Python, pyexcelerator (joli, le nom, hein ?), qui permet d'accéder aux fichiers .xls (Excel 97 à 2003, et 2007 en option), directement, sans avoir Excel. On peut même créer des documents Excel à partir de rien.
C'est une librairie de ton cru ? Les documents créés le sont dans quelle version ? Les format sont connus ? (avant les nouveaux formats xml)
Ceci étant, le pilotage d'Excel via OLE-automation ("Excel.application"), est plutôt simple, et relativement performant ;
Oui, je proposais cette alternative justement pour le cas où l'on n'aurait pas Excel : sur un serveur par exemple ;-)
j'ai écrit une classe Python, qui me permet d'envoyer ou lire 58000 lignes sur 3 colonnes (des codes postaux), en moins de deux secondes (en mémoire).
Pour une problématique d'exportation de grande quantité de données vers XL, après avoir testé l'insertion directe dans les cellules, j'ai finalement opté pour une exportation temporaire en CSV suivi d'une ouverture avec Excel. Mais peut-être mon code n'était-il pas très optimum (en late binding)
Sur ce, l'heure de l'apéro approchant à grand pas, je laisse le groupe (il y a des priorités...)
Tiens, puique tu en parles, je vais aussi me siffler un godet : à la tienne !
Perso, j'ai juste écrit une classe pour piloter Excel.Application.
Pour les performances de transfert élevées, au lieu d'envoyer cellule par cellule, on peut envoyer, depuis Python, une liste entière (en gros, une liste est un tableau), ou, même, une liste de listes. Du coup, un seul appel permet de transférer la totalité des données.
Perso, j'ai juste écrit une classe pour piloter Excel.Application.
Pour les performances de transfert élevées, au lieu d'envoyer cellule
par cellule, on peut envoyer, depuis Python, une liste entière (en gros,
une liste est un tableau), ou, même, une liste de listes. Du coup, un
seul appel permet de transférer la totalité des données.
Perso, j'ai juste écrit une classe pour piloter Excel.Application.
Pour les performances de transfert élevées, au lieu d'envoyer cellule par cellule, on peut envoyer, depuis Python, une liste entière (en gros, une liste est un tableau), ou, même, une liste de listes. Du coup, un seul appel permet de transférer la totalité des données.
@+
MCI
Boby Lapointe
Merci à tous de vos réponses, j'ai déjà une macro excel qui m'extrait les data (voir ci-dessous), comment puis-je l'adapter au vb script ?
Sub Extract_Infos() ' Dim c As Range, Enrgt As String Const Chemin = "E:Plan_2Doc" Open Chemin & "Descrip_term.txt" For Output As #1 For Each c In Range("L1", Range("L65536").End(xlUp)) If c = "E90" Then Enrgt = c.Offset(, 5) & "," & c.Offset(, -3) Print #1, Enrgt End If Next c Close #1 ' End Sub
Bonjour,
Est-il possible de faire une extraction d'un fichier excel via un script vbs ? Ou alors d'injecter une macro dans excel et d'exécuter cette macro via un script vbs ?
Merci d'avance de vos réponse.
Bob
Merci à tous de vos réponses, j'ai déjà une macro excel qui m'extrait les
data (voir ci-dessous), comment puis-je l'adapter au vb script ?
Sub Extract_Infos()
'
Dim c As Range, Enrgt As String
Const Chemin = "E:Plan_2Doc"
Open Chemin & "Descrip_term.txt" For Output As #1
For Each c In Range("L1", Range("L65536").End(xlUp))
If c = "E90" Then
Enrgt = c.Offset(, 5) & "," & c.Offset(, -3)
Print #1, Enrgt
End If
Next c
Close #1
'
End Sub
Bonjour,
Est-il possible de faire une extraction d'un fichier excel via un script vbs ?
Ou alors d'injecter une macro dans excel et d'exécuter cette macro via un
script vbs ?
Merci à tous de vos réponses, j'ai déjà une macro excel qui m'extrait les data (voir ci-dessous), comment puis-je l'adapter au vb script ?
Sub Extract_Infos() ' Dim c As Range, Enrgt As String Const Chemin = "E:Plan_2Doc" Open Chemin & "Descrip_term.txt" For Output As #1 For Each c In Range("L1", Range("L65536").End(xlUp)) If c = "E90" Then Enrgt = c.Offset(, 5) & "," & c.Offset(, -3) Print #1, Enrgt End If Next c Close #1 ' End Sub
Bonjour,
Est-il possible de faire une extraction d'un fichier excel via un script vbs ? Ou alors d'injecter une macro dans excel et d'exécuter cette macro via un script vbs ?
Merci d'avance de vos réponse.
Bob
Méta-MCI (MVP)
Salut !
Pour lancer une macro, via "Excel.Application" : .Run(nomDeLaMacro)
@-salutations -- Michel Claveau
Salut !
Pour lancer une macro, via "Excel.Application" : .Run(nomDeLaMacro)
Pour lancer une macro, via "Excel.Application" : .Run(nomDeLaMacro)
@-salutations -- Michel Claveau
Boby Lapointe
Bonjour,
Grace à votre aide, en adaptant mon ancienne macro j'ai pu créé un vbscript qui pilote Excel dont j'extrait selon un critère, les data qui générent mon fichier txt. Merci encore de votre aide.
Bob
Salut !
Pour lancer une macro, via "Excel.Application" : .Run(nomDeLaMacro)
@-salutations -- Michel Claveau
Bonjour,
Grace à votre aide, en adaptant mon ancienne macro j'ai pu créé un vbscript
qui pilote Excel dont j'extrait selon un critère, les data qui générent mon
fichier txt.
Merci encore de votre aide.
Bob
Salut !
Pour lancer une macro, via "Excel.Application" : .Run(nomDeLaMacro)
Grace à votre aide, en adaptant mon ancienne macro j'ai pu créé un vbscript qui pilote Excel dont j'extrait selon un critère, les data qui générent mon fichier txt. Merci encore de votre aide.
Bob
Salut !
Pour lancer une macro, via "Excel.Application" : .Run(nomDeLaMacro)