Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

bei copy-paste ausm Web zu excel werden 2 Zellen zu 1
#1
Moin Leute,


hab das problem dass bei copy-paste ausm Web (siehe bild) zu excel, 2 Zellen/Zeilen leider zu einer zusammengefügt werden:

Aus kopierter 1.18 und 172 (rechts oben im bild), im web in 2 zeilen dargestellt, wird bei 'einfügen' auf excel zu 1.18172 (unten im bild).

Aus 1.01 und 1008 wird 1.011008.

Wie kann man das ändern um auf excel die zahlen wieder wie im web in getrennten zellen stehen zu haben?


grüsse!


   
Antworten Top
#2
Hallöchen,

Problem ist, wie die Darstellung erzeugt wird. Oben, wo das Datum steht, z.B. so:

PHP-Code:
<div class="biab_event-date biab_hidden-xs js-event-date">Sat 12 Oct<br>19:53</div

Da gibt es ein br für den Zeilenwechsel, den Excel beim Einfügen entsprechend verarbeitet.

Bei den Werten gibt es das nicht. Sad

PHP-Code:
<div class="biab_bet-content biab_has-amount"><span class="js-odds biab_odds">7.6</span><span class="biab_bet-amount">130</span></div

Eine Lösung hab ich da jetzt allerdings auch nicht Sad
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • sarkami
Antworten Top
#3
Guten morgen,


danke dass du dir die zeit genommen hast schauan.

Habe die stellen im quelltext der webpage gefunden (Bild1). Ja tatsache, beim datum kommt < br > vor, aber zwischen den beiden zahlen kommt kein < br > vor.


In Bild2 hab ich die markierung mal vergrössert: man sieht klar dass 1.02 und 961 in zwei unterschiedlichen zellen markiert sind, aber in excel dann zu einer werden, zu 1.02961. Kann man die 1.02961 auf excel irgendwie rückrechnen zu 1.02 und 961? problem hierbei zb: aus zb 1.20 und 888 wird 1.2888 und aus 1.28 und 88 wird auch 1.2888 ...

Optisch im web sieht man die trennung, aber excel erkennt es nicht.

Keiner eine lösung oder tipps?

grüsse


Angehängte Dateien Thumbnail(s)
   

.bmp   2.bmp (Größe: 71,27 KB / Downloads: 5)
Antworten Top
#4
Hallo sarkami,

wenn Du die Werte manuell aus dem Browser kopieren willst, bleibt Dir nix anderes übrig, als sie einzeln zu holen. Wie Schauan schon gezeigt hat, werden die betreffenden Werte im HTML Quelltext nicht getrennt, sondern stehen direkt hintereinander. Auf der Seite werden sie durch die CSS-Klassen, die den Tags zugeordnet sind, optisch getrennt dargestellt. Diese Informationen gehen beim manuellen Kopieren aber verloren und Excel "sieht" nur den reinen Text pro Tabellenzelle.

Automatisiert kann man die Werte allerdings sehr leicht für sich betrachten, da es dann die Möglichkeit gibt, direkt die CSS-Klassen abzufragen. Um die ganze Tabelle so aufzubauen, wie sie auf der Seite steht, ist einiges Brimborium nötig, um alle Zellen den richtigen Zeilen und Spalten zuzuordnen. Dafür habe ich im Moment keine Zeit. Im folgenden Makro kannst Du aber beispielhaft sehen, wie man die beiden Werte der gleichen Zelle für sich ausliest. Da Dein Link nicht mehr funktioniert, habe ich einen anderen rausgesucht:


Code:
Sub OhneZeilenUmbruch()

Dim browser As Object
Dim url As String
Dim knotenAlleZellwerteOben As Object
Dim knotenAlleZellwerteUnten As Object
Dim knotenZellNr As Long
Dim zellWerte As String

 url = "https://orbittest.com/customer/sport/event/29036109"
 
 'Internet Explorer initialisieren, Sichtbarkeit festlegen,
 'URL aufrufen und warten bis Seite vollständig geladen wurde
 Set browser = CreateObject("internetexplorer.application")
 browser.Visible = False
 'browser.FullScreen = True
 browser.navigate url
 Do Until browser.ReadyState = 4: DoEvents: Loop
 'Manuelle Pause, damit die Seite komplett zur Verfügung steht
 Application.Wait (Now + TimeSerial(0, 0, 3))
 
 'Jeweils den oberen und unteren Zellwert anhand der CSS Klasse als NodeCollection holen
 Set knotenAlleZellwerteOben = browser.document.getElementsByClassName("js-odds biab_odds")
 Set knotenAlleZellwerteUnten = browser.document.getElementsByClassName("biab_bet-amount")
 
 'Sofern immer 2 Werte in einer Zelle stehen, kann man anhand der Anzahl aller Elemente in
 'einer Node Collection die gewünschten Teilstrings in einer Schleife aus den NodeCollections
 'auslesen
 If Not knotenAlleZellwerteOben Is Nothing Then
   For knotenZellNr = 0 To knotenAlleZellwerteOben.Length - 1
     zellWerte = zellWerte & "Zelle " & knotenZellNr + 1 & ":" & Chr(13) & _
                 knotenAlleZellwerteOben(knotenZellNr).innertext & Chr(13) & _
                 knotenAlleZellwerteUnten(knotenZellNr).innertext & Chr(13) & Chr(13)
   Next knotenZellNr
 End If
 
 'Aufräumen
 browser.Quit
 Set browser = Nothing
 Set knotenAlleZellwerteOben = Nothing
 Set knotenAlleZellwerteUnten = Nothing
 
 'Beispiel ausgeben
 MsgBox zellWerte
End Sub


Viele Grüße,

Zwenn
[-] Folgende(r) 1 Nutzer sagt Danke an Zwenn für diesen Beitrag:
  • sarkami
Antworten Top
#5
wow Dank dir für den Code Zwenn.

Wie müsste der Code modifiziert sein, so dass man bei: 'Beispiel ausgeben, anstatt erscheinen einer MsgBox, die Daten Paare in die Zellen A1+A2, B1+B2, C1+C2 usw bekommt,
(dann nächste Zeile in A3+A4, B3+B4 usw, übernächste Zeile in A5+A6, B5+B6 usw)?

Und bei jeder Aktualisierung dabei die vorhandenen Daten in den Zellen durch die jeweils neuen korrespondierenden Daten ersetzt werden?
Antworten Top
#6
(19.11.2019, 15:38)sarkami schrieb: wow Dank dir für den Code Zwenn.

Wie müsste der Code modifiziert sein, so dass man bei: 'Beispiel ausgeben, anstatt erscheinen einer MsgBox, die Daten Paare in die Zellen A1+A2, B1+B2, C1+C2 usw bekommt,
(dann nächste Zeile in A3+A4, B3+B4 usw, übernächste Zeile in A5+A6, B5+B6 usw)?

Und bei jeder Aktualisierung dabei die vorhandenen Daten in den Zellen durch die jeweils neuen korrespondierenden Daten ersetzt werden?

Hallo sarkami,

meinen Code kann man nicht enfach modifizieren, damit er das macht, was Du möchtest. Das ist nämlich genau das Brimborium, von dem ich schrieb. Ich habe nur gezeigt, dass man die Werte jeweils für sich holen kann. Das hat aber mit dem Tabellenaufbau gar nix zu tun. Die Seitenbetreiber bauen die Tabelle einigermaßen kompliziert auf. Warum wissen nur sie selbst. Zum Auslesen müsste man zu jeder Zeit wissen, in welcher Zeile und Spalte man sich gerade befindet. Dabei ist zu berücksichtigen, dass es auch leere Zellen gibt. Das geht über den Aufbau der Tabelle natürlich "automatisch", wenn man seinen Code zum Auslesen entsprechend aufbaut. Das ist mir aber im Moment zu aufwändig, um es "mal eben" umzusetzen. Sprich, ich habe einfach gerade keine Zeit dafür. Zumal ich annehme, Du willst nicht nur eine Seite mit 4 Werten auslesen, sondern mehrere Links abklappern. Da müsste man erstmal noch untersuchen, ob es andere Eventualitäten gibt, die abgefangen werden müssen oder Werte, die auf andere Weise ausgelesen werden müssen. Wie gesagt, ist mir gerade zu aufwändig.


Aktualisieren würde ich die Daten gar nicht. Dazu brauchst Du nämlich einen eindeutgen Identifikator, an dem Du erkennst welcher Datensatz der Internetseite welchem in der Excel-Tabelle entspricht. Den sehe ich aber nicht. Also würde ich die Tabelle bei jedem Auslesen einfach neu durch das Makro aufbauen lassen.

Es gibt hier noch andere Leute, die sich mit dem Auslesen von Internetseiten auskennen und noch mehr, die die Logik des Tabellenaufbaus durchschauen. Ich weiß natürlich nicht welche Programmierkenntnisse Du mitbringst. Aber wenn Du Dich da reinfuchsen willst, bekommst Du das auch hin.

Viele Grüße,

Zwenn
[-] Folgende(r) 1 Nutzer sagt Danke an Zwenn für diesen Beitrag:
  • sarkami
Antworten Top
#7
Ok verstehe, schade. Ja meine Programmierkenntnisse sind leider sehr überschaubar.

Wäre dann die Änderung bei 'Beispiel ausgeben möglich, anstatt dass die Datenpaare in einer MsgBox erscheinen, die Daten einfach ins Excel Worksheet bzw die Spalten A und B kommen?

gruss
Antworten Top
#8
ist die Änderung des Codes zu komplex oder überhaupt nicht möglich?
Antworten Top
#9
Hallo sarkami,

ich habe nochmal in den HTML Code geguckt und mit einem kleinen Trick ist es wahrscheinlich weniger komplex, als ich vermutet hatte. Die Seite hat allerdings ein ungültiges Sicherheitszertifikat. Auf das wird im IE nun bei jedem Aufruf hingewiesen. Man kommt also über das normale Aufrufen der URL gar nicht ohne weiteres auf die Seite.

Muss es denn unbedingt die Seite sein?

Viele Grüße,

Zwenn
Antworten Top
#10
Moin Zwenn,

die folgende Seite geht auch und hat kein ungültiges Sicherheitszertifikat https://orbitexch.com/customer/sport/market/1.161883729

Grüsse!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste