Hallo zusammen,
ich habe ein Problem mit VBA in Word.
Und zwar hatten wir einen alten Server auf dem Windows Office 2003 lief. Über Word 2003 hat man mit Hilfe von dem VBA-Code dann eine Abfrage an eine Datenbank gesenden, die Daten in eine Tabelle einordnet. (Code steht unten)
Ergebnis alter Server unter Office 2003:
Jetzt ist es so, dass wir auf einen neues Server gewechselt sind auf dem Office 2010 läuft. Ich habe alle .dot-Dateien übertragen und die Vorlagen in die richtigen Ordner eingefügt, die Verbindung zur Datenbank funktioniert, aber die Formatierung der Daten ist nicht wie bei der 2003 Version.
Neues Ergebnis unter Office 2010:
Hier der CODE:
Schreiben des Artikels in das Einheiten-Datenfeld unter Berücksichtigung
einheiten(einheitsArrayNummer, 1) = Rs3(
"einheit"
)
If
Left(Rs3(
"artikel"
).Value, 1) =
"S"
Then
einheiten(einheitsArrayNummer, 2) = einheiten(einheitsArrayNummer, 2) & Rs3(
"artikel"
).Value &
" "
& versandDatum &
" "
& Rs3(
"vskzbel"
).Value & Chr(11) & Rs3(
"version"
).Value &
" "
& Rs3(
"absarti"
).Value &
" "
& Rs3(
"vskzkw"
).Value & Chr(11)
ElseIf
Left(Rs3(
"artikel"
).Value, 1) =
"A"
Then
einheiten(einheitsArrayNummer, 3) = einheiten(einheitsArrayNummer, 3) & Rs3(
"artikel"
).Value &
" "
& versandDatum &
" "
& Rs3(
"vskzbel"
).Value & Chr(11) & Rs3(
"version"
).Value &
" "
& Rs3(
"absarti"
).Value &
" "
& Rs3(
"vskzkw"
).Value & Chr(11)
einheiten(einheitsArrayNummer, 6) = einheiten(einheitsArrayNummer, 6) & Rs3(
"artikel"
).Value &
" "
& Rs3(
"frist"
).Value & Chr(11) & Mid(Rs3(
"artikel"
), 3, 1) & Rs3(
"version"
) & pruefzifferKorrektursystem(
CLng
(
""
& Rs3(
"kursnr"
)),
CInt
(
""
& Rs3(
"einheit"
)),
CInt
(
""
& Mid(Rs3(
"artikel"
), 3, 1)),
CInt
(Rs3(
"version"
))) & Chr(11)
ElseIf
Left(Rs3(
"artikel"
).Value, 1) =
"M"
Then
einheiten(einheitsArrayNummer, 4) = einheiten(einheitsArrayNummer, 4) & Rs3(
"artikel"
).Value &
" "
& versandDatum &
" "
& Rs3(
"vskzbel"
).Value & Chr(11) & Rs3(
"version"
).Value &
" "
& Rs3(
"absarti"
).Value &
" "
& Rs3(
"vskzkw"
).Value & Chr(11)
Else
einheiten(einheitsArrayNummer, 5) = einheiten(einheitsArrayNummer, 5) & Rs3(
"artikel"
).Value &
" "
& versandDatum &
" "
& Rs3(
"vskzbel"
).Value & Chr(11) & Rs3(
"version"
).Value &
" "
& Rs3(
"absarti"
).Value &
" "
& Rs3(
"vskzkw"
).Value & Chr(11)
End
If
Rs3.MoveNext
Loop
Rs3.Close
Set
terminTabelle = tempDoc.Tables(4)
anzEinheitenMitArtikel = 1
If
anzZeilen <> 0
Then
aktuelleSeite = 1
For
i = 1
To
anzZeilen
If
Not
(einheiten(i, 2) =
""
And
einheiten(i, 3) =
""
And
einheiten(i, 4) =
""
_
And
einheiten(i, 5) =
""
And
einheiten(i, 6) =
""
)
Then
If
Not
(anzEinheitenMitArtikel = 1
And
aktuelleSeite = 1)
Then
terminTabelle.Rows.Add
End
If
With
terminTabelle
.Cell(Row:=anzEinheitenMitArtikel + 2, Column:=1).Range = einheiten(i, 1)
.Cell(Row:=anzEinheitenMitArtikel + 2, Column:=2).Range = einheiten(i, 2)
.Cell(Row:=anzEinheitenMitArtikel + 2, Column:=3).Range = einheiten(i, 3)
.Cell(Row:=anzEinheitenMitArtikel + 2, Column:=4).Range = einheiten(i, 4)
.Cell(Row:=anzEinheitenMitArtikel + 2, Column:=5).Range = einheiten(i, 5)
.Cell(Row:=anzEinheitenMitArtikel + 2, Column:=6).Range = einheiten(i, 6)
End
With
If
tempDoc.ComputeStatistics(wdStatisticPages) > aktuelleSeite
Then
terminTabelle.Rows.Last.Delete
terminTabelle.Rows.Add
terminTabelle.Rows.Add
If
tempDoc.ComputeStatistics(wdStatisticPages) > aktuelleSeite
Then
terminTabelle.Rows.Last.Delete
terminTabelle.Rows.Last.Delete
terminTabelle.Rows.Last.Delete
terminTabelle.Rows.Add
terminTabelle.Rows.Add
i = i - 1
End
If
terminTabelle.Rows.Last.Previous.Cells.Merge
With
terminTabelle.Rows.Last.Previous.Cells(1)
.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
.Range.Bold =
True
.Range =
"Fortsetzung auf nächster Seite"
End
With
terminTabelle.Rows.Last.Range.InsertBreak Type:=wdPageBreak
Set
terminTabelle = tempDoc.Tables(tempDoc.Tables.Count)
aktuelleSeite = aktuelleSeite + 1
anzEinheitenMitArtikel = -1
With
terminTabelle
.Cell(Row:=anzEinheitenMitArtikel + 2, Column:=1).Range = einheiten(i, 1)
.Cell(Row:=anzEinheitenMitArtikel + 2, Column:=2).Range = einheiten(i, 2)
.Cell(Row:=anzEinheitenMitArtikel + 2, Column:=3).Range = einheiten(i, 3)
.Cell(Row:=anzEinheitenMitArtikel + 2, Column:=4).Range = einheiten(i, 4)
.Cell(Row:=anzEinheitenMitArtikel + 2, Column:=5).Range = einheiten(i, 5)
.Cell(Row:=anzEinheitenMitArtikel + 2, Column:=6).Range = einheiten(i, 6)
End
With
End
If
anzEinheitenMitArtikel = anzEinheitenMitArtikel + 1
End
If
And
einheiten(i, 5) =
""
And
einheiten(i, 6) =
""
)
Next
i
End
If