17. marts 2016 - 11:56
Der 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 :-)
Pft Nanarsi
17. marts 2016 - 15:54
#1
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_8149755Den 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.
17. marts 2016 - 20:07
#2
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
18. marts 2016 - 12:41
#5
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);
}
return {
deleteFilesInFolder: deleteFilesInFolder,
dirArr: dirArr
};
}());
var themodule = (function() {
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>
20. april 2016 - 21:32
#6
Tak bvirk
Jeg fik det aldrig til at fungerer ordentligt og har nok opgivet denne løsning, men du har givet det bedste bud så send et svar :-)