Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Tiedoston avaaminen raahaamalla (Excel VBA)

Sivun loppuun

asssd [13.10.2011 18:06:32]

#

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.

neau33 [13.10.2011 22:06:32]

#

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.

Grez [13.10.2011 22:14:05]

#

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?

neau33 [13.10.2011 22:34:16]

#

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...

Grez [13.10.2011 22:45:28]

#

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.

asssd [14.10.2011 08:31:52]

#

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.

neau33 [14.10.2011 13:46:31]

#

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.

Grez [14.10.2011 14:06:25]

#

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/outlook_drag_drop_in_cs.aspx?msg=3899586#xx3899586xx

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.

neau33 [14.10.2011 16:30:45]

#

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.

neau33 [16.10.2011 02:57:33]

#

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...

neau33 [20.10.2011 04:06:11]

#

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ä.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta