17. marts 2016 - 11:56Der er
6 kommentarer og 1 løsning
Styre kamera på tablet via VBA (Excel)
Hej
Kan jeg styre kameraet på min windows tablet (Lenovo Helix) via VBA (Excel) ??
Jeg skal sætte billeder ind i en rapport Excel skabelon og det kunne være smart hvis jeg kan tage billedet med tableten og direkte lægge det ind hvor det skal være :-)
Alt kan lade sig gøre i vba! - rodede en gang med det fra ms access af - måske noget googlebart eller info: http://www.eksperten.dk/spm/997409#reply_8149755 Den anvendte reference var: Microsoft Windows Image Acquistion Type Library - filen i mit XP home system hed Wiascr.dll Hvordan man så får funktionaliteten ind i en excel skabelon aner jeg intet om.
har iøvrigt ingen kendskab til tvær windows operativsystem generalitet af placering af camera billeder - men ihvertfald 'Const Wiapath' i #1 refererede er sikkert windowsversion afhængigt.
Denne funktion returnerer om heldigt en billedfil - og så virker den kun op mod camera driver ware der lægger jpg filer - gentager lige: refence til Microsoft WIA type library skal være sat.
Function jpgOfCS() Dim pictpath, toKill, Wiapath Dim wiao As WIALib.Wia Wiapath = Environ("ALLUSERSPROFILE") & "\Application Data\Microsoft\WIA\"
Set wiao = New WIALib.Wia With wiao.Devices(0) pictpath = Wiapath & .id & "\"
'følgende 4 linier sletter gamle billedfiler - dette bruges til at identificere nytilkomne vha dir(... 'en anden strategi kunne være at se på filers datecreated attribute toKill = Dir(pictpath & "*.*") While Len(toKill) Kill pictpath & toKill toKill = Dir(): Wend
.Create().GetItemsFromUI SingleImage, BestPreview: End With jpgOfCS = Dir(pictpath & "*.jpg") If Len(jpgOfCS) Then jpgOfCS = pictpath & jpgOfCS End With End Function
Ok - jeg har taget mig fornøjelsen også at lave det i jscript til kørsel under WSH. Der findes flere forskellige tilgange (andre libs), så det er ikke givet at min måde dur på din computer. Hvis nedenstående - smidt i en UTF-8 fil der f.eks hedder camshot.wsf, virker på din computer fungere de libs jeg har anvendt også på din computer. Fungerer kun i 32 bit mode. Kan køres fra et console vindue: cscript camshot.wsh - så vises også eventuelle runtime error (jeg har ingen)
<?xml version="1.0" standalone="yes" ?> <job id="camshotdemo"> <object id="pFSO" progid="Scripting.FileSystemObject"/> <object id="pShell" progid="WScript.Shell"/> <script language="VBScript"> Function vbMsgbox(prompt, button, title) vbMsgbox = msgbox(prompt, button, title) End Function </script> <script language="JScript"> <![CDATA[ var file = (function() { function dirArr(fn) { var retval=[]; for (var e = new Enumerator(pFSO.getFolder(fn).Files);!e.atEnd();e.moveNext()) retval.push(e.item()); return retval; } function deleteFilesInFolder(folder) { for (var e = new Enumerator(pFSO.getFolder(folder).Files);!e.atEnd();e.moveNext()) pFSO.deleteFile(e.item().Path); }
function main() { var vb = { AbortRetryIgnore:2,ApplicationModal:0,Critical:16,DefaultButton1:0,DefaultButton2:256, DefaultButton3:512,Exclamation:48,Information:64,MsgBoxRight:524288,MsgBoxRtlReading:1048576, MsgBoxSetForeground:65536,OkCancel:1,OkOnly:0,Question:32,RetryCancel:5,SystemModal:4096};
var SingleImage = 2; var BestPreview = 262144;
var Wiapath = pShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%") + "\\Application Data\\Microsoft\\WIA\\"; var wiao = new ActiveXObject("Wia.Script.1"); var dev0 = wiao.Devices(0); var pictpath=Wiapath + dev0.id; file.deleteFilesInFolder(pictpath); dev0.Create().GetItemsFromUI(SingleImage, BestPreview); var files = file.dirArr(pictpath); if (files.length) { pFSO.CopyFile( files[0].Path,pShell.SpecialFolders("Desktop")+"\\"); vbMsgbox("Filen: "+files[0].Name+" er dannnet på skrivebordet",vb.OkOnly,"Kamera skud"); } return 0; } return {run : main}; }()); themodule.run(); ]]> </script> </job>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.