Donner comme nom de fichier le contenu du "copié" [Résolu]

Messages postés
95
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
28 août 2015
- - Dernière réponse : cs_kouki69
Messages postés
95
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
28 août 2015
- 26 août 2009 à 10:23
Bonjour,
Je fais une petite macro sur VBA, à partir de WRQ Reflexion et je souhaiterais faire un savescreen.
Le savescreen sera au format BMP, sera stocké dans un chemin donné, le nom du fichier devra porter le même nom qu'un nom noté à l'écran, lequel est selectionné et mis en mémoire à l'aide de la fonction "copié" (.CopySelection ci-dessous) :

Le peux que j'ai écris est ci-dessous :
XXX est le nom que j'ai en memoire (de "copié"), c'est là où je bloque...

With Session
'entre initiale signateur et copie numéro de plan
.WaitForEvent rcEnterPos, "30", "0", 20, 20
.WaitForDisplayString "RESPONSE:", "30", 20, 10
.TransmitANSI "SC"
.SetSelectionStartPos 4, 11
.ExtendSelectionRect 4, 30
.CopySelection

End With

Du bazar entre les deux, puis

With Session

Dim path As String
path = "G:\Recines\rafting\1- Administration\10- Plan\2-suivi\fichesCN\XXX

SaveDisplay rcGraphicsAndText, rcOverwrite, path,BitmapColor, rcBlackBkgrnd

End With

Votre aide sera la bienvenue
Kouki
Afficher la suite 

14 réponses

Meilleure réponse
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
54
3
Merci
Comme je te le disais, utilises GetDisplayText (et oublie le presse papier)

Sub test()
On Local Error Resume Next
Dim oExcel As Object
Dim oBook As Object
Dim sFileName As String
Dim sFilePath As String
    With Session
        .WaitForEvent rcEnterPos, "30", "0", 20, 20
        .WaitForDisplayString "RESPONSE:", "30", 20, 10
        .TransmitANSI "SC"
        sFileName = Trim$(.GetDisplayText(4, 11, 19))
    End With
    
    Set oExcel = GetObject(, "Excel.Application")
    If Nothing Is oExcel Then
        Set oExcel = CreateObject("Excel.Application")
    End If
    On Local Error GoTo 0

    oExcel.Visible = True
    Set oBook = oExcel.Workbooks.Open(fileName:="C:\suivi CEN.xls")
    oBook.ActiveSheet.Range("B16").Value = sFileName
    
    sFilePath = "C:" & sFileName & ".bmp"
    
    SaveDisplay rcGraphicsAndText, rcOverwrite, sFilePath, rcBitmapColor, rcBlackBkgrnd
End Sub


Renfield - Admin CodeS-SourceS - MVP Visual Basic

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
0
Merci
Clipboard.GetText

---
VB.NET is good ... VB6 is better
Commenter la réponse de cs_ghuysmans99
Messages postés
95
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
Salut Ghuysmans99,
Je le place où ce Clipboard.GetText ?
J'ai fais quelques tentatives sans résultats ...
Merci
Commenter la réponse de cs_kouki69
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
0
Merci
Je crois comprendre que tu disais que le nom est dans le presse-papiers.
Et la fonction Clipboard.GetText te donne le texte dans le p-p.
Donc tu dois faire ceci :
With Session
Dim path As String
path = "G:\Recines\rafting\1- Administration\10- Plan\2-suivi\fichesCN" & Clipboard.GetText & ".bmp"
SaveDisplay rcGraphicsAndText, rcOverwrite, path,BitmapColor, rcBlackBkgrnd
End With

---
VB.NET is good ... VB6 is better
Commenter la réponse de cs_ghuysmans99
Messages postés
95
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
J'ai déjà essayé ce que tu proposes mais ça ne marche pas, j'ai l'impression que la commande Savedisplay ne permet pas d'utiliser des "commandes" tel que Clipboard.Gettext ...
J'ai le message suivant :

Erreur d'exécution '424'
Objet requis

Ca marche par exemple si je lui donne un nom ...G:\Recines\rafting\1- Administration\10- Plan\2-suivi\fichesCN\image.bmp
Commenter la réponse de cs_kouki69
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
0
Merci
Ah OK. En fait c'est du VBS utilisé dans un programme pour faire du scripting ?

---
VB.NET is good ... VB6 is better
Commenter la réponse de cs_ghuysmans99
Messages postés
95
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
VBS ? je suis dans WRQ Reflection et à priori c'est du VBA,
J'ai besoin de faire des copies d'ecran pour chaque fichier ouvert dans reflection. Je selectionne la designation de la fiche à l'écran et l'utilise pour donner un nom à l'image sauvegardée de la copie d'écran.
La commande "Savedisplay" est le résultat de la macro que j'enregistre...
Commenter la réponse de cs_kouki69
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
0
Merci
Le VBA c'est uniquement pour Office.
Pour lire le presse papier essaie avec cette fonction :
Function GetClipboardText
 Set objHTML = CreateObject("htmlfile")
 GetClipboardText = objHTML.ParentWindow.ClipboardData.GetData("text")
End Function

---
VB.NET is good ... VB6 is better
Commenter la réponse de cs_ghuysmans99
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
54
0
Merci
GetDisplayText de ton objet session permet de récupérer du texte de l'ecran...

si tu as besoin d'aide, je script et pilote pas mal reflection

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
54
0
Merci
"le vba c'est uniquement pour office"

euh.... non, je t'assures ^^

reflection utilises du vrai VBA avec l'editeur officiel Microsoft...

y'a un toolkit qui permet d'intégrer VBA dans ses proposes programmes...

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
95
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
Oui, j'apprécierai ton aide Renfield

Mon code est le suivant :

With Session
'entre initiale signateur et copie numéro de plan

.WaitForEvent rcEnterPos, "30", "0", 20, 20
.WaitForDisplayString "RESPONSE:", "30", 20, 10
.TransmitANSI "SC"
.SetSelectionStartPos 4, 11
.ExtendSelectionRect 4, 30
.CopySelection
A ce stade là, j'ai en mémoire le nom que je veux utiliser en tant que nom de fichier...le nom est aussi copié dans la cellule d'un classeur excel (étape suivante ci-dessous)
End With

'Lance excel et ouvre le fichier "fiche CEN", colle le contenu de la copie dans la cellule (reste à lui dire première cellule vide dans la colonne B)
Dim excelApp As Excel.Application
Set excelApp = CreateObject("Excel.Application")
excelApp.Visible = True
excelApp.Workbooks.Open FileName:="\\lew2\groups$\ipn\Mach\rating\1- Admin\Planning\divers\suivi CEN.xls"
'A modifier--> excelApp.ActiveSheet.Range("B1673").Select
excelApp.ActiveSheet.Paste

Et là, je veux lui dire de sauvegarder la copie d'écran sous le nom de ce que j'ai en mémoire)
With Session

Dim Path As String
Path = "G:\Mach" & Clipboard.GetText & ".bmp"

SaveDisplay rcGraphicsAndText, rcOverwrite, Path, rcBitmapColor, rcBlackBkgrnd
End With
Mais là, il plante, le & Clipboard.getText, il n'aime pas ...

Je veux bien un coup de pouce...


Kouki
Commenter la réponse de cs_kouki69
Messages postés
95
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
Merci Renfield, ça marche impec, quel talent !!
@+
Kouki
Commenter la réponse de cs_kouki69
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
22 août 2018
54
0
Merci
et si tu te demandes pourquoi je joues deux fois avec Excel.Application...

on tente de s'accrocher à une instance excel existante (plus rapide)
si ca échoue, on lance une nouvelle instance du tableur.

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Commenter la réponse de Renfield
Messages postés
95
Date d'inscription
lundi 27 mars 2006
Statut
Membre
Dernière intervention
28 août 2015
0
Merci
Toi tu joues, moi je me triture les neuronnes ...je ne suis qu'un pauvre apprenti VBA...je n'est pas encore eu le temps de comprendre le code mais je vais m'y atteler, merci encore ...


Kouki69
Commenter la réponse de cs_kouki69