WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   Formular Textfeld als Dateiname (http://www.wcm.at/forum/showthread.php?t=229042)

kainz 26.06.2008 12:01

Formular Textfeld als Dateiname
 
Ich habe ein Formular, wo per Makro aus einem (oder mehreren) Textfeld(ern) gleich beim abspeichern der Dateiname erzeugt wird.

Der Code lautet:

Sub FileSave()

If ActiveDocument.Path = "" Then 'Falls Dokument noch nie gespeichert wurde
FileSaveAs
Exit Sub
End If
ActiveDocument.Save
End Sub

Sub FileSaveAs()
With Dialogs(wdDialogFileSaveAs) 'Beispiel: 2008_01_28_KO_4220_102360_Toner PC75A.doc
.Name = ActiveDocument.FormFields("datum").Result & "_KO_" & _
ActiveDocument.FormFields("werk").Result & "_" & _
ActiveDocument.FormFields("lieferant").Result & "_" & _
ActiveDocument.FormFields("artikel").Result
.Show
End With
End Sub

Funktioniert auch wunderbar, solange nicht bestimmte Zeichen ("/", "\" , "",...) in diesen Formularfeldern vorkommen - wird mir natürlich nicht als Dateiname akzeptiert.

Wie kann ich jetzt per VB diese "Sonderzeichen" in ein "_" umwandeln, damit das Dokument ohne Fehler abgespeichert werden kann??

Vielen Dank schon mal für Eure Hilfe:rolleyes::rolleyes:

pong 26.06.2008 12:11

Wie wäre es mit ersetzen?

Warum ersetzt du die ungewünschten Zeichen nicht einfach? (2 Schleifen + mid)

pong

Farkarich 26.06.2008 12:33

Hi

ich hab mal so was in der art machen müssen und habs über ascii gemacht sprich

alles auf klein formatiert und dann: jedes zeichen überprüft ob der wert von asc() in einen gewünsten bereich liegt ich glaube (a = 24 und b = 25 usw) und wenns nicht in dem bereich war dann eben mit _ ersetzten..

wichtig ist dabei dasst nicht vergisst alles klein oder groß zu machen weil a und A haben zB verschieden werte..

kainz 26.06.2008 13:27

Vielen Dank für für Eure Hilfe

wbendl 27.06.2008 07:39

Hi!

Wenn du ein bestimmtes Zeichen (oder auch mehere) ersetzen willst, bietet sich die VB-Funktion Replace an.

Wenn du nur bestimmte Zeichen erlauben willst, mach es über den ASCII-Code. Farkarich hat das ja schon beschrieben.

48 bis 57, 65 bis 90, 97 bis 122 (Buchstabe groß und klein oder Zahl). Eventuell solltest du aber auch noch weitere Zeichen erlauben (z. B. - _ .)


mfg

WB

Farkarich 27.06.2008 08:54

@ wbendl

hi ganz genau, und danach es bei der problemstellung geht dass man keine "sonderzeichen" festlegt finde ich wär eben die lösung mit dem asci am einfachsten, weil sonst hast eben probleme festzulegen welche zeichen müssen alle replaced werden,

mit meiner lösung wird einfach nur der bereich angegeben der erlaubt ist und der rest is ausgeschlossen..

mfg
Bernd


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag