Avatar billede Nanarsi Juniormester
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
Avatar billede bvirk Guru
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_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.
Avatar billede bvirk Guru
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
Avatar billede bvirk Guru
17. marts 2016 - 20:12 #3
#2 rettelse: slet linieafsluttende ": end with" i 5 sidste linie
Avatar billede Nanarsi Juniormester
17. marts 2016 - 22:21 #4
Tak bvirk

Jeg skal lige have et par dage til at gennemskue og teste :-)
Avatar billede bvirk Guru
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>
Avatar billede Nanarsi Juniormester
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 :-)
Avatar billede bvirk Guru
21. april 2016 - 11:33 #7
Et point anker her for bedste ud af et
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester