[VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Staple1600

XLDnaute Barbatruc
Bonjour à tous

PREAMBULE: ce fil est liè a celui-ci:
Firefox 3 -places.sqlite

Je suis coincé à ce niveau:
La macro suivante crée le batch et le lance (ça c'est OK)

Code:
Sub cree_bat()
Open "c:\temp\Ftest.bat" For Output As #1
Print #1, "cd\"
Print #1, "cd c:\sqlite3"
Print #1, "sqlite3 places.sqlite"
Print #1, ".dump txt"
Print #1, ".output test.txt"
Print #1, "select url,title from moz_places;"
Print #1, ".exit"
Close #1
Shell "c:\temp\Ftest.bat", vbNormalFocus
End Sub
Sauf que le batch lui ne fonctionne pas

Je cherche un moyen par VBA, d'envoyer les instructions (contenues dans le batch) dans l'invite MSDos et de simuler à chaque fin de chaine l'appui sur la touche ENTER.

Les instructions quand on les passe manuellement à partir de l'invite MSDos , une par une et qu'on appuie sur ENTER fonctionne.

Avez-vous une idée sur la façon de s 'y prendre ?
 

MJ13

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

bonjour à tous

Jean Marie, ton programme m'a l'air assez complexe. Es tu sur que c'est primordial de le faire? (même si je ne comprend pas bien le fond de la chose, vu que cela se passe sur pas mal de posts et qu'on s'y perd vite).

Sinon c'est quoi le but du jeu:confused:.
 

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re, bonsoir à tous

Merci Hasco, je vais essayer de voir comment utiliser GetTickCount


[MJ13]
•1) Ce fil est relatif à l'envoi de commandes dans l'invite MSDos à partir de VBA
•2) Cette question s'est posée à moi en cherchant comment importer le fichier places.sqlite (historique de navigation de de Firefox 3) dans une feuille Excel.
( cf. comme dit dans mon premier message de ce fil)
•3) Un de mes défauts (ou qualité c'est selon) c'est la curiosité, donc bien qu'ayant désormais 3 solutions opérationnelles (Merci BrunoM45, Hasco , RENAUDER et tous les autres ), je suis friand d'autres modes opératoires pour résoudre un problème donné en VBA.
•Bref, à mon sens, bien que liés , ces deux fils ne font pas doublons
car deux questions différentes y ont été posées.
[/MJ13]
 
Dernière édition:
G

Guest

Guest
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Hello Michel

Michel à dit:
Sinon c'est quoi le but du jeu?

Pour moi:
Le fun, le plaisir de découvrir de nouvelles choses (sqlite), de la programation et autre prises de tête, tellement agréables.

Et notre ami, JM ne manque pas d'imagination pour nous stimuler le neurone.

A++
 

MJ13

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re

Ok Merci pour ces précisons, mais je n'ai toujours pas compris.
Tu ne pourrais pas nous mettre un fichier exemple en txt pour voir de quoi il ressort (il doit y être avant mais, bon j'ai pas eu le courage de tout parcourir) ou sinon sur quel post je peux le trouver.

Remarque en ce moment je fait aussi du batch.
 

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re


Voici le script VBA actuel (si ça peut servir à d'autres forumeurs)

(Évidemment adapter au préalable nom des des répertoires, nom de fichier
et avoir installer sqlite3.exe)

(temps d'attente 1/2 seconde )

Code:
[FONT=Courier New][COLOR=darkblue]Option[/COLOR] [COLOR=darkblue]Explicit[/COLOR]
[COLOR=green]'API declaration to suspend operation[/COLOR]
[COLOR=green]'for a specified time (Milliseconds)[/COLOR]
[COLOR=darkblue]Private[/COLOR] [COLOR=darkblue]Declare[/COLOR] [COLOR=darkblue]Sub[/COLOR] Sleep _
    [COLOR=darkblue]Lib[/COLOR] "kernel32" _
    ([COLOR=darkblue]ByVal[/COLOR] dwMilliseconds [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Long[/COLOR])

[COLOR=darkblue]Public[/COLOR] [COLOR=darkblue]Sub[/COLOR] wWait(tSecs [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Single[/COLOR])
[COLOR=green]' Timer to create a pause[/COLOR]
[COLOR=green]' auteur: Joost Verdaasdonk[/COLOR]
[COLOR=darkblue]Dim[/COLOR] sngSec [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Single[/COLOR]
sngSec = Timer + tSecs
[COLOR=darkblue]Do[/COLOR] [COLOR=darkblue]While[/COLOR] Timer < sngSec
DoEvents
[COLOR=darkblue]Loop[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR]

[COLOR=darkblue]Public[/COLOR] [COLOR=darkblue]Sub[/COLOR] Test_OK()
[COLOR=darkblue]Dim[/COLOR] id [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Variant[/COLOR]
id = Shell("cmd", vbNormalFocus)
Application.Wait Time + TimeSerial(0, 0, 2)
AppActivate id [COLOR=green]'Active la fenêtre dos[/COLOR]
SendKeys "cd c:\sqlite3", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys "~", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys "sqlite3 places.sqlite", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys "~", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys ".dump txt", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys "~", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys ".output hhhhtest.txt"
wWait 0.5: SendKeys "~", [COLOR=darkblue]True[/COLOR]
SendKeys "select url,title from moz_places;": wWait 0.5
SendKeys "~", True: SendKeys ".q", [COLOR=darkblue]True[/COLOR]
wWait 0.5: SendKeys "~", True
SendKeys "exit", True: wWait 0.5: SendKeys "~", True
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR][/FONT]
MJ13: tu utilises FireFox 3.04 ?
Si oui tu as dans ton profil un fichier places.sqlite

Je l'invite à lire ces messages avant de poursuivre plus avant
Lien supprimé
Lien supprimé
Lien supprimé
 
G

Guest

Guest
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Hello JM,

As-tu rencontrer des problèmes avec Sleep pour privilégier wWait 0.5 plutôt que sleep 500 (moins gourmand en ressource)?

A+
 

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re


Hasco
J'ai pas testé avec Sleep :eek:

J'y retourne de ce pas :rolleyes:

EDITION
Pour utiliser Sleep
remplacer
wWait 0.5
par
Sleep 500&

PS: j'ai tester avec Sleep 250& cela fonctionne toujours.
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re JM

Bon la sur ce coup, je vous laisse, cela me dépasse et j'ai peur de n'être d'aucun secours en plus tu as des pros avec toi.

Bonne soirée
 

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonsoir à tous

En faisant le ménage , je suis tombé sur ces essais
que j'ai voulu réexplorer ces jours-ci

Je tombe sur un nouveau problème auquel je n'avais pas pensé.

Avec ce script VBS (que l'on aussi en l'adaptant lancé d'Excel)
Code:
Dim o
Set o = WScript.CreateObject("WScript.Shell")
o.Run "cmd.exe /k"
WScript.Sleep 100
o.AppActivate "C:\Windows\system32\cmd.exe"
WScript.Sleep 13
o.SendKeys "sqlite3 places.sqlite {ENTER}"
WScript.Sleep 13
o.SendKeys ".dump text {ENTER}"
WScript.Sleep 13
o.SendKeys ".output temp.txt {ENTER}"
WScript.Sleep 13
Set o = Nothing
Je ne sais pas comment envoyer correctement le caractère %
car la suite de ce script devrait être :
Code:
SELECT url, visit_date FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id AND url LIKE "%excel-downloads.com%" ORDER by visit_date;
j'ai esssayé ainsi : avec Chr(34) et Chr(37)
Code:
SELECT url, visit_date FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id AND url LIKE "  chr(34) & chr(37) & "excel-downloads.com" & chr(37) & chr(34) & " ORDER by visit_date;
mais cela ne fonctionne pas

Le seul biais que j'ai trouvé, c'est de copier/coller la chaine dans l'invite Msdos puis de taper ENTER et la cela fonctionne .

Mais comment faire pour que le script se poursuive sans mon intervention manuelle ?

Merci à tous ceux qui passeront par ici.

PS: ce fil est le fil enfant de cet autre fil, il peut être utile pour comprendre la finalité de la chose.
 

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonsoir MJ13

Merci de ton aide


Malheureusement cela ne fonctionne pas


Alors je cherche le code VBA pour copier le contenu de clipboard dans l'invite MSDOS en attendant mieux :eek:
 

MJ13

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Re JM


Code:
SELECT url, visit_date FROM moz_places, moz_historyvisits WHERE moz_places.id = moz_historyvisits.place_id AND url LIKE "%excel-downloads.com%" ORDER by visit_date;

Quand je vois cela, cela me rappelle plus du SQL.

Encore une fois avec un fichier Txt exemple et ce que tu veux filtrer, ce serait sans doute plus simple pour t'aider (je n'ai pas Firefox).
 

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonsoir à tous, bonsoir MJ13

Le problème vient du fait que :
Le signe % identifie ALT (voir l'Aide Excel de SendKeys)

Mon problème est de l'ordre du "peaufinage" car les solutions présentes dans ce fil fonctionnent.

Le dernier problème qui persiste est cet histoire de %.

J'ai beau chercher sur le net , je n'ai pas trouver de code pour coller le contenu du clipboard dans une invite MSDOS..

(Si quelqu'un a une idée...)

C'est une syntaxe sql qui s'utilise avec sqlite3.exe
(voir URL plus bas dans le fil)

Pour un exemple de fichier voir Lien supprimé de celui-ci
 

MJ13

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonjour JM

Le signe % identifie ALT (voir l'Aide Excel de SendKeys)
Si c'est pour écrire en syntaxe SQL, % signifie: remplacer n'importe quelle suite de caractères (je l'utilise souvent).

J'ai beau chercher sur le net , je n'ai pas trouver de code pour coller le contenu du clipboard dans une invite MSDOS..

Quand je n'ai pas de solution simple, j'utilise super macro (tape super macro sur le net), mais il faut un peu de temps pour l'apprivoiser, quoique c'est très performant et cela permet de faire des automatisations entres différentes applications qui n'auraient pas le même language de programmation.
 

Staple1600

XLDnaute Barbatruc
Re : [VBA][MSDOS][BAT] [Comment?] Envoyer Strings dans invite MsDos à un *.exe ?

Bonjour MJ3, le fil, le forum

Si c'est pour écrire en syntaxe SQL, % signifie: remplacer n'importe quelle suite de caractères (je l'utilise souvent).

Je sais cela.

Mais le problème c'est dans VBA , Sendkeys + % est interprété comme
"appui sur la touche ALT"

Donc je vois pas comment envoyer le caractère % avec SendKeys sans que celui-ci ne soit considéré comme la touche ALT.

Je cherche toujours sans succès comment coller une chaine de caractères dans l'invite MSDOS.

Si quelqu'un passe par ici avec un solution. Merci à lui.

PS: Merci pour l'info sur SUPERMACRO , je testerai à l'occasion
 

Statistiques des forums

Discussions
312 115
Messages
2 085 451
Membres
102 889
dernier inscrit
monsef JABBOUR