Težava pri kopiranju prek VBA

Pomoč pri izdelavi makrov
Odgovori
AndrejL
Prispevkov: 25
Pridružen: Po Nov 10, 2008 9:22 pm

Težava pri kopiranju prek VBA

Odgovor Napisal/-a AndrejL »

Oj!

Imam težavo, ker mi neko dejanje vrne različen rezultat, če ga izvedem z makro ali ročno in pri najboljši volji ne vidim, v čem je problem.

Koda je čisto preprosta in sicer:

Koda: Izberi vse

ActiveSheet.PasteSpecial Format:="Unicode Text", Link:=False, _
    DisplayAsIcon:=False
Težave je pri kopiranju številk.

Konkreten primer. Če kopiram tečajnico banke Slovenije ročno (kopiram celotno stran in jo kot Paste Special -> Unicode text kopiram v Excel, deluje brez problema.

Če pa uporabim zgornji makro, ne deluje. Namesto vejic pri številih mi vstavi pike (pa še kaj bi se našlo) in posledično je rezultat napačen.

Hvala za pomoč,

Andrej
AndrejL
Prispevkov: 25
Pridružen: Po Nov 10, 2008 9:22 pm

Odgovor Napisal/-a AndrejL »

Še nekaj...

ta koda je del nekega malo večjega projekta in bi najraje to rešil prek Excelovega makra, ker je najhitreje.

Poskusil sem tudi tole:

Koda: Izberi vse

Application.Dialogs(53).Show
SendKeys "{DOWN}"
SendKeys "{ENTER}"
(odpre PasteSpecial meni, se pomakne eno vrstico nižje (tam je Unicode text) in klikne ENTER).

Vendar mi tudi to ne deluje. Meni PS odpre, vendar se potem makro ustavi. Ukaza SendKeys se ne izvedeta.

Če ima kdo rešitev za tole, potem bo tudi tako OK.

Lp, Andrej
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Res je točno to kar govorite... Očitno gre za napako v Excelu in v primeru dela preko VBA-ja poskuša lepiti z angleškimi nastavitvami, kadar pa uporabite ukaz, pa upošteva slovenske nastavitve (problem pik/vejic).

Glede na zapisano tudi nimam rešitve in boste morali uporabiti drugačen način in ne kopiranje.

Lahko pa vas razveselim, da ravnokar pripravljam Excelovo datoteko, ki bo znala uvoziti in uporabljati tečajnico Banke Slovenije (res zanimivo, da se tako "ujameva" :):) ). Vse je že narejeno, sedaj samo še urejam lepotne popravke in pripravljam podstran, kjer bo vse skupaj opisano. Datoteka bo do nedelje 7.3.2010 zagotovo že na internetu - po vsej verjetnosti že prej. Bom zapisal tudi v to tematiko.
lp,
Matjaž Prtenjak
Administrator
AndrejL
Prispevkov: 25
Pridružen: Po Nov 10, 2008 9:22 pm

Odgovor Napisal/-a AndrejL »

kaj pa rešitev z mojega drugega posta? kakšna ideja?

sem dal pa tečajnico le kot primer, saj sem rabil neko tabelo s številkami. podatki, ki naj bi jih kopiral so od naročnika in nisem tega dajal sem gor.

torej še večje naključje :)
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

:( Drugega prispevka pa - čisto iskreno(!) - sploh nisem šel raziskovat, ker sem si že dolgo nazaj zaobljubil, da ne bom nikoli pisal makrov, ki se naslanjajo na konkretno implementacijo nekega programa (torej makrov, ki simulirajo pritiske tipk in premike miške). Posledično s takšnimi makri nimam nobenih izkušenj in se jih izogibam, zatorej vam tudi ne morem pomagati.

Če bi moral jaz rešiti vaš problem, bi se preko VBA-ja povezal na internet in pridobil stran, ki jo želite, ter jo "sparsal" (to pomeni programsko preiskal in izločil ustrezne podatke) v Excel. Lahko pa si stvar še bolj poenostavite in stran odprete direktno v Excelu ter potem podatke berete, kar direktno iz celic - seveda pa ste v tem primeru še mnogo bolj podvrženi problemi, ko se izgled spletne strani spremeni...
lp,
Matjaž Prtenjak
Administrator
cedra
Prispevkov: 264
Pridružen: Po Jul 25, 2005 11:11 pm
Kraj: Kamnik

Odgovor Napisal/-a cedra »

Tudi sam imam neko tabelo, ki jo osvežujem z internetom. Pri prenosu je decimalna oblika števila s piko, jaz pa seveda rabim vejico. Zato te pike zamenjam z vejico. Vendar pa to ni dovolj, ker VBA uporablja pač ameriški sistem. In tako pravzaprav ne rešim nič. Moram potem še enkrat zamenjati, to pot pa vejice s piko. Takole npr.:

Koda: Izberi vse

Range("D16:E63").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
        Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False
In glej, zdaj pa stvar dela v redu in lahko uporabim števila za nadaljno obdelavo. Vsa števila so po naše z dec. vejico!
Ne vem pa , če je to rešitev, ki bi vam lahko pomagala...?
lp,

cedra
admin
Site Admin
Prispevkov: 3687
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

admin napisal/-a:Lahko pa vas razveselim, da ravnokar pripravljam Excelovo datoteko, ki bo znala uvoziti in uporabljati tečajnico Banke Slovenije (res zanimivo, da se tako "ujameva" :):) ). Vse je že narejeno, sedaj samo še urejam lepotne popravke in pripravljam podstran, kjer bo vse skupaj opisano. Datoteka bo do nedelje 7.3.2010 zagotovo že na internetu - po vsej verjetnosti že prej. Bom zapisal tudi v to tematiko.
Kot obljubljeno, je v nedeljo zvečer datoteka na internetu. Več o njej si lahko preberete tukaj. Komentarji dobrodošli...
lp,
Matjaž Prtenjak
Administrator
Odgovori