Moi,
Tämä nyt ei ole ihan VB kysymys, koska tämä tuli vastaan
kun tein excelille makroa joka lukee kahden solun sisällön
ja yhdistää ne yhdeksi merkkijonoksi, jota käytetään tiedostonimenä työkirjalle.
Ohjelma lukee muuttujan ja se sisältää esim.
merkkijonon abcfd.hgds/2@, miten poistaa siitä
esim pisteen, kauttaviivan sekä @ merkin tai ylipäätään merkin joka ei sovi tiedostonimeen?
t:tomi
En tunne Exceliä, mutta toimivatko siinä samat lauserakenteet ja fuktiot kuin VB:ssä?
Sitten vain käyt läpi silmukalla ja Mid-funktiolla jokaisen merkin erikseen ja jos löytyy väärä merkki, pistät ohjelman sen.
Periaatteena voisi pitää sitä, että kaikki merkit käydään läpi ja jos merkki ei ole . / tai @ lisätään merkki muuttujaan...
Ja tässä esimerkkikoodi:
merkkijono="abcdfd.hgds/2@"
a=0
do
doevents
a=a+1
b=mid(merkkijono,a,1)
if b <> "." and b <> "@" and b <> "/" then c=c&b
loop until b=""
tiedostonimi=c
Tämän pitäisi toimia... En tosin ole varma joten joitakin muutoksia saatat joutua tekemään :)
Juuri tuollaista tarkoitin. Tuo koodihan tarkistaa merkkijonon ja kopioi sen muuttujaan c karsien pois väärät.
Tuo vertailu kannattaa tehdä näin, vaikka toimii noinkin
If InStr(b, "./@") = 0 Then c = c & b
Ja noviisi palaa areenalle...
Ei mulla nää hommat mene ihan niin kuin elokuvissa
eli menikö tämä(kin) täysin metsään.
Saisiko tähän vielä avun?
Koodi on tässä:
fName = Range("B6").Value & " " & Range("D4").Value a = 0 Do DoEvents a = a + 1 b = Mid(fName, a, 1) If InStr(b, ",./\*?@:;<>|#") = 0 Then c = c & b Loop Until b = "" fName = c wb5.SaveAs FileName:=c, FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False
BTW, tuli pieni ongelma lainausmerkkien poistamisen kanssa.
Mutta Kiitokset kaikille auttaneille!
t:tomi
If InStr(b, ",./\*?@:;<>|#" & """) = 0 Then c = c & b
Aihe on jo aika vanha, joten et voi enää vastata siihen.