La cerise sur le gâteau

Vous vous demandez en quoi nos formations sont différentes, plus adaptées à vos besoins ? En voici une nouvelle démonstration:

Cyrille, venu suivre une formation "Photoshop Expert" chez PREFERENCE 3D, a demandé que le formateur passe un peu de temps pendant la formation, à lui montrer comment optimiser ses programmes VBScript qui lui servent à automatiser ses tâches répétitives dans Photoshop. Au détour de la conversation, il exprime une insatisfaction par rapport à la manière dont les opérateurs de son usine doivent numériser des documents: ils ne savent pas forcément quels paramètres de numérisation choisir (résolution, type de fichier: JPEG, PDF, TIFF...), et certains se trompent en choisissant l'emplacement où le fichier doit être sauvegardé, puisqu'ils doivent le spécifier à chaque fois... Cette source de non-qualité est pénalisante pour l'entreprise, frustrante pour les opérateurs comme pour Cyrille. Bien sûr, la plupart des imprimantes multifonctions intègre aujourd'hui un bouton "Scan to..." qui permet d'envoyer le résultat du scan directement sur le réseau ou vers une adresse mail. Mais ce n'est pas le cas ici.

Scanner automatiquement avec VBScript

Dans une formation traditionnelle, Cyrille n'aurait même pas pu poser sa question, ou alors éventuellement pendant le repas de midi. Et il serait reparti sans solution, ou si le formateur avait été réellement compétent, avec une idée de solution à implémenter (il faudrait utiliser telle librairie de Windows, etc.)

Mais les formations de PREFERENCE 3D sont différentes. Elles vont bien au-delà. Cyrille est reparti avec le code nécessaire, et dorénavant les opérateurs n'ont qu'à cliquer sur un bouton pour automatiquement scanner un document et le sauvegarder au bon endroit...

Et nous vous faisons cadeau du code:

option explicit
dim deviceManager1, scanner, img, strDestination, i
dim optionFichier, BlnScanner, NumDevice
blnScanner = False

set deviceManager1 = CreateObject("WIA.deviceManager")

'Détermine comment communiquer avec le scanner
For i=1 to deviceManager1.deviceinfos.count 'Remarque: s'il y a plusieurs scanners, on peut ajouter un écran de sélection du scanner pour que l'opérateur choisisse
    if deviceManager1.deviceinfos(i).type = 1 Then
        Blnscanner = True
        NumDevice = i
    End if
Next

'Si un scanner a été trouvé, lance la numérisation automatique et sauvegarde le fichier
if blnscanner then   
    set scanner = deviceManager1.deviceInfos(NumDevice).connect
    set img = scanner.Items(NumDevice).Transfer("{B96B3CAE-0728-11D3-9D7B-0000F81EF32E}")
    strDestination = "c:\temp\" & year(now) & "_" & Right("0" & month(now),2) & "_" & day(now) & "_" & hour(now) & "h" & minute(now) & ".jpg"
    img.Savefile(strDestination)
    else
    Msgbox ("Il n'y a pas de scanner")
end if

Il vous suffit de copier ce code dans un fichier texte dont vous renommerez l'extension en .vbs, et que vous pourrez lancer en double-cliquant dessus...

Et voici le résultat:

Résultat de scan automatique par VBScript