Hei,
Onkohan VBA:n avulla mahdollista tehdä seuraavanlainen juttu Excelissä:
Minulla on Excel-lomake ja haluaisin avata toisen työkirjan raahaamalla sen lomakkeen päälle.
Eli jos otan esim. työdöydällä olevasta työkirjasta hiirellä kiinni ja raahaan sen lomakkeen päälle, niin ko. työkirja avautuu kun vapautan hiiren napin.
Sen ei tarvitse muuta kuin avautua taustalle.
Moi asssd!
VBA:a ei tarvita! Voit avat minkä tahansa Excel-tiedoston raahaamalla tiedoston kuvakkeen joko avoinna olevan työkirjan päälle tai avoinna olevan tyhjän Excel-sovelluksen taulukko-osan päälle.
Jos teet saman jutun Word'lla niin raahatun Word-tiedoston teksti upotetaan ensin avoinna olleeseen asiakirjaan kursorista eteenpäin asiakirja-objektina. Mikäli raahaat Word-tiedoston kuvakkeen tyhjään Word-sovellukseen niin ko. asiakirja aukeaa aivan normaalisti.
neau33 kirjoitti:
raahaamalla tiedoston kuvakkeen joko avoinna olevan työkirjan päälle tai avoinna olevan tyhjän Excel-sovelluksen taulukko-osan päälle.
Mutta asssd:han halusi saada sen auki nimenomaan lomakkeen päälle raahaamalla, vai kuinka?
Heippa taas!
Kyllä sen kuvakkeen voi VBA-Projektin lomakkeen (UserForm) päällekkin pudottaa. Mitään koodia ei tarvita, kunhan lomakkeen ShowModal-ominaisuuden arvoksi on asetettu: False (EPÄTOSI). Ja mikä parasta, ei haittaa vaikka putois hieman ohikin...
Ja sitten jos sen haluaisi modaalilomakkeelle niin pitäisi ehkä kikkailla BeforeDragOver- ja BeforeDropOrPaste -eventtien kanssa? No, ehkä asssd kertoo jossain vaiheessa käykö joku jo kerrotuista.
Hei ja kiitos vastauksista! Tuo ShowModal arvon muuttaminen oli se mitä hain.
Saakohan sitä vielä toimimaan outlookin liitetiedostoja raahatessa? Työpöydältä se toimii hiedosti.
Moi taas asssd!
Outlook liitetiedoston suora raahaminen Excel/VBA-projektin lomakkeelle ei onnistu.
Liitetiedoston voisi raahata ensin työpöydälle ja sieltä eteenpäin lomakkeelle, mutta olisiko siinä järkeä, kun liitetiedoston kuvakkeen tuplaklikkaaminen ja Avaa-nappulan klikkaaminen riittäisivät.
Itse juuri jokin aika sitten laitoin Outlook-liitetiedoston raahaamisominaisuuden omaan C#-ohjelmaan, ja onhan se muutaman sadan koodirivin operaatio. Luulisi kuitenkin olevan mahdollista tehdä Exceliinkin tavalla tai toisella jos se sille on isompi tarve. Voi toki olla että suoraan VBA:lla ei onnistu.
Käytin Code Projectista löytyvää esimerkkiä johon lähetin vielä bugikorjauksenkin
http://www.codeproject.com/KB/office/
Jos päätyy tuota käyttämään niin kannattaa huomioida ne muutkin keskustelussa mainitut korjaukset, itse artikkelia ei ole päivitetty vuoden 2008 jälkeen.
Moi taas asssd!
Jos haluat availla Outlookin liitetiedostoja Excel/VBA-Project lomakkeelta niin ehdotan, että haet VB-editorin toolboxiin Microsoft Outlook View Control objektin ja raahaat sen edelleen lomakkeelle. Voit sitten availla .xls, .csv jne. tiedostoja parilla hiiren klikkauksella ilman, että Outlookin pitää olla avoinna.
Heippa taas!
Mikäli tiedostojen (myös outlook liitetiedostojen) avaaminen raahaamalla Excel/VBA-projektin lomakkeelle vielä jotakuta kiinnostaa ja käytössä on 32-bittinen Windows (XP SP3 tai uudempi) sekä 32-bittinen Office/Excel (2003 tai uudempi) ja Microsoft Windows SDK for Windows 7 and .NET Framework 4 paketti on asennettu järjestelmään niin täältä voi halutessaan ladata valmiin testiprojektin...
Heippa taas!
Väsäilin aikani kuluksi VB6:lla ActiveX VBADropBox-kontrollin, jonka voi tuoda VBA-Projektin toolboxiin ja raahata lomakkeelle. Testiprojektin tarvittavine kirjastotiedostoineen sekä asennusohjeineen voi halutessaan impata täältä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.