Hallo,
und zwar stehe ich vor folgender Aufgabe:
Ich habe eine Form gebaut mit welcher ich nach einer Auftragsnummer Daten in eine Listbox auslese. Hiermit erstell ich eine WordDatei und fülle diese mit dem Inhalt. Auch erstelle ich einen Ordner auf dem Netzlaufwerk mit einem bestimmten Namen dieser Werte.
Alles funktioniert wunderbar.
Allerdings würde ich gerne Rückwärts Daten in die Herkunftsfelder schreiben. Ich weiß nur leider nicht wie ich dies bewerkstelligen kann/soll.
Hintergrund ist folgender: Ich würde gerne in der gefunden Spalte A die erstellte Datei verlinken und in Spalte B den erstellen Ordner verlinken.
Sprich wie kann ich z.b. .Cells(lngRow, TypProd) aus Private Sub cmdSuchen_Click() welches das Herkunftsfeld ist unten unter Private Sub CommandButton2_Click() dann befüllen.
Über Hilfe wäre ich sehr dankbar.
Anbei mein Code:
Spoiler anzeigen
aufgrund des Codeumfangs Spoiler hinzugefügt ~VaporiZed
und zwar stehe ich vor folgender Aufgabe:
Ich habe eine Form gebaut mit welcher ich nach einer Auftragsnummer Daten in eine Listbox auslese. Hiermit erstell ich eine WordDatei und fülle diese mit dem Inhalt. Auch erstelle ich einen Ordner auf dem Netzlaufwerk mit einem bestimmten Namen dieser Werte.
Alles funktioniert wunderbar.
Allerdings würde ich gerne Rückwärts Daten in die Herkunftsfelder schreiben. Ich weiß nur leider nicht wie ich dies bewerkstelligen kann/soll.
Hintergrund ist folgender: Ich würde gerne in der gefunden Spalte A die erstellte Datei verlinken und in Spalte B den erstellen Ordner verlinken.
Sprich wie kann ich z.b. .Cells(lngRow, TypProd) aus Private Sub cmdSuchen_Click() welches das Herkunftsfeld ist unten unter Private Sub CommandButton2_Click() dann befüllen.
Über Hilfe wäre ich sehr dankbar.
Anbei mein Code:
Visual Basic-Quellcode
- Option Explicit
- Private Sub cmdSuchen_Click()
- Dim lngRow As Long, lngLast As Long
- 'Tauschbare Spalten/Zeilen für die Dateien
- Dim TypProd As String 'A
- Dim SNProd As String 'B
- Dim AufProd As String 'E
- Dim KunProd As String 'F
- Dim TierProd As String 'D
- Dim StandProd As String 'U
- Dim ErsteZeile As String 'Zahl 9
- 'Deklarien der Werte
- TypProd = Worksheets("Daten").Cells(16, 15).Value
- SNProd = Worksheets("Daten").Cells(17, 15).Value
- AufProd = Worksheets("Daten").Cells(18, 15).Value
- KunProd = Worksheets("Daten").Cells(19, 15).Value
- TierProd = Worksheets("Daten").Cells(20, 15).Value
- StandProd = Worksheets("Daten").Cells(21, 15).Value
- ErsteZeile = Worksheets("Daten").Cells(16, 18).Value
- If TextBox1.text <> "" Then
- With Sheets("Aktuell")
- lngLast = Application.Max(ErsteZeile, .Cells(.Rows.Count, 1).End(xlUp).Row)
- ListBox1.Clear
- For lngRow = ErsteZeile To lngLast
- 'If .Cells(lngRow, 5).Value = TextBox1 Then
- If InStr(1, .Cells(lngRow, AufProd).text, TextBox1.Value, 1) > 0 Then
- ListBox1.AddItem Cells(lngRow, 1).text
- ListBox1.Column(0, ListBox1.ListCount - 1) = .Cells(lngRow, TypProd).text 'typ
- ListBox1.Column(1, ListBox1.ListCount - 1) = .Cells(lngRow, SNProd).text 'Seriennummer
- ListBox1.Column(2, ListBox1.ListCount - 1) = .Cells(lngRow, AufProd).text 'Auftragsnummer
- ListBox1.Column(3, ListBox1.ListCount - 1) = .Cells(lngRow, KunProd).text 'Kunde
- ListBox1.Column(4, ListBox1.ListCount - 1) = .Cells(lngRow, TierProd).text 'TypeofCheck
- ListBox1.Column(5, ListBox1.ListCount - 1) = .Cells(lngRow, StandProd).text 'Standort
- End If
- Next
- End With
- Else
- MsgBox "Kein gültige Auftragsnummer!"
- End If
- End Sub
- Private Sub CommandButton2_Click()
- 'Variablen Listbox definieren
- With ListBox1
- 'Variablen definieren
- Dim lngIndex As Long, Ordnername As String, wrdApp As Object, wrdDoc As Object, strTemp As String, Number As String, Kunde As String, SN As String, Nummer As String
- '******************************************PCR erstellen Anfang********************************************************************************************************
- On Error GoTo FehlerVorlage
- strTemp = "Z:\Production\Quality Control\01 PCR\01 Vorlage\PCR_00000_Kunde.docx" 'Pfad zur Vorlage
- On Error Resume Next
- Set wrdApp = GetObject(, "Word.Application")
- If wrdApp Is Nothing Then
- Set wrdApp = CreateObject("Word.Application")
- End If
- With wrdApp
- Set wrdDoc = .documents.Add(strTemp) 'Neues Dokument auf Basis der Vorlage erstellen
- .Visible = True 'WORD-Fenster anzeigen - Auf True wenn Word offen bleiben soll zum Daten füllen
- End With
- Nummer = Nummerierung
- 'Eintragen der Werte in Worddatei
- wrdDoc.SelectContentControlsByTag("tagReportID").Item(1).Range.text = Nummer 'Cells(ActiveCell.Row, 1)
- wrdDoc.SelectContentControlsByTag("tagAuftragsnummer").Item(1).Range.text = .List(lngIndex, 2) 'tagAuftragsnummer
- wrdDoc.SelectContentControlsByTag("tagHalle").Item(1).Range.text = .List(lngIndex, 5) 'tagHalle
- wrdDoc.SelectContentControlsByTag("tagKunde").Item(1).Range.text = .List(lngIndex, 3) 'tagKunde
- wrdDoc.SelectContentControlsByTag("tagTypeofCheck").Item(1).Range.text = "Tier" & .List(lngIndex, 4) 'tagTypeofCheck
- If UCase(Left(.List(lngIndex, 0), 2)) = "HI" Then
- wrdDoc.SelectContentControlsByTag("tagRoboterSeriennummer").Item(1).Range.text = .List(lngIndex, 1) 'tagRoboterSeriennummer
- Else
- wrdDoc.SelectContentControlsByTag("tagSeriennummer").Item(1).Range.text = .List(lngIndex, 1) 'tagSeriennummer
- End If
- 'wrdDoc.SelectContentControlsByTag("tagMaschinenTyp").Item(1).Range.text = .List(lngIndex, 0) 'tagMaschinenTyp
- 'wrdDoc.SelectContentControlsByTag("tagSchließeinheit").Item(1).Range.text = .List(lngIndex, 0) 'tagSchließeinheit
- 'wrdDoc.SelectContentControlsByTag("tagEinspritzeinheit").Item(1).Range.text = .List(lngIndex, 0) 'tagEinspritzeinheit
- 'wrdDoc.SelectContentControlsByTag("tagRoboterTyp").Item(1).Range.text = 1 'tagRoboterTyp
- 'Hier speichern als neue Datei im bestimmten Pfad
- 'wrdDoc.PrintOut Background:=True
- Kunde = .List(lngIndex, 3)
- SN = .List(lngIndex, 1)
- wrdDoc.SaveAs Filename:="Z:\Production\Quality Control\01 PCR\02 Offen\PCR" & Nummer & "_" & Kunde & "_" & SN & ".docx"
- On Error GoTo FehlerVorlageSave
- 'On Error Resume Next
- Application.Wait Now + TimeSerial(0, 0, 3)
- 'Word im Hintergrund beenden und wieder alles freigeben
- 'wrdDoc.Saved = True
- 'Wenn Word offen bleibt nicht ausführen
- 'wrdDoc.Close
- 'wrdApp.Quit
- Set wrdDoc = Nothing
- Set wrdApp = Nothing
- '**************************************************PCR erstellen ende********************************************************************************************
- MsgBox "PCR erstellt!", vbInformation
- Worksheets("Daten").Cells(8, 14).Value = Nummerierung
- 'HIER LINK EINFÜGEN IN HERKUNFTS/GEFUNDENE FELD IN SPALTE A DER ERSTELLTEN DATEI EINTRAGEN
- '***************************************************************************************************************************************************************'
- '***********************************************Ordner erstellen Anfang*************************************************************************************
- 'Variablen definieren
- Dim filesystem As Object, Orndername As String, Maschine As String, MaschineSonder As String, Seriennummer As String, Auftrag As String, MaschineLeer As String
- 'MaschineLeer = LeerzeichenEntfernen(.List(lngIndex, 0))
- Maschine = Clean_Sonderzeichen(.List(lngIndex, 0))
- Seriennummer = .List(lngIndex, 1)
- Auftrag = .List(lngIndex, 2)
- Ordnername = Maschine & "_" & Seriennummer & "_" & Auftrag
- 'Ordner Vorlage kopieren und in anderem Ordner mit richtigem Namen einfügen
- Set filesystem = CreateObject("Scripting.FileSystemObject")
- filesystem.CopyFolder "Y:\Maschinendokumentation\4. Vorlagen\1. Maschinenordner\Maschine_Seriennummer_Auftrag", "Y:\Maschinendokumentation\99. in Bearbeitung\" & Ordnername
- Set filesystem = Nothing
- End With
- **************************************************************************************************************************************************************************
- 'Ordner erstellen Ende
- MsgBox "Ordner erstellt!", vbInformation
- 'HIER LINK EINFÜGEN IN HERKUNFTS/GEFUNDENE FELD IN SPALTE A DES ERSTELLTEN ORDNERS EINTRAGEN
- Exit Sub
- 'Fehler: MsgBox "Unerwarteter Fehler - Richtige Datei mit richtigem Blatt geöffnet ??"
- FehlerVorlage: MsgBox " Datei: " & strTemp & "Vorlage nicht vorhanden? und/oder keine Zugriff auf das Verzeichnis??" & Chr(10), vbOKOnly, " Fehler bitte prüfen "
- Exit Sub
- FehlerVorlageSave: MsgBox " Datei: " & strTemp & "Vorlage konnte nicht gespeichert werden? Kein Zugriff auf das Verzeichnis!" & Chr(10), vbOKOnly, " Fehler bitte prüfen "
- End Sub
- Private Sub CommandButton3_Click()
- TextBox1.Value = ""
- ListBox1.Clear
- End Sub
- 'Zentrieren auf beiden Bildschirmen des Fenstern
- Private Sub UserForm_Initialize()
- Dim sngTop As Single, sngLeft As Single
- Me.StartUpPosition = 0
- sngLeft = Application.Left + Application.Width / 2 - Me.Width / 2
- sngTop = Application.Top + Application.Height / 2 - Me.Height / 2
- Me.Left = sngLeft
- Me.Top = sngTop
- Label13 = Date
- Label28 = Time
- 'Spaltenbreite festlegen
- ListBox1.ColumnWidths = "90 Pt;70 Pt;70 Pt;70 Pt;20 Pt;70 Pt"
- End Sub
- 'Funktion Sonderzeichen in Namen entfernen und als _ ändern
- Function Clean_Sonderzeichen(ByVal strWert As String) As String
- '** Dimensionierung der Variablen
- Dim i As Integer
- Const strSonderzeichen As String = "-.,:;#+ß'*?=)(/&%$§!~\}][{"
- '** Durchlaufen des übergebenen Strings
- For i = 1 To Len(strSonderzeichen)
- strWert = Replace(strWert, Mid(strSonderzeichen, i, 1), "-") 'Statt Sonderzeichen einen Unterstrich einfügen
- Next i
- '** Bereinigter String der Funktion zurückgeben
- 'Clean_Sonderzeichen = LeerzeichenEntfernen(strWert)
- Clean_Sonderzeichen = Replace(strWert, " ", "_")
- End Function
- 'Funktion Leerzeichen in Namen entfernen
- Function LeerzeichenEntfernen(strText As String) As String
- Dim intZ As Integer
- For intZ = 1 To Len(strText)
- Select Case Mid(strText, intZ, 1)
- Case " "
- Case Else
- LeerzeichenEntfernen = LeerzeichenEntfernen & Mid(strText, intZ, 1)
- End Select
- Next intZ
- End Function
- 'Funktion Fortlaufende Nummer generieren für PCRs
- Function Nummerierung() As String
- Dim lngRow As Long, intJahr As Integer, intMaxNr As Integer
- intJahr = (Year(Date) - 2000) * 1000 '22000 für 2022
- With Sheets("Daten")
- lngRow = Worksheets("Daten").Cells(8, 14).Value
- intMaxNr = Worksheets("Daten").Cells(8, 14).Value
- End With
- If lngRow > 1 Then
- If intMaxNr < intJahr Then 'letzte Nr ist aus vergangenem Jahr, z.B. 21456
- Nummerierung = intJahr + 1 '22001
- Else
- Nummerierung = intMaxNr + 1 'höchste Nr + 1
- End If
- Else
- Nummerierung = intJahr + 1 '22001
- End If
- 'Debug.Print Nummerierung
- 'Worksheets("Daten").Cells(8, 14).Value = Nummerierung
- End Function
aufgrund des Codeumfangs Spoiler hinzugefügt ~VaporiZed
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „UltraTM“ ()