Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Entfernung von "Stoppwörtern" + "Sonderzeichen" in aktueller Markierung
#1
Hallo,

ich habe eine Excel-Datei "Textoptimierung.xlsx" welche zwei Arbeitsblätter enthält.
Diese Datei liegt als Beispiel unter: d:\Textoptimierung.xlsx - der Pfad muss aber später variabel sein.

Arbeitsblätter von "Textoptimierung.xlsx"
Arbeitsblatt_1_Name: Stoppwörter
Arbeitsblatt_2_Name: zulässige Zeichen

im Arbeitsblatt "Stoppwörter" stehen alle für mich relevanten Stoppwörter untereinander:
da
das
der

im Arbeitsblatt "zulässige Zeichen" stehen alle von mir zugelassenen Zeichen:
A
B
C
D
Ä
Ü
\
+

Jetzt möchte ich ein global gültiges Makro erstellen welches in jedem beliebigen Excel-Dokument die aktuell markierten Zellen entsprechend optimiert und dabei auf die "Textoptimierung.xlsx" zugreift und die dort hinterlegten Werte als Basis verwendet.
STRG+SHIFT+S - soll bei allen markierten Zellen die Stoppwörter löschen
STRG+SHIFT+Z - soll alle Zeichen löschen die nicht von mir als "zulässige Zeichen" erlaubt wurden.
STRG+SHIFT+C - soll beides nach einander durchführen - erst Zeichen löschen dann Stoppwörter entfernen


Kann mir hier jemand helfen? 


Ich bitte um Rückmeldung.
Vielen DANK
Antworten Top
#2
Hallo,

in DieseArbeitsmappe
PHP-Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "^+s"""
Application.OnKey "^+z"""
Application.OnKey "^+c"""
End Sub

Private Sub Workbook_Open()
Application.OnKey "^+s""Modul1.S"
Application.OnKey "^+z""Modul1.Z"
Application.OnKey "^+c""Modul1.C"
End Sub 

in ein allgemeines Modul
PHP-Code:
Sub S()
arr Worksheets("Stoppwörter").Range("A1:A3")

For 
Each a In arr
    Selection 
Replace(Selection" " " "" ")
Next a
End Sub

Sub Z
()
arr Worksheets("zulässige Zeichen").Range("A1:A9")

For 
Each a In arr
    Selection 
Replace(Selectiona" ")
Next a

End Sub

Sub C
()
Call S
Call Z
End Sub 
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 1 Nutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • n8lauscher
Antworten Top
#3
@Flotter Feger,

nur kurz zum Verständnis.

ich habe folgende Dateien:
PERSONL.XLS ( als Vorlage für meine globalen Makros )
und
Textoptimierung.xlsx

d.h. wenn ich eine neue Excel-Datei öffne wird immer laut:
https://www.computerwissen.de/office/exc...achen.html
die PERSONL.XLS geladen - hier soll das Makro liegen.

und in der Datei Textoptimierung.xlsx sollen nur die Argumente abgelegt werden.
Der Speicherort zum abfragen von Textoptimierung.xlsx soll als Konstante in der PERSONL.XLS definiert werden können. 

So wie ich Dein Makro verstanden habe - müsste ich dieses bei jedem geöffneten Arbeitsblatt entsprechend einfügen.
Das möchte ich aber nicht - ich möchte dass die allgmeine Vorlage PERSONL.XLS das Makro enthält und immer beim Öffnen von Excel mitgeladen wird. 
geht dies überhaupt? 

Ich bitte um Rückmeldung und natürlich besten DANK für die schnelle Hilfe.
Antworten Top
#4
Hallo,

leg den Code lieber in ein AddIn. Ist sinnvoller, als ihn in die Personal.XLSB zu packen.

Der Aufruf über 'Application.Run' hat so seine Tücken ... und zusammen mit den ShortCuts ... ich würde das AddIn vorziehen.
Ist aber deine Entscheidung.

Um deinen Pfad flexibel zu machen, schau dir mal 'Application.GetOpenFilename' an.


PS:
es wäre schön, wenn du von Anfang an, immer gleich alle Informationen in den Eingangspost schreibst ... mit allem drum und dran.
Die meisten Helfer ... und da schließe ich mich absolut ein ... mögen es gar nicht, wenn sich die Vorgaben ständig ändern.
Meist arbeitet frau nämlich dann für den Mülleimer, da die Vorgaben teilweise extrem auseinander gehen, wenn sie On-The-Fly geändert werden.
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 2 Nutzer sagen Danke an Flotter Feger für diesen Beitrag:
  • Kl@us-M., n8lauscher
Antworten Top
#5
Hallo Sabina,

Zitat:es wäre schön, wenn du von Anfang an, immer gleich alle Informationen in den Eingangspost schreibst ... mit allem drum und dran.
Die meisten Helfer ... und da schließe ich mich absolut ein ... mögen es gar nicht, wenn sich die Vorgaben ständig ändern.
Meist arbeitet frau nämlich dann für den Mülleimer, da die Vorgaben teilweise extrem auseinander gehen, wenn sie On-The-Fly geändert werden.

Das war aber nicht meine Absicht!
Ich denke, dass ich mich einfach nur unglücklich ausgedrückt hatte. 
Ich beschäftige mich mit Excel erst seit ca. 5 Monaten und lerne täglich neue Sachen. 
Da ich mit mehreren Makros arbeite und mir das Makro einfügen in eine Arbeitsmappe jedesmal aufs neue auf die Nerven gegangen ist - habe ich heute einfach einmal nachgelesen - ob es nicht sowas wie ein globales Makro gibt. 

Ich war der Meinung dass wenn ich vom globalen Makro schreibe - dass dann immer von der Personal.XLSB gesprochen wird. 
Mir waren bis zu Deinem Post "AddIn" gar nicht bekannt. 

Daher bitte ich dies zu entschuldigen. 

Und nochmals DANKE für Deine Mühe werde einmal prüfen ob ich mit Deinen Infos weiterkomme.
Antworten Top
#6
Hallo,

Zitat:... ob es nicht sowas wie ein globales Makro gibt. 

den Tipp, das Teil besser in ein AddIn zu packen anstatt ihn in der PERSONL.XLS abzulegen, hast Du doch schon bekommen.
Ich würde das an Deiner Stelle tun.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
[-] Folgende(r) 1 Nutzer sagt Danke an Käpt'n Blaubär für diesen Beitrag:
  • n8lauscher
Antworten Top
#7
Hallo,

ja danke.

Leider komme ich nicht weiter mit dem Add-in:

ich habe nun folgendes Add-in Makro erstellt:

Code:
Option Explicit

Sub shortcuts()
Application.OnKey "+^{C}", "test"
End Sub

Sub test()
Range("A1:A11").Select
End Sub

Habe das dann als test.xlam gespeichert und über Add-in Verwaltung aktiviert.
Wenn ich nun eine neue Excel-Datei aufmache und STRG+SHIFT+c drücke höre ich nur diesen "Error" - Ton.
Nichts passiert.
Wenn ich dann in die Entwicklertools gehe, das Makro einmal starte - dann STRG+SHIFT+c drücke wird im neuen Dokument a1:a11 markiert.
Ich hatte aber doch verstanden, dass das add-in immer direkt geladen wird ohne das ich das Makro noch einmal ausführen muss?

oder verstehe ich hier etwas falsch? 

was mache ich falsch? bzw. muss das Makro immer explizit gestartet werden? 

Ich bitte um Rückmeldung.

DANKE
Antworten Top
#8
Hallöchen,

wenn Du Dir die erste Antwort anschaust, dann hast Du dort zweierlei Makros. Die aus dem ersten Teil laufen bei bestimmten Ereignissen - da steht was von Workbook_open und beforeclose…

Damit ein Makro etwas bewirkt, muss es erst mal gestartet werden. Das kann z.B. manuell oder auf Knopfdruck passieren oder eben bei bestimmten Ereignissen.

Egal ob AddIn oder Personl.xls(b), ich hätte an einigen Stellen, z.B. beim Zugriff auf Sheets, noch differenziert, wo genau ich was finde, z.B.

ThisWorkbook.Worksheets("Stoppwörter").Range("A1:A3")
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • n8lauscher
Antworten Top
#9
Hallo,

ich wollte mich noch einmal bezüglich Shortcut bei Excel Start zurückmelden:


Code:
'' Modul Shortcuts

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Application.OnKey "+^{C}", ""
End Sub

Private Sub Workbook_Open()
' STRG + SHIFT + C
  Application.OnKey "+^{C}", "test"
End Sub

Code:
'' Modul Test

Private Sub test()
 MsgBox "Hallo Forum"
End Sub


Ich habe es jetzt genauso wie in "Flotten Feger"s Beispiel probiert.

Auch hier nun - nach starten eines beliebigen Excel-Dokuments und drücken von STRG + SHIFT + C bekomme ich nach wie vor den "ERROR" - Ton. 

Wenn ich dann in die Entwicklertools gehe und das Makro "Shortcuts" einmal mit Play starte funktioniert alles wie es soll.

Wieso kann der Shortcut immer noch nicht beim Öffnen eines beliebigen Excel-Dokuments geöffnet werden? 
Was mache ich falsch?
Antworten Top
#10
Hallo,
Zitat:Ich habe es jetzt genauso wie in "Flotten Feger"s Beispiel probiert.
Nein ... nicht wirklich ... Sleepy 

Setze dich ganz ruhig hin ... lösche dann die geschweiften Klammern um das C und schon sollte es eigentlich gehen.
Du kannst dir auch nochmal meinen Code ansehen, nur um sicher zu gehen. :17:
VG Sabina

bei mir läuft Win 7 32-Bit - Office 2010 Pro Plus 32-Bit und Office 2016 Pro Plus 32-Bit
Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
[-] Folgende(r) 1 Nutzer sagt Danke an Flotter Feger für diesen Beitrag:
  • n8lauscher
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste