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:
http://www.directupload.net/file/d/4971/eapfbzsi_jpg.htm
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:
http://www.directupload.net/file/d/4971/6h27zeik_png.htm
Hier der CODE:
Schreiben des Artikels in das Einheiten-Datenfeld unter Berücksichtigung
' der Artikelart
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)
' Schreiben des Einheiten-Datenfeldes bzw. der Artikel in die Artikeltabelle
' des Terminplans
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
' Wenn nicht letzte Zeile, dann Zeile hinzufügen
'If i <> anzZeilen And anzEinheitenMitArtikel <> 1 Then
If Not (anzEinheitenMitArtikel = 1 And aktuelleSeite = 1) Then
terminTabelle.Rows.Add
End If 'i <> anzZeilen
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 'Not (einheiten(i, 2) = "" And einheiten(i, 3) = "" And einheiten(i, 4) = "" _
And einheiten(i, 5) = "" And einheiten(i, 6) = "")
Next i
End If 'anzZeilen <> 0
Der Code wurde von einem früheren Mitarbeiter geschrieben, der leider nicht mehr da ist. Und ich kenne mich mit VB nicht wirklich aus, habe allerdings jetzt dieses Problem aufgebrummt bekommen. Habe schon alle Formatvorlagen und ähnliche Dinge unter den verschiedenen Office Versionen verglichen und es muss am Code liegen. Sind in dem Code eventuell Formulierungen enthalten, die Office 2010 nicht versteht, da veraltet? Ich bin echt für jede Hilfe Dankbar. Der Code ist auch nocht länger falls tatsächlich der gesamte Code mit Aufbau zur Datenbank gebraucht wird Poste ich den natürlich nach.
Danke schonmal für jede Hilfe
|