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.

Textersetzung im Serienbrief mittels VBA
#1
Hallo liebes Forum,

ich bin relativ neu in der VBA Welt und kämpfe leider gerade mit einer Aufgabe, die ich bis morgen Nachmittag erledigt haben muss, jedoch nicht weiterkomme. 

Ich schildere euch kurz was ich machen muss und an welcher Stelle ich scheitere.



Ich habe ein Word Template erhalten, in dem ich 3 Felder aktualisieren muss. Die dazugehörigen Daten liegen vor.

In dem Template gibt es zwei Texte die "userxx" und "pwxx" heißen. Mir liegt zusätzlich eine Excel Tabelle vor, in denen jeweils Usernamen und die dazugehörigen Passwörter eingetragen sind. Ebenfalls gibt es noch einen Link in dem beides drinsteht, der einen QR-Code generiert den man als Bild einsetzen kann. Ich soll jetzt:

1. User aus Excel Tabelle kopieren
2. Das dazugehörige Passwort aus Excel Tabelle kopieren
3. Im Word Template "userxx" durch den User in Schritt 1 ersetzen
4. Im Word Template "pwxx" durch das Passwort in Schritt 2 ersetzen
5. Im Word Template den QR-Code aus dem Link einfügen
6. Das Word Dokument mit individuellem Namen (User aus Schritt 1) speichern.

Der Code den ich bereits geschrieben habe sieht wie folgt aus:

Sub replaceUserPW()

Dim wdApp As Word.Application
Dim wdDoc As Word.Document

Dim templatepath As String
Set templatepath = "...\vorlage_pw.docm"


Dim exlApp As Excel.Application
Dim exlDoc As Excel.Document

Dim datapath As String
Set datapath = "...\data.xlsm"

'Get word instance or create
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
    Set wdApp = CreateObject("Word.Application")
End If
On Error GoTo 0

' Set the template
Set wdDoc = wdApp.Documents.Open(templatepath, AddToRecentFiles = False)
    wdApp.Visible = True
    
Set exlDoc = exlApp.Documents.Open(datapath)
    exlApp.Visible = True

Dim i As Integer


For i = 1 To 40
    
    With ActiveDocument.Range.Find
        .Text = "userxx"
        .Replacement.Text = i + 1
        .Text = "pwxx"
        .Replacement.Text = exlDoc.Cell(3, i)
    End With
    
    ActiveDocument.SaveAs2 i, ".doc"
        
Next

End Sub




Wie ich den QR-Code aus dem Link als Bild einfügen kann ist mir sowieso ein Rätsel, der Rest haut aber gar nicht hin!

Ich hoffe ihr könnt mir helfen.

Viele Grüße
Antworten Top
#2
Hi,

ich habe noch etwas getüftelt und einen neuen Ansatz gefunden. Damit kann ich zumindest schon mal Passwort und User ersetzen, leider ist es aber bei jedem Dokument derselbe User und dasselbe Passwort. Ich habe die Schleife mal bis 5 laufen lassen zum Testen, es werden auch 5 Word Dokumente so erstellt wie ich es möchte, jedoch enthalten alle den User und das Password des ersten Users, d.h. in der Schleife wird i nicht für die Zellenbezeichnung geupdatet:
Mein Problem mit dem Einfügen der QR-Codes (in der Excel Tabelle als Link angegeben, beim Klicken als Bild im Browser dargestellt) bleibt jedoch weiterhin bestehen.



Sub CloneUserPW()

Dim wordApp As Object, ws As Worksheet, i As Integer, usercell As String, pwcell As String, docname As String


Set ws = ThisWorkbook.Sheets("Tabelle1")

Set wordApp = CreateObject("Word.Application")
wordApp.Visible = True
wordApp.Documents.Open "....\vorlage.docx"
wordApp.Activate


For i = 1 To 5   'bis zum letzten TF
docname = "zielpfad" & i & ".docx"

With wordApp.ActiveDocument.Content.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    
    .Text = "userxx"
    .Replacement.Text = ws.Range("A" & CStr(i + 1)).Value
            .Forward = True
            .Wrap = 1
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False

            .Execute Replace:=2
    
    .Text = "pwxx"
    .Replacement.Text = ws.Range("C" & CStr(i + 1)).Value
            .Forward = True
            .Wrap = 1
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False

            .Execute Replace:=2


End With

wordApp.ActiveDocument.SaveAs docname

Next

End Sub
Antworten Top
#3
Hallo,

schau mal, hier hat jeder User sein eigenes Passwort.

Mit dem hier gezeigten Bild will ich Dir eigentlich nur zeigen, daß es
tatsächlich möglich und technisch auch machbar ist, Deinen Wunsch
zu erfüllen.

Für eine effektive Hilfe brauche ich, und ich denke das sehen andere
Helfer genau so, eine Beispielmappe zum testen.

Und mich durch Deinen oben gezeigten Spargelcode zu quälen, habe
zumindest ich, auch kein gesteigertes Verlangen. Außerdem ruft mein
Kopfkissen schon ungeduldig nach mir.

Dieser ganze Kram beispielsweise ist nur Schmuck am Nachthemd und
verzichtbar. Du hast ihn ja im Code eh schon abgeschaltet:
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False


Angehängte Dateien Thumbnail(s)
   
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#4
Hi nochmal.
 Käptn Blaubär, tut mir leid wegen des Codes, hast recht was das anging. Mittlerweile konnte ich aber alles lösen, das Problem das ich nicht bedacht hatte war, dass ich das Template ja nicht zurücksetze und deshalb dann auch die statische Textersetzung nicht funktioniert.

Nichtsdestotrotz habe ich immer noch das Problem um den QR-Code einzufügen. Gibt es generell denn die Möglichkeit, in Excel VBA ein Bild über einen Hyperlink einzufügen, zu skalieren und auf einem Word Dokument an eine bestimmte Position zu bewegen?

Viele Grüße
Antworten Top
#5
Hallo,

Zitat:immer noch das Problem um den QR-Code einzufügen

von QR-Codes weiß ich nur, daß es so etwas gibt. Gebraucht oder genutzt habe ich ihn nie.
Auch habe ich wenig Erfahrungen mit Hyperlinks. In dem Bereich, in dem ich arbeite, benötigt
man so etwas nicht wirklich.

Willst Du nur das Bild in die Datei einbauen? Das ginge dann voraussichtlich relativ einfach.
Ob mit Hyperlink oder nicht, ich meine, das sollte machbar sein. Schau'n wir mal, dann seh'n
wir schon.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#6
Hallöchen,

ich nutze oft Hyperlinks auf Bilddateien, damit meine Excel nicht so groß wird. Das geht auf jeden Fall. Man muss nur beim Weitergeben auch an die QR-Code-Dateien denken. Ich speichere deshalb zusammengehörende Excel und Bilder in einem Verzeichnis, das wird dann zur Weitergabe gezippt und dann passt das.

QR-Codes werden z.B. verstärkt beim Onlinebanking zur Ablösung von TAN genutzt.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
Danke, André

für dieses Info

Zitat:QR-Codes werden z.B. verstärkt beim Onlinebanking zur Ablösung von TAN genutzt.

Auch da benutze ich eine andere Methode.
Ich war bisher der Meinung, damit könne man nur Inhaltsverzeichnisse von Tütensuppen und anderem Gedöhns auslesen.
Zu meiner Entschuldigung, seit dem 01.08.2013 gilt für mich eine andere Zeitrechnung und als Fünfjähriger kann man das
auch noch nicht wissen.
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top


Gehe zu:


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