Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
964to968
964to968
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Textmarken werden nicht angesprungen

Textmarken werden nicht angesprungen
09.04.2008 16:52:00
Andi
Hallo zusammen,
nachdem ich jetzt 14 Stunden lang (!) einen Fehler in meinem Code gesucht habe, wende ich mich an euch in der Hoffnung auf Hilfe!
Der nachfolgende Code liest in Excel aus einer Userform die Variablenwerte aus und soll diese dann diese Werte in einen Word-Vordruck an definierte Textmarken einfügen. Eigentlich ein ganz einfaches Unterfangen....
Problem: Der Cursor in Word bewegt sich nicht au der oberen linken Ecke des Dokuments und die Aufrufe der Subroutinen zur Festlegunge der Textmarkeninhalte werden der Reihe nach abgearbeitet, ohne dass die Inhalte der Variablen weitergegeben werden. ich habe den Eindruck, Excel weiß nicht, dass es sich in Word befindet.
Das ist der Code(Ausschnitt):
'Erstellung des Wochenberichts als Word-Dokument
Dim WordObj As Word.Application
Dim DocObj As Word.Document
StrPfad = ThisWorkbook.Path
strDateiname = StrPfad & "\" & "weekly report.dot"
Set WordObj = CreateObject("Word.Application")
Set DocObj = WordObj.Documents.Open(Filename:=strDateiname, ReadOnly:=True)
WordObj.Visible = True
WordObj.Application.Activate
'Bis heirher geht alles seinen kapitalistischen Gang! Word öffnet sich, das Dokument erscheint und ist aktiviert.
WriteInBookmark "KW", strKW
WriteInBookmark "Ersteller", strErsteller
WriteInBookmark "Datum", strDatum
WriteInBookmark "Projektnummer", StrProjektNr
WriteInBookmark "Projektthema", StrProjekttext
WriteInBookmark "Verantwortlicher", strProjektleiter
WriteInBookmark "Kosten", Kosten
WriteInBookmark "Termine", Termine
WriteInBookmark "Technik", Technik
WriteInBookmark "KWgestern", KWgestern
WriteInBookmark "Gestern", strGestern
WriteInBookmark "Heute", strHeute
WriteInBookmark "Morgen", strMorgen
'Ausdruck
If bolPrint = True Then
'WordObj.PrintOut
End If
'Ablage des Wochenberichts
If bolMail = True Then GoTo Mail
strDatei = "Wochenbericht " & strKW & " " & StrProjektNr & ".doc"
StrVerzeichnis = strKW
strPfadname = StrPfad & "\" & strJahr & "\" & StrVerzeichnis & "\" & strDatei
DocObj.SaveAs Filename:=strPfadname
'Mailversand der DocDatei
Mail:
With WordObj.Application
'.DisplayAlerts = False
'.Quit
End With
Set WordObj = Nothing
End Sub



Public Function WriteInBookmark(ByVal BMName As String, ByVal BMText As String)
'Schreibt einen neuen Wert in ein vorhandenes Bookmark
Dim RangeObj As Word.Range
With WordObj.dicuments(strDateiname)
If .Bookmarks.Exists(BMName) Then
Set RangeObj = .Bookmarks(BMName).Range
RangeObj.Text = BMText
.Bookmarks.Add Name:=BMName, Range:=objRange
Set RangeObj = Nothing
End If
End With
End Function


Was ist der Fehler? Kann mir jemand helfen?!?!?!?
Gruß
Andi

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textmarken werden nicht angesprungen
09.04.2008 17:04:50
Renee
Hi Andi,
z.B. ist das hier With WordObj.dicuments(strDateiname) sicher ein Fehler, dann
ist strDateiname lokal definiert kann also in der WriteInBookmark Funktion gar nicht bekannt sein.
Excel weiß nicht, dass es sich in Word befindet. woher auch. Excel interessiert sich nicht für Word. Dein VBA-Code sollte nur richtig sein.
Option Explicit gehört als erste Codezeile in jedes Modul. Dann deklariere die Variablen richtig.
GreetZ Renée

AW: Textmarken werden nicht angesprungen
10.04.2008 08:45:26
Andi
Hallo Renée,
vielen Dank für die schnelle Reaktion. Der Tippfehler war ein Versehen, den hab ich rausgemacht. Die "option explicit" steht über dem Code. Ich hatte sie nicht mit abgebildet, weil der Code nur ein Teil einer Reihe von Click-Ereignissen ist.Das mit den Variablen hab ich mir fast gedacht, aber wie mache ich sie "public" und vor allem wo? Eine Zuweisung "public" klappt nicht innerhalb der Funktion. Als "Public" vor der ersten Funktion führt dazu, dass keine Variable mehr erkannt wird. Irgendwie steh ich auf dem Schlauch.... :o(
Das ist der komplette Problem-Code:

Private Sub cmdExit_Click()
'Variablendeklaration
Dim strErsteller, StrProjektNr, strProjektleiter, StrProjekttext, strGestern, strHeute,  _
strMorgen As String
Dim strTag, strMonat, strJahr, strDatum, strTabelle, strKW, Listennummer As String
Dim strDatei, StrVerzeichnis, StrPfad, strDateiname, strPfadname, KWgestern As String
Dim intZeile, intSpalte, intKW As Integer
Dim bolPrint, bolMail As Boolean
Dim Kosten, Termine, Technik As String
'Werte den Variablen zuweisen
strErsteller = cboErsteller
strTag = cboTag
strMonat = cboMonat
strJahr = txtJahr
strDatum = strTag & " " & strMonat & " " & strJahr
intKW = cboKW
strKW = "KW" & intKW
KWgestern = "KW" & intKW - 1
StrProjektNr = cboProjektnummer
strProjektleiter = txtProjektleiter
StrProjekttext = txtBezeichnung
If optKgruen Then
Kosten = "grün"
ElseIf optKgelb Then
Kosten = "gelb"
ElseIf optKrot Then
Kosten = "rot"
Else: MsgBox "Sie haben keine Kostenbewertung abgegeben!", vbOKOnly + vbCritical
Exit Sub
End If
If optTgruen Then
Termine = "grün"
ElseIf optTgelb Then
Termine = "gelb"
ElseIf optTrot Then
Termine = "rot"
Else: MsgBox "Sie haben keine Terminbewertung abgegeben!", vbOKOnly + vbCritical
Exit Sub
End If
If optTechgruen Then
Technik = "grün"
ElseIf optTechgelb Then
Technik = "gelb"
ElseIf optTechrot Then
Technik = "rot"
Else: MsgBox "Sie haben keine technische Bewertung abgegeben!", vbOKOnly + vbCritical
Exit Sub
End If
strGestern = txtGestern
strHeute = txtHeute
strMorgen = txtMorgen
If optDja Then
bolPrint = True
End If
If optEJa Then
bolMail = True
End If
'Werte in die passende KW eintragen
strTabelle = strKW
Unload Me
intZeile = 2
intSpalte = 3
With Worksheets(strTabelle)
.Activate
'passende Projektnummer suchen
Do
intZeile = intZeile + 1
Listennummer = .Cells(intZeile, intSpalte)
Loop Until StrProjektNr = Listennummer
.Cells(intZeile, 1) = strErsteller
.Cells(intZeile, 2) = strDatum
.Cells(intZeile, 4) = strProjektleiter
.Cells(intZeile, 5) = StrProjekttext
.Cells(intZeile, 6) = Kosten
.Cells(intZeile, 7) = Termine
.Cells(intZeile, 8) = Technik
.Cells(intZeile, 9) = strGestern
.Cells(intZeile, 10) = strHeute
.Cells(intZeile, 11) = strMorgen
End With
With Worksheets("Basisdaten und Erklärung")
.Activate
End With
'Projektmatrix bewerten
intZeile = 1
intSpalte = 2
With Worksheets("Projektmatrix")
.Activate
'passende Projektnummer suchen
Do
Listennummer = .Cells(intZeile, intSpalte)
intSpalte = intSpalte + 3
Loop Until StrProjektNr = Listennummer
intSpalte = intSpalte - 3
intZeile = intKW + 4
.Cells(intZeile, intSpalte) = Kosten
.Cells(intZeile, intSpalte + 1) = Termine
.Cells(intZeile, intSpalte + 2) = Technik
End With
With Worksheets("Basisdaten und Erklärung")
.Activate
End With
'Erstellung des Wochenberichts als Word-Dokument
Dim WordObj As Word.Application
Dim DocObj As Word.Document
StrPfad = ThisWorkbook.Path
strDateiname = StrPfad & "\" & "weekly report.dot"
Set WordObj = CreateObject("Word.Application")
Set DocObj = WordObj.Documents.Open(Filename:=strDateiname, ReadOnly:=True)
WordObj.Visible = True
WordObj.Application.Activate
WriteInBookmark "KW", strKW
WriteInBookmark "Ersteller", strErsteller
WriteInBookmark "Datum", strDatum
WriteInBookmark "Projektnummer", StrProjektNr
WriteInBookmark "Projektthema", StrProjekttext
WriteInBookmark "Verantwortlicher", strProjektleiter
WriteInBookmark "Kosten", Kosten
WriteInBookmark "Termine", Termine
WriteInBookmark "Technik", Technik
WriteInBookmark "KWgestern", KWgestern
WriteInBookmark "Gestern", strGestern
WriteInBookmark "Heute", strHeute
WriteInBookmark "Morgen", strMorgen
'Ausdruck
If bolPrint = True Then
'WordObj.PrintOut
End If
'Ablage des Wochenberichts
If bolMail = True Then GoTo Mail
strDatei = "Wochenbericht " & strKW & " " & StrProjektNr & ".doc"
StrVerzeichnis = strKW
strPfadname = StrPfad & "\" & strJahr & "\" & StrVerzeichnis & "\" & strDatei
DocObj.SaveAs Filename:=strPfadname
'Mailversand der DocDatei
Mail:
With WordObj.Application
'.DisplayAlerts = False
'.Quit
End With
Set WordObj = Nothing
End Sub
Public Function WriteInBookmark(ByVal BMName As String, ByVal BMText As String)
'Schreibt einen neuen Wert in ein vorhandenes Bookmark
Dim RangeObj As Word.Range
With WordObj.Documents(strDateiname)
If .Bookmarks.Exists(BMName) Then
Set RangeObj = .Bookmarks(BMName).Range
RangeObj.Text = BMText
.Bookmarks.Add Name:=BMName, Range:=objRange
Set RangeObj = Nothing
End If
End With
End Function


Wenn es dir nicht zu viel Umstände macht, wäre ich dir für eine etwas "detaillierte" Lösung extrem dankbar. Ich sitz jetzt schon so lange vor dem Code, ich bin schon völlig "betriebsblind"....!!!!!
Gruß
Andi

Anzeige
AW: Textmarken werden nicht angesprungen
10.04.2008 09:04:10
Renee
Hi Andi,
Eine Zuweisung "public" klappt nicht innerhalb der Funktion.
Public Variablen werden ausserhalb und vor irgendwelchen Sub/Functions in einem Modul definiert.
Es gibt in VBE auch ein ausführliches (kontextsensitives) Help: Cursor auf ein Schlüsselwort und F1.
Du könntest deine strDateiname allerdings auch als weiterer Parameter an deine WriteInBookmark Funktion übergeben, so wie du das mit den anderen Parametern machst.
Aber irgendwie hab ich sowieso das mulmige Gefühl, das du hier an einem Code rumschraubst, der nicht von dir ist und ihn deshalb auch nicht verstehst ?
GreetZ Renée

Anzeige
AW: Textmarken werden nicht angesprungen
10.04.2008 09:37:37
Andi
Hallo Renée,
der Code ist, bis auf die Subroutine tatsächlich von mir und funktioniert ja auch prima. Und verstehen tue ich die Abläufe in der Subroutine schon, nützt aber nichts, wenn VBA plätzlich von allem abweicht, was mir bisher bekannt war. Beispiel: Die Subroutine habe ich im Rahmen eines Lehrganges VBA kennengelernt. Da wurden die Variablen von einer PrivateSub in eine weitere PrivateSub (Subroutine) übergeben und es lief einwandfrei... Ich hab eben nochmal in den Lehrgangsunterlagen nachgeschaut... Kein Wort von Public-Deklaration in Modulen zu finden... Die Aufgabenstellung damals war absolut identisch mit meinem Problem heute und bis auf einer Änderung der Variablennamen habe ich nichts ändern müssen. nur... damals ging es, heute nicht!
Aber okay, wenn es dir zuviel ist, lass es gut sein.
Gruß
Andi
PS. Die Übergabe der Variablen strDateiname bringt mir das gleiche Ergebnis... nämlich keines!

Anzeige
AW: Textmarken werden nicht angesprungen
10.04.2008 09:52:33
Renee
Hi Andi,
Nicht gleich eingeschnappt sein... manchmal bin ich ein bisschen grob. Sorry.
wenn VBA plätzlich von allem abweicht das hat VBA bei mir noch nie gemacht!
Wenn ich deinen gesamten Code in ein Modul übernehme und kompilieren möchte, bekomme ich Fehlermeldung an Fehlermeldung.
Wo sind z.B. alle die cboVariablen oder txtVariablen definiert ? Das kann so schlicht nicht laufen.
Lad doch mal ne Mappe mit allem was du hast hoch, vielleicht wird dann die Hilfe einfacher. Aber nur aufgrund von Code-Fragmenten zu helfen ist zu schwierig.
GreetZ Renée

Anzeige
AW: Textmarken werden nicht angesprungen
10.04.2008 10:02:43
Andi
Hallo Renée,
ich sitz jetzt seit 2 Tagen an diesem Ding und bin deshalb wahrscheinlich etwas "dünnhäutig"...
Die Datei ist selbst als Zip zu groß (420kb), ich prall an den Sicherheitseinstellungen ab. Ne Idee, wie ich die Mappe zu Dir bekomme? Per Mail?
Gruß
Andi

AW: Textmarken werden nicht angesprungen
10.04.2008 10:13:00
Renee
Hi Andi,
Bist du sicher, dass du hier im richtigen Forum bist?
Ist das eine VISUAL BASIC Form? Wenn ja, in was für einer Applikation läuft der Code ?
Das ist ein EXCEL Forum, das sich primär mit Excel und mit VBA (Visual Basic Application) beschäftig!
GreetZ Renée

Anzeige
AW: Textmarken werden nicht angesprungen
10.04.2008 10:17:47
Andi
Hi Renée,
die Zip ist die Userform meiner Excel Datei (als Export). Dahinter hängt der VBA Code. ich denkem, schon, dass ich hier richtig bin. Nur wie gesagt. Meine komplette Datei ist, wie gesagt zu groß... leider!
Geht sie nicht auf?
Gruß
Andi

AW: Textmarken werden nicht angesprungen
10.04.2008 10:27:00
Renee
Hi Andi,
Ich kann diese Form leider nicht laden, da mir Verweise zu Object-Libraries fehlen. Fehlerlog:
Zeile 8: Eigenschaft OleObjectBlob in FrmWB enthält einen ungültigen Dateiverweis
GreetZ Renée

AW: Textmarken werden nicht angesprungen
10.04.2008 10:40:00
Andi
Userbild
Das sind die Verweise bei mir...
Gruß
Andi

Anzeige
AW: Textmarken werden nicht angesprungen
10.04.2008 10:49:00
Renee
Hi Andi,
Sorry ich hab nur XL 2000, lass darum die Frage offen.
GreetZ Renée

AW: Textmarken werden nicht angesprungen
10.04.2008 11:00:05
Andi
Hallo Renée,
trotzdem Danke!!!!!!! Ich könnte wetten, es ist nur eine Kleinigkeit! Hab eben nochmal probiert, ob er überhaupt in die Subroutine geht... Tut er nicht, denn dann hätte er merken müssen, dass eine Textmarke fehlte. (Hatte ich vorher gelöscht) Heißt also, er aktiviert zwar das Wordfenster, bleibt dann aber in Excel und liest die Call-Befehle nur runter.
Wie mache ich ihm also klar, dass er den Sprung zur Subroutine durchführen muss...?Syntaktisch kann ich keinen Fehler finden, weder im Hauptcode, noch in der Subroutine...!
Naja, irgendwann finde ich das Problem. Oder hat noch jemadn eine Idee, woran es liegen könnte?
Gruß
Andi

Anzeige
AW: Textmarken werden nicht angesprungen
10.04.2008 11:08:51
Renee
Hi Andi,
er den Sprung zur Subroutine durchführen muss
Du hast keine Subroutine! sondern eine Function! Und darum können die Befehle wie
WriteInBookmark "KW", strKW auch nicht funktionieren.
Mach eine Subroutine aus deiner Function!
GreetZ Renée

AW: Textmarken werden nicht angesprungen
10.04.2008 11:31:15
Andi
Äh, sorry, das hatte ich inzwischen geändert.... jetzt isses ne Subroutine. Es wird mir immer rätselhafter... So schaut die Sub jetzt aus:

Dim WordObj As Word.Application
Dim DocObj As Word.Document
Set WordObj = CreateObject("Word.Application")
Set DocObj = WordObj.Documents.Open(Filename:=strDateiname, ReadOnly:=True)
WordObj.Visible = True
WordObj.Application.Activate
Call WriteInBookmark("KW", strKW) 'als Beispiel
End Sub
Private Sub WriteInBookmark(ByVal BMName As String, ByVal BMText As String)
'Schreibt einen neuen Wert in ein vorhandenes Bookmark
Dim RangeObj As Word.Range
With WordObj.DocObj
If .Bookmarks.Exists(BMName) Then
Set RangeObj = .Bookmarks(BMName).Range
RangeObj.Text = BMText
.Bookmarks.Add Name:=BMName, Range:=objRange
Set RangeObj = Nothing
Else
MsgBox BMName & " existiert nicht", vbCritical + vbOKOnly
End If
End With
End Sub


Der Code springt zwar auf den Call Befehl, führt ihn aber nicht aus...
Gibt es eine andere Art der Textmarken-Befüllung? wdgotoBookmark hab ich auch schon probiert... genau das gleiche. Ich denke nicht, dass es an dem obigen Code liegt. Aber warum wird der Call-Befehl völlig ignoriert? Wenn mir der Rechner wenigstens einen Fehler auswerfen würde. Aber nix is, der läuft im Einzelschritt-Modus schön Zeile für Zeile runter. Zum Mäusemelken!
Gruß
Andi

Anzeige
AW: Textmarken werden nicht angesprungen
10.04.2008 20:38:15
Tino
Hallo,
habe mir den Code mal angesehen und habe mal die Deklarierung auf Word eingefügt.
Ob all die anderen Deklarierungen und Zuweisungen korrekt sind habe ich jetzt nicht geprüft.
Denke daran den Verweis auf Microsoft Word 11.0 Object zu aktivieren.
Ob der Code jetzt durchläuft kann ich nicht sagen, versuche es einfach mal.

Option Explicit
Dim RangeObj As Word.Range
Dim WordObj As Word.Application
Dim DocObj As Word.Document
Private Sub Userform_Initialize()
'Variablendeklaration
Dim intI, intS, intZ, d As Integer
Dim intActTag, intActMonat, intActJahr As Integer
Dim strErsteller As String
Dim strProjektleiter As String
Dim strProjektnummer As String
'Feststellen des aktuellen Datums
intActTag = Day(Date)
intActMonat = Month(Date)
intActJahr = Year(Date)
'Befüllen der Combobox "Ersteller"
intS = 10    'Spaltennummer
intZ = 48   ' Zeilennummer
With Worksheets("Basisdaten und Erklärung")
Do
strErsteller = .Cells(intZ, intS)
With cboErsteller
.AddItem strErsteller
intZ = intZ + 1
End With
Loop Until strErsteller = ""
cboErsteller.Value = "Bitte wählen Sie"
End With
'Befüllen der Combobox "Tag"
With cboTag
For intI = 1 To 31
.AddItem intI & "."
Next intI
.ListIndex = intActTag - 1
End With
'Befüllen der Combobox "Monat"
With cboMonat
.AddItem "Januar"
.AddItem "Febuar"
.AddItem "März"
.AddItem "April"
.AddItem "Mai"
.AddItem "Juni"
.AddItem "Juli"
.AddItem "August"
.AddItem "September"
.AddItem "Oktober"
.AddItem "November"
.AddItem "Dezember"
.ListIndex = intActMonat - 1
End With
'Befüllen der Textbox "Jahr"
txtJahr.Value = intActJahr
'Befüllen der Combobox "KW"
d = KW(Date)
With cboKW
For intI = 1 To 52
.AddItem intI
Next intI
.Value = d
End With
'Befüllen der Combobox Projektnummer
intS = 2    'Spaltennummer
intZ = 48   ' Zeilennummer
With Worksheets("Basisdaten und Erklärung")
Do
strProjektnummer = .Cells(intZ, intS)
With cboProjektnummer
.AddItem strProjektnummer
intZ = intZ + 1
End With
Loop Until strProjektnummer = ""
cboProjektnummer.Value = "Bitte wählen Sie"
End With
End Sub
Function KW(d As Date) As Integer
Dim t As Date
t = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 1)
KW = (d - t - 3 + (Weekday(t) + 1) Mod 7) \ 7 + 1
End Function
Private Sub cboProjektnummer_AfterUpdate()
'Variablendeklaration
Dim intI, intA, intB, intS, intZ As Integer
Dim intActTag, intActMonat, intActJahr As Integer
Dim strNummer, strKW, strKWold As String
Dim strText As String
Dim strProjektnummer, Listennummer As String
'Auslesen der Projektnummern und KW
With Me
strProjektnummer = .cboProjektnummer.Value
strKW = "KW" & .cboKW.Value
End With
'Suchen und Eintragen der fehlenden Daten
intS = 2    'Spaltennummer
intZ = 48   ' Zeilennummer
With Worksheets("Basisdaten und Erklärung")
Do
strNummer = .Cells(intZ, intS)
intZ = intZ + 1
Loop Until strProjektnummer = strNummer
txtProjektleiter.Value = .Cells(intZ - 1, intS + 6)
txtBezeichnung.Value = .Cells(intZ - 1, intS + 1)
txtProjektleiter.SetFocus
End With
'Eintrag der Historie
strKWold = "KW" & Me.cboKW.Value - 1
If strKWold = "KW0" Then
Exit Sub
End If
With Worksheets(strKWold)
.Activate
intZ = 2
intS = 3
Do
intZ = intZ + 1
Listennummer = .Cells(intZ, intS)
Loop Until strProjektnummer = Listennummer
txtGestern.Value = .Cells(intZ, intS + 7)
txtHeute.Value = .Cells(intZ, intS + 8)
End With
Worksheets("Basisdaten und Erklärung").Activate
End Sub
Private Sub cmdExit_Click()
Variablendeklaration
Dim strErsteller, StrProjektNr, strProjektleiter, StrProjekttext, strGestern, strHeute,  _
strMorgen As String
Dim strTag, strMonat, strJahr, strDatum, strTabelle, strKW, Listennummer As String
Dim strDatei, StrVerzeichnis, StrPfad, strDateiname, strPfadname, KWgestern As String
Dim intZeile, intSpalte, intKW As Integer
Dim bolPrint, bolMail As Boolean
Dim Kosten, Termine, Technik As String
'Werte den Variablen zuweisen
strErsteller = cboErsteller
strTag = cboTag
strMonat = cboMonat
strJahr = txtJahr
strDatum = strTag & " " & strMonat & " " & strJahr
intKW = cboKW
strKW = "KW" & intKW
KWgestern = "KW" & intKW - 1
StrProjektNr = cboProjektnummer
strProjektleiter = txtProjektleiter
StrProjekttext = txtBezeichnung
If optKgruen Then
Kosten = "grün"
ElseIf optKgelb Then
Kosten = "gelb"
ElseIf optKrot Then
Kosten = "rot"
Else: MsgBox "Sie haben keine Kostenbewertung abgegeben!", vbOKOnly + vbCritical
Exit Sub
End If
If optTgruen Then
Termine = "grün"
ElseIf optTgelb Then
Termine = "gelb"
ElseIf optTrot Then
Termine = "rot"
Else: MsgBox "Sie haben keine Terminbewertung abgegeben!", vbOKOnly + vbCritical
Exit Sub
End If
If optTechgruen Then
Technik = "grün"
ElseIf optTechgelb Then
Technik = "gelb"
ElseIf optTechrot Then
Technik = "rot"
Else: MsgBox "Sie haben keine technische Bewertung abgegeben!", vbOKOnly + vbCritical
Exit Sub
End If
strGestern = txtGestern
strHeute = txtHeute
strMorgen = txtMorgen
If optDja Then
bolPrint = True
End If
If optEJa Then
bolMail = True
End If
'Werte in die passende KW eintragen
strTabelle = strKW
Unload Me
intZeile = 2
intSpalte = 3
With Worksheets(strTabelle)
.Activate
'passende Projektnummer suchen
Do
intZeile = intZeile + 1
Listennummer = .Cells(intZeile, intSpalte)
Loop Until StrProjektNr = Listennummer
.Cells(intZeile, 1) = strErsteller
.Cells(intZeile, 2) = strDatum
.Cells(intZeile, 4) = strProjektleiter
.Cells(intZeile, 5) = StrProjekttext
.Cells(intZeile, 6) = Kosten
.Cells(intZeile, 7) = Termine
.Cells(intZeile, 8) = Technik
.Cells(intZeile, 9) = strGestern
.Cells(intZeile, 10) = strHeute
.Cells(intZeile, 11) = strMorgen
End With
With Worksheets("Basisdaten und Erklärung")
.Activate
End With
'Projektmatrix bewerten
intZeile = 1
intSpalte = 2
With Worksheets("Projektmatrix")
.Activate
'passende Projektnummer suchen
Do
Listennummer = .Cells(intZeile, intSpalte)
intSpalte = intSpalte + 3
Loop Until StrProjektNr = Listennummer
intSpalte = intSpalte - 3
intZeile = intKW + 4
.Cells(intZeile, intSpalte) = Kosten
.Cells(intZeile, intSpalte + 1) = Termine
.Cells(intZeile, intSpalte + 2) = Technik
End With
With Worksheets("Basisdaten und Erklärung")
.Activate
End With
'Erstellung des Wochenberichts als Word-Dokument
Dim WordObj As Word.Application
Dim DocObj As Word.Document
StrPfad = ThisWorkbook.Path
strDateiname = StrPfad & "\" & "weekly report.dot"
Set WordObj = CreateObject("Word.Application")
Set DocObj = WordObj.Documents.Open(Filename:=strDateiname, ReadOnly:=True)
WordObj.Visible = True
WordObj.Application.Activate
Call WriteInBookmark("KW", strKW)
Call WriteInBookmark("Ersteller", strErsteller)
Call WriteInBookmark("Datum", strDatum)
Call WriteInBookmark("Projektnummer", StrProjektNr)
Call WriteInBookmark("Projektthema", StrProjekttext)
Call WriteInBookmark("Verantwortlicher", strProjektleiter)
Call WriteInBookmark("Kosten", Kosten)
Call WriteInBookmark("Termine", Termine)
Call WriteInBookmark("Technik", Technik)
Call WriteInBookmark("KWgestern", KWgestern)
Call WriteInBookmark("Gestern", strGestern)
Call WriteInBookmark("Heute", strHeute)
Call WriteInBookmark("Morgen", strMorgen)
'Ausdruck
If bolPrint = True Then
'WordObj.PrintOut
End If
'Ablage des Wochenberichts
If bolMail = True Then GoTo Mail
strDatei = "Wochenbericht " & strKW & " " & StrProjektNr & ".doc"
StrVerzeichnis = strKW
strPfadname = StrPfad & "\" & strJahr & "\" & StrVerzeichnis & "\" & strDatei
DocObj.SaveAs Filename:=strPfadname
'Mailversand der DocDatei
Mail:
With WordObj.Application
'.DisplayAlerts = False
'.Quit
End With
Set WordObj = Nothing
End Sub
Private Sub WriteInBookmark(ByVal BMName As String, ByVal BMText As String)
'Schreibt einen neuen Wert in ein vorhandenes Bookmark
With DocObj
If .Bookmarks.Exists(BMName) Then
Set RangeObj = .Bookmarks(BMName).Range
RangeObj.Text = BMText
.Bookmarks.Add Name:=BMName, Range:=RangeObj
Set RangeObj = Nothing
Else
MsgBox BMName & " existiert nicht", vbCritical + vbOKOnly
End If
End With
End Sub
Private Sub cmdCancel_Click()
Unload Me
End Sub


Gruß
Tino

Anzeige
AW: Textmarken werden nicht angesprungen
15.04.2008 16:44:53
Andi
Hallo Tino,
vielen Dank für deine Mühen. Daran hatte ich auch gedacht. Problem ist nur, dass ich so nicht arbeiten kann, weil wir im Unternehmen verschiedene Versionen von Excel nutzen und damit nicht alle Rechner den Code nutzen können. Ich habe den Verweis bei mir ausgeschaltet..heißt "late binding" oder so ähnlich... Google machts möglich!
Ich habe inzwischen den Code komplett ohne die Subroutine geschrieben und er funktioniert einwandfrei... Frag mich nicht warum, denn ich habe ansich nichts verändert, lediglich die Subroutine hochgeholt und als Basis für die einzelnen Textmarken benutzt. Dann ging es... Der Code ist jetzt zwar 2 Meter lang und entspricht nicht gerade einer eleganten Programmierung, aber er funzt!
Das Thema hat sich erstmal für mich erledigt! Aber ein Dickes Danke für die Hilfe!!
Gruß
Andi

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige