Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo, dann muss auch in der Abfrage es genauso stehen PHP-Code: If InStr(1, arrData(iCnt), "Sachnummer Kunde :") > 0 Then
bzw. versuchs ohne die : PHP-Code: If InStr(1, arrData(iCnt), "Sachnummer Kunde") > 0 Then
Achtung: Dies gilt auch für die Codezeile mit dem Auto7518!!!!!
Gruß Stefan Win 10 / Office 2016
Registriert seit: 06.03.2017
Version(en): 2007
22.06.2017, 10:47
(Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2017, 10:47 von M.Wichmann.)
Hallo, habe noch einen Fehler gefunden, bzw sogar den ausschlaggebenden. Diese beiden Striche fehlten glaube ich. ( ¦Sachnummer Kunde : ) Jetzt springt er ins Auto7518 aber bricht dann bei: Code: .Range("A2").PasteSpecial xlPasteAll
ab. Ich habe auch mal testweise die Makroausführung durch die MsgBox ausgabe ersetzt. Es kommen insgesammt 3 Meldungen. 1. Die Nummer+¦ am Ende 2. Die Verpackungsnummer+¦ am Ende 3. die MsgBox von Errorhändler
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo, durch diese Code: .Range("A2:A233").ClearContents
wird vermutlich die Zwischenablage gelöscht, versuche es so Code: .Range("A2:A233").Value = ""
und entferne doch bitte die beiden Striche am Ende.
Gruß Stefan Win 10 / Office 2016
Registriert seit: 06.03.2017
Version(en): 2007
22.06.2017, 11:12
(Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2017, 11:12 von M.Wichmann.)
Hallo,
die Striche sind ja nicht von mir. Die gibt der so aus, aber auf jeden Fall das makro läuft jetzt durch.
Allerdings 2 mal, da leider ja Sachnummer Kunde auch 2 mal vorkommt.
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo, das hatte ja auch André in diesem Beitrag schon geschrieben. Setze einfach nach der Auto7518 Codezeile ein dann wird es nur einmal durchlaufen.
Gruß Stefan Win 10 / Office 2016
Registriert seit: 06.03.2017
Version(en): 2007
22.06.2017, 11:39
(Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2017, 11:39 von M.Wichmann.)
Hallo, ok jetzt nur noch einmal. Aber Errorhändler MSG kommt immer noch(gut kann man ja wegnehmen)
Aber wie steuert man jetzt, das er den Abruf in das richtige Blatt packt? Jetzt spricht er jedesmal das eine Makro an. Hab zumindest 2 getestet.
Aber um noch mal auf meine Version zurückzukommen. Könnte ich das nicht auch benutzen um die erste Zeile nach dem Wort Abruf zu durchsuchen? Um bei Ja mein kleines Macro zu starten? Habs schon gefunden, aber warum kommt jedesmal die Msg vom Error? Auch wenn das durchläuft?
Wenn die Fehleranzeige richtig läuft, also Fehler bei irgendwas anderem in der Ablage, ansonsten sauberer Durchlauf, dann wäre mir das so schon ausreichend. Dann lasse ich mir das wie jetzt auch schon durch euren Code in die Temp speichern und mache dann weiter.
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo, (22.06.2017, 11:30)M.Wichmann schrieb: Aber wie steuert man jetzt, das er den Abruf in das richtige Blatt packt? Jetzt spricht er jedesmal das eine Makro an. Hab zumindest 2 getestet.
Aber um noch mal auf meine Version zurückzukommen. Könnte ich das nicht auch benutzen um die erste Zeile nach dem Wort Abruf zu durchsuchen? Um bei Ja mein kleines Macro zu starten? ???? Bisher dachte ich das sich deine Makros ziemlich ähnlich sind. Ob es Makro1 oder Auto7518 oder Makro2 oder sonstwie heißt. Immer das gleiche außer dem Namen der Tabelle. Jetzt habe ich doch meine Zweifel. Natürlich kannst Du mit dem Code auch dein kleines Makro starten. Einfach die entsprechenden Änderungen vornehmen und die Variableninhalte beim Einzelschrittmodus anschauen.
Gruß Stefan Win 10 / Office 2016
Registriert seit: 06.03.2017
Version(en): 2007
22.06.2017, 12:02
(Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2017, 12:02 von M.Wichmann.)
Meine Makros sind auch fast gleich aufgebaut, bis auf das die halt immer ein anderes Blatt ansprechen.
Ich hatte es eigentlich so verstanden, das dein bzw euer Code dazu gedacht ist, die Zwischenablage auszulesen, und dann je nachdem um welchen Artikel es sich handelt, entsprechend den weiteren Ablauf zu steuern. Praktisch das was ich jetzt über Umwege mit Zwischenspeichern, auslesen und Abfragen mache, alles in einem Code.
Aber passt schon so, wenn nur noch die Errormeldung wegfällt wenn der Code durchläuft.
Auf jeden Fall schon mal vielen Dank für die Bemühungen.
Registriert seit: 06.03.2017
Version(en): 2007
22.06.2017, 12:27
(Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2017, 12:28 von M.Wichmann.)
Habe jetzt das folgendermaßen Geändert: Code: Public Sub TextFromClipr() 'Variablendeklarationen 'Objekt, Variant, Long Dim oData As New DataObject, arrData, iCnt& 'Bei Fehler gehe zu Fehlerbehandlung 'z.B. Grafik statt text On Error GoTo errorhandler 'Daten aus der Zwischenablage holen oData.GetFromClipboard 'Daten anhand Zeilenvorschub in Array splitten arrData = Split(oData.GetText, vbLf) 'Schleife ueber alle Elemnte des Arrays For iCnt = 0 To UBound(arrData) 'Wenn der Kennstring enthalten ist, dann If InStr(1, arrData(iCnt), "Lieferabruf nach VDA-Norm 4905") > 0 Then ' Einfügen des Abrufes in Temp Sheets("Temp").Select Range("A2").Select ActiveSheet.Paste 'Ende Wenn der Kennstring enthalten ist, dann Exit For End If 'Ende Schleife ueber alle Elemnte des Arrays Next errorhandler: MsgBox ("Es ist kein Abruf in der Ablage") End Sub
Funktioniert auch wunderbar, kopiert wirklich nur die Abrufe, keinen anderen Text oder andere Objekte. Aber wie gesagt selbst wenn alles richtig Durchläuft kommt die Meldung vom Errorhandler.
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo, Code: Public Sub TextFromClipr() 'Variablendeklarationen 'Objekt, Variant, Long Dim oData As New DataObject, arrData, iCnt& 'Bei Fehler gehe zu Fehlerbehandlung 'z.B. Grafik statt text On Error GoTo errorhandler 'Daten aus der Zwischenablage holen oData.GetFromClipboard 'Daten anhand Zeilenvorschub in Array splitten arrData = Split(oData.GetText, vbLf) 'Schleife ueber alle Elemnte des Arrays For iCnt = 0 To UBound(arrData) 'Wenn der Kennstring enthalten ist, dann If InStr(1, arrData(iCnt), "Lieferabruf nach VDA-Norm 4905") > 0 Then ' Einfügen des Abrufes in Temp ' Sheets("Temp").Select ' Range("A2").Select ' ActiveSheet.Paste 'ohne selektieren Worksheets("Temp").Range("A2").Paste 'Ende Wenn der Kennstring enthalten ist, dann Exit For End If 'Ende Schleife ueber alle Elemnte des Arrays Next Exit Sub errorhandler: MsgBox ("Es ist kein Abruf in der Ablage") End Sub
Gruß Stefan Win 10 / Office 2016
|