Clever-Excel-Forum

Normale Version: VBA - Entfernung von "Stoppwörtern" + "Sonderzeichen" in aktueller Markierung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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
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 
@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.
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.
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.
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.
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
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")
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?
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:
Seiten: 1 2