Thema Datum  Von Nutzer Rating
Antwort
09.01.2025 16:11:55 Manuela
NotSolved
09.01.2025 16:57:02 Gast7777
NotSolved
09.01.2025 22:39:04 Gast83583
NotSolved
09.01.2025 22:47:21 Gast85818
NotSolved
Rot Eine naive aber funktionale Implementierung ...
10.01.2025 16:00:24 Gast68877
NotSolved

Ansicht des Beitrags:
Von:
Gast68877
Datum:
10.01.2025 16:00:24
Views:
29
Rating: Antwort:
  Ja
Thema:
Eine naive aber funktionale Implementierung ...

Folgender Code öffnet eine Website dort werden die Daten markiert und kopiert, dann werden sie mit MsgBox bei OK aus der Zwischenablage in eine Datei in Zeile 2 eingefügt, ein direktes abgreifen ist nicht möglich da keine Tabellen erkannt werden. Nun kommt es aber vor das das markieren und kopieren nicht korrekt funktioniert, daher wird nach dem einfügen mit MsgBox "Prüfen ob Daten korrekt eingefügt!", vbOKCancel geprüft sind die Daten korrekt eingefügt läuft das Makro weiter durch bei Abbruch, wird das Makro abgebrochen, ich möchte jetzt aber nicht wieder von vorne anfangen sondern zu dem Punkt MsgBox "Daten kopieren und einfügen mit OK bestätigen.", vbInformation sodass ich die Daten einfach nochmal einfügen kann und mir die Prozedur mit dem Öffnen der Website erspare, habe leider selbst keine Möglichkeit gefunden zu diesem Punkt zurückzu kehren.

Die besagte Stelle besteht deiner Beschreibung nach aus drei weiteren Vorgehensweisen:

  1. OK Weiter mit dem nächsten Schritt
  2. NICHT OK Zurück zum "Kopieren"-Schritt
  3. ABBRUCH Vorgang abbrechen

Dies lässt sich in der MsgBox durch vbYesNoCancel abbilden.


Eine zwar naive aber funktionale Implementierung könnte so aussehen.

Die einzelnen Schritte. Das könnte man auch als Enum definieren; macht keinen großen Unterschied.

Private Const STEP_EXECUTE As Integer = 0
Private Const STEP_COPY As Integer = 1
Private Const STEP_PASTE As Integer = 2
Private Const STEP_VALIDATE As Integer = 3
Private Const STEP_FORMAT As Integer = 4
Private Const STEP_EXIT As Integer = 5

 Code ist ungetestet 

Dim chromePath As String
Dim url As String

'CromeBrower Pfad
chromePath = """C:\Program Files\Google\Chrome\Application\chrome.exe"""
url = "https://???????"

Dim currentStep As Integer

currentStep = STEP_EXECUTE
Do
	Select Case currentStep
		Case STEP_EXECUTE
			
			Call Shell(chromePath & " --new-window " & url, vbNormalFocus)
			
			currentStep = STEP_COPY
			
		Case STEP_COPY
			
			Call MsgBox("Daten in die Zwischenablage kopieren - z.B. mit [STRG]+[C] - und mit OK bestätigen.", vbOKOnly Or vbInformation)
			' Nutzer muss die Daten per Hand im Browser auswählen und in die Zwischenablage kopieren
			
			currentStep = STEP_PASTE
			
		Case STEP_PASTE
			
			Set ws = ActiveWorkbook.Sheets(1)
			'Daten aus der Zwischenablage einfügen
			Call ws.Paste()
			'ws.Range("A2").Paste = xlPasteAll
			Call ws.Rows(2).Delete()
			
			currentStep = STEP_VALIDATE
			
		Case STEP_VALIDATE
			
			Select Case MsgBox("Prüfen ob Daten korrekt eingefügt! (Nein = Vorgang wiederholen)", vbExclamation Or vbYesNoCancel Or vbDefaultButton2)
				Case vbYes		' Daten korrekt
					currentStep = STEP_FORMAT
				Case vbNo		' Daten nicht korrekt -> Vorgang wiederholen
					currentStep = STEP_COPY
				Case vbCancel	' Daten nicht korrekt -> Vorgang abbrechen
					currentStep = STEP_EXIT
			End Select
			
		Case STEP_FORMAT:
			
			'Textumbruch aufheben
			ws.usedRange.WrapText = False
			
			'Spaltenbreite und Zeilenhöhe optimieren
			Call ws.usedRange.Columns.AutoFit()
			Call ws.usedRange.Rows.AutoFit()
			
			Call ActiveWorkbook.Save()
			Call Workbooks("MMMM.xlsm").Close(SaveChanges:=True)
			
			currentStep = STEP_EXIT
			
		Case STEP_EXIT:
			Exit Do
			
	End Select
Loop

 

Grüße


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
09.01.2025 16:11:55 Manuela
NotSolved
09.01.2025 16:57:02 Gast7777
NotSolved
09.01.2025 22:39:04 Gast83583
NotSolved
09.01.2025 22:47:21 Gast85818
NotSolved
Rot Eine naive aber funktionale Implementierung ...
10.01.2025 16:00:24 Gast68877
NotSolved