Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Erikoinen ääkkösongelma

Sivun loppuun

palapeli [11.04.2013 00:25:46]

#

Tai sitten ei ole muille. Mutta itse en hiffaa. Excel 2011 macille käytössä.

Kaikki näyttää päin honkia. Esim. euron merkki chr(128) näyttää taasen isoa Ä:tä. Mutta mikää ääkkösistä ei toimi oikein.

Grez [11.04.2013 00:52:43]

#

Jes, pitäiskö ton perusteella jonkun osata sanoa jotain?

Avasit tiedostomuodon (.txt, .csv, .xls, xlsx, joku muu?) sillä Excelilläsi joka oli tehty jollakin (toisella?) koneella jollakin (toisella?) ohjelmalla?

Vai nakutteletko niitä merkkejä näppäimistöltä mitkä näkyy väärin? Vai jollain skriptillä duunaat? Vai kaavalla?

Metabolix [11.04.2013 01:03:27]

#

Tämän laadukkaan ja kattavan kuvauksen perusteella kuulostaa, että olet onnistunut sotkemaan Mac OS Roman -merkistön ja Windows-1252-merkistön. Ongelma ratkeaa luultavasti, jos käytät tiedoston tallennus- ja avausvaiheessa samaa merkistöä.

palapeli [11.04.2013 09:45:07]

#

Sori huonosta kuvauksesta. Tiedosto luotu macilla xlsm. Makroja tehdessä esim. MsgBoxissa kaikki Chr() näyttää päin honkia. Miten avaan ton samalla merkistöllä?

Grez [11.04.2013 10:26:46]

#

Voisin kuvitella, että se toimisi ihan suoraan jos skriptissä et käyttäisi chr() funktiota vaan laittaisit merkit suoraan sellaisenaan koodiin. Eli miksi laittaa msgbox(chr(128)) kun voi laittaa msgbox("€")

chr() funktio varmaankin palauttaa isäntäkoneen merkistöllä tiettyä numeroa vastaavan merkin. Universaalimpi vaihtoehto on ChrW() käyttäminen, jolle annetaan Unicode-numerokoodi. Eli esim euro on chrw(8364)

palapeli [11.04.2013 10:56:44]

#

Joo kyllähän tässä macillä toimii kaikki ääkköset ja erikoismerkit ihan suoraan kirjoitettuna. Mutta kun joudun esittämään ks. työn windowsilla niin siellä ne alkaa temppuilemaan.

Kiitos Grez, tuolla Chrw():llä toimii.

Miten kun Msgboxissa on aika pitkä teksti. Niin korvaanko ä:t ja ö:t näin. Luulis että yksinkertaisempikin ratkaisu löytyy.

o = Chrw(246)
a = Chrw(228)

MsgBox ("S" & a & "hk" & o & "postiosoite")

Grez [11.04.2013 11:39:31]

#

palapeli kirjoitti:

Joo kyllähän tässä macillä toimii kaikki ääkköset ja erikoismerkit ihan suoraan kirjoitettuna. Mutta kun joudun esittämään ks. työn windowsilla niin siellä ne alkaa temppuilemaan.

En kyllä keksi miksi ne alkaisi temppuilemaan Windowsilla. Ei ainakaan mun Windowsissa temppuile.

palapeli kirjoitti:

Miten kun Msgboxissa on aika pitkä teksti. Niin korvaanko ä:t ja ö:t näin. Luulis että yksinkertaisempikin ratkaisu löytyy.

o = Chrw(246)
a = Chrw(228)

MsgBox ("S" & a & "hk" & o & "postiosoite")

Mielestäni yksinkertaisemp ratkaisu on:

MsgBox("Sähköpostiosoite")

Jos tuo yksinkertainen ratkaisu ei tosiaa toimi "cross platform" niin sitten varmaankin tuolla tavalla kuin esitit.

Sanotaanko että jos tällainen perusjuttu ei toimi mac<->win -välilläihan suoraa niin olen kyllä aika pettynyt MSFTiin. Olisi luullut että skriptit menisi xlsm-tiedostoon ihan vaan unicode-tekstitiedostoina, mutta näköjään ne on siellä paketissa jossain ihme binäärimuodossa :(

Valitettavasti en omista Excel lisenssiä macille, joten en voi kokeilla.

palapeli [11.04.2013 12:24:39]

#

Sain toimimaan. Operator xFiltervalues oli turha joka aiheutti windowsissa ongelman muttei Macissä.


Sivun alkuun

Vastaus

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

Tietoa sivustosta