Word: Code errechnen und in Tabelle einfügen

  • #1
P

panscher

Bekanntes Mitglied
Themenersteller
Dabei seit
02.09.2004
Beiträge
99
Reaktionspunkte
0
Hallo Alle,

ich bin gerade dabei ein Etiketten-Vorlage zu erstellen, das Etikett enthält eine Code.

Der Code wird aus Herstellerid (012), Jahreszahl-100, aktuelle Monat, aktueller Tag erzeugt.

Der Code sieht dann so aus: 01219110426

Mein Word-Vorlage (Tabelle) hat insgesamt

10 Spalten, mit jeweils 9 Zwischenräumen, diese befinden sich zwischen jeder Spalte (1-3,3-4,4-5,5-6,6-7,7-8,8-9).
Nach unten sind es 27 Zeilen.

Nun hätte ich gerne eine Inputbox für die Eingabe des aktuelle Datum, danach soll Word über ein VBA-Makro
mir den Code erstellen und ihn mir in die 10 Spalten und 27 Zeilen einfügen.

Kann mir da jemand weiterhelfen, ich kenne mich leider mit VBA nicht aus.

Gruß Panscher
 
  • #2
Hallo Panscher,

nen Makro dafür könnte ich dir schreiben.

Fangen wir mal langsam an:
HerstellerID: Wo kommt die her? Ist die immer gleich ? Wie kann das Makro an die ID kommen ?

Tabelle:
10 Spalten, mit jeweils 9 Zwischenräumen, diese befinden sich zwischen jeder Spalte (1-3,3-4,4-5,5-6,6-7,7-8,8-9).
Nach unten sind es 27 Zeilen.
Ist das eine Tabelle mit 19 Spalten und 27 Zeilen, bei der die erste und dann jede weitere 2.te mit Inhalt zu füllen ist ?

Wie passen 11 Digits
Der Code sieht dann so aus: 01219110426
in 10 Spalten ?

Gruß Matjes :)
 
  • #3
Hallo Matjes,

die HerstelleriID ist immer gleich und ändert sich auch nicht, diese könnte man z.b fest im Makro definieren.

Genau, es muss die erste und jede 2.te gefüllt werden, es handelt sich hier um eine Herma 4343 Etiketten-Vorlage.

Mit einer kleinen Schriftt passen die 11 schon rein, habe ich jetzt auch drinne.

Gruß Panscher
 
  • #4
Hallo Panscher,

die HerstelleriID ist immer gleich und ändert sich auch nicht, diese könnte man z.b fest im Makro definieren.
Wird also eine Definition. Abgehakt :D

Genau, es muss die erste und jede 2.te gefüllt werden, es handelt sich hier um eine Herma 4343 Etiketten-Vorlage.
Dem Makro ist eingentlich egal, ob es eine Vorlage 4343 oder xyz ist. Dafür ist der Einrichter der Vorlage zuständig ;D
Bedeutend ist, welche Tabelle darüber gelegt wird und wie die Tabelle auszufüllen ist.
Die direkte Frage ist immernoch offen, wie die 11 Digits (01219110426) auf die 10 Spalten aufgeteilt werden sollen, oder soll in jede Spalte diese 11 Digits geschrieben werden ?

Alle 27 Zeilen werden gleich ausgefüllt ?


Mit einer kleinen Schriftt passen die 11 schon rein, habe ich jetzt auch drinne.
Die Schriftgröße und formatierung liegt auch beim Einrichter der Vorlage.

Gut wäre ein Screenshot einer ausgefüllten Vorlage.

Gruß Matjes :)
 
  • #5
Hallo Matjes

Ja, in jeder Spalte und Zeile soll der 11 Digits rein

Hier der Screenshot

screenshot.jpg


Gruß Panscher
 
  • #6
Hallo Panscher,

folgendes Makro arbeitet auf dem aktuellen Dokument in der ersten Tabelle und sollte das Gewünschte tun.

Gruß Matjes :)
Code:
Option Explicit
Private Const cHERSTELLERID = 012
Private Const cTAB_Z_ANZAHL = 28
Private Const cTAB_SP_ANZAHL = 19
Private Const cTAB_SP_DISTANZ = 2
'**************
Sub Word_TabAusfuellen()

 
 Dim Doc As Document, myTab As Table
 Dim dDatum As Date
 Dim sAusgabe As String
 
->Document setzen, auf dem der Makro arbeiten soll
 Set Doc = ActiveDocument
 
->Tabelle setzen, auf dem der Makro arbeiten soll
 On Error Resume Next
 Set myTab = Doc.Tables(1)
 On Error GoTo 0
 If myTab Is Nothing Then
  MsgBox Keine Tabelle im Dokument  & Doc.Name & . -> Abbruch
 End If
 
->DatumsEingabe
 If Not DatumsEingabe(dDatum) Then GoTo AUFRAEUMEN
 
->Ausgabestring zusammenstellen
 sAusgabe = _
  cHERSTELLERID & _
  Format(Year(dDatum) - 100, 0000) & _
  Format(Month(dDatum), 00) & _
  Format(Day(dDatum), 00)
 
 If Not TabAusfuellen(myTab, sAusgabe) Then GoTo AUFRAEUMEN
 
AUFRAEUMEN:
 Set Doc = Nothing: Set myTab = Nothing
End Sub
'****************
Private Function DatumsEingabe(dDatum As Date) As Boolean
 Dim sDatum As String
 DatumsEingabe = False
->heutiges Datum
 dDatum = Now()
 
->Eingabe datum mit vrogabe des heutigen Datums
 sDatum = InputBox( _
  Bitte geben Sie das Datum in der Form DD.MM.JJJJ ein., _
  Datumseingabe, Format(dDatum, dd.mm.yyyy))
 
->Eingabe prüfen
 On Error Resume Next
 dDatum = sDatum
 If Err.Number <> 0 Then
  Err.Clear
  MsgBox Datum-> & sDatum &-> konnte nicht als Datum interpretiert werden.
 Else
  DatumsEingabe = True->Datum ok
 End If
 On Error GoTo 0
End Function
'****************
Private Function TabAusfuellen(myTab As Table, sAusgabe As String) As Boolean
 Dim z As Long, sp As Long
 
 On Error Resume Next
 
 For z = 1 To cTAB_Z_ANZAHL
  For sp = 1 To cTAB_SP_ANZAHL Step cTAB_SP_DISTANZ
   myTab.Cell(z, sp).Range.Text = sAusgabe
   If Err.Number <> 0 Then GoTo ENDEBEARBEITUNG
  Next
 Next
ENDEBEARBEITUNG:
 If Err.Number <> 0 Then
  MsgBox _
   Beim Ausfüllen der Tabelle trat ein Fehler auf. & vbCrLf & _
   Zeile  & z &  Spalte  & sp
  Err.Clear
  TabAusfuellen = False
 Else
  TabAusfuellen = True->alles ok
 End If
 On Error GoTo 0
End Function
 
  • #7
Hallo Matjes,

das Makro arbeitet super.
Vielen Vielen Dank für deine Hilfe.

Gruß Panscher

Matjes schrieb:
folgendes Makro arbeitet auf dem aktuellen Dokument in der ersten Tabelle und sollte das Gewünschte tun.
 
Thema:

Word: Code errechnen und in Tabelle einfügen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.959
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben