Excel Frage


Indurus

Recommended Posts

Surft nur im ASB
Indurus schrieb vor einer Stunde:

Ich glaube es liegt an der Zeile

sTxt = appIE.document.DocumentElement.outerhtml

an diesem "outerhtml"!

Ja, ich glaube .outertext wäre in dem Fall besser.

Für mich ist das halt leider ein ziemlicher Blindflug, da ich nicht genau weiß, wie die Antwort von deinem Webservice genau aussieht. Bei dem Test-Webservice, das ich verwende, bekomme ich mit ".outertext" schon mal weniger Formatierungszeug mit, welches eindeutig identifizierbar ist (beginnt mit "@" und hört mit der letzten geschwungenen Klammer auf). Keine Ahnung, wie es bei dir aussieht, aber wenn man das ausschließt und den restlichen Inhalt als Textfile speichert, schauts bei mir schon ziemlich nach einer validen XML-Datei aus...

Sub DownloadFile()

Dim objIE As Object
Dim strURL As String

Dim strData As String
Dim strTemp As String
Dim intPos As Integer
Dim strResponse As String

Set objIE = CreateObject("InternetExplorer.Application")
strURL = "http://www.thomas-bayer.com/sqlrest/"
objIE.navigate strURL

While objIE.readyState <> 4
    DoEvents
Wend

strData = objIE.document.DocumentElement.outertext

strResponse = ""
strResponse = Left(strData, InStr(strData, "@") - 1)

intPos = 0
While InStr(intPos + 1, strData, "}") <> 0
    intPos = InStr(intPos + 1, strData, "}")
Wend
strTemp = Right(strData, Len(strData) - intPos)
While Left(strTemp, 1) = " "
    strTemp = Right(strTemp, Len(strTemp) - 1)
Wend

strResponse = strResponse & strTemp

Close #1
Open "C:\Users\.....\Desktop\TEST.xml" For Output As #1
Print #1, strResponse
Close #1

Set objIE = Nothing

End Sub

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Harry Wijnvoord Fußballgott
lx99 schrieb vor 57 Minuten:

Ja, ich glaube .outertext wäre in dem Fall besser.

Für mich ist das halt leider ein ziemlicher Blindflug, da ich nicht genau weiß, wie die Antwort von deinem Webservice genau aussieht. Bei dem Test-Webservice, das ich verwende, bekomme ich mit ".outertext" schon mal weniger Formatierungszeug mit, welches eindeutig identifizierbar ist (beginnt mit "@" und hört mit der letzten geschwungenen Klammer auf). Keine Ahnung, wie es bei dir aussieht, aber wenn man das ausschließt und den restlichen Inhalt als Textfile speichert, schauts bei mir schon ziemlich nach einer validen XML-Datei aus...


Sub DownloadFile()

Dim objIE As Object
Dim strURL As String

Dim strData As String
Dim strTemp As String
Dim intPos As Integer
Dim strResponse As String

Set objIE = CreateObject("InternetExplorer.Application")
strURL = "http://www.thomas-bayer.com/sqlrest/"
objIE.navigate strURL

While objIE.readyState <> 4
    DoEvents
Wend

strData = objIE.document.DocumentElement.outertext

strResponse = ""
strResponse = Left(strData, InStr(strData, "@") - 1)

intPos = 0
While InStr(intPos + 1, strData, "}") <> 0
    intPos = InStr(intPos + 1, strData, "}")
Wend
strTemp = Right(strData, Len(strData) - intPos)
While Left(strTemp, 1) = " "
    strTemp = Right(strTemp, Len(strTemp) - 1)
Wend

strResponse = strResponse & strTemp

Close #1
Open "C:\Users\.....\Desktop\TEST.xml" For Output As #1
Print #1, strResponse
Close #1

Set objIE = Nothing

End Sub

 

Sensationell! Das schaut jetzt schon richtig gut aus...Ich glaub ich bin fast dort wo ich hin will!

Aber ein bissl dubios ist das ganze...

Ich kann ja die Seite im Browser öffnen und mit Speichern Unter ablegen wie ich möchte. Hab das mal mit .txt probiert. Wenn ich sie also als textfile ablege schaut sie fast exakt gleich aus wie das was aus deinem Excel Makro rauskommt (habe in deinem code das TEST.xml durch TEST.txt ersetzt). Das stimmt mich sehr positiv! Wenn ich dann aber die im Editor geöffnete, händisch runtergeladene .txt Datei als .xml (im editor) abspeichere kann ich sie danach mit jedem beliebigen Brwoser korrekt darstellen. Mach ich das aber mit der .txt die dein Makro geladen hat (die bis auf ein paar zeilenumbrüche eigentlich exakt den selben inhalt hat wie das händisch geladene .txt) kann sie kein browser mehr lesen :

Die XML-Seite kann nicht angezeigt werden

Die XML-Eingabe kann nicht angezeigt werden, wenn Stylesheet XSL verwendet wird. Beheben Sie den Fehler und klicken Sie dann auf Aktualisieren oder wiederholen Sie den Vorgang später.

 

Selbe Fehlermeldung kommt, wenn ich bei deinem Makro gleich auf TEST.xml stelle! Und zu Guter letzt kommt der fehler auch wenn ich die händisch geladene .txt Datei in eine neue Editor Datei reinkopiere und von dort dann als .xml abspeichere. Auch dann kann ers plötzlich nicht mehr lesen.

 

 

 

 

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Surft nur im ASB
Indurus schrieb vor 3 Minuten:

Selbe Fehlermeldung kommt, wenn ich bei deinem Makro gleich auf TEST.xml stelle! Und zu Guter letzt kommt der fehler auch wenn ich die händisch geladene .txt Datei in eine neue Editor Datei reinkopiere und von dort dann als .xml abspeichere. Auch dann kann ers plötzlich nicht mehr lesen.

Das ist seltsam...habs bei mir mit Chrome, Firefox und Edge erfolgreich öffnen können.

Wenn du magst/darfst, kannst mir ja mal die beiden Files per PN schicken und ich seh mir dann an, wo genau das Problem liegt.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Harry Wijnvoord Fußballgott
lx99 schrieb vor 21 Minuten:

Das ist seltsam...habs bei mir mit Chrome, Firefox und Edge erfolgreich öffnen können.

Wenn du magst/darfst, kannst mir ja mal die beiden Files per PN schicken und ich seh mir dann an, wo genau das Problem liegt.

Ich habe jetzt die beiden Textdateien verglichen: Sie schauen eigentlich gleich aus, allerdings wenn ich beide zB ins Word kopiere fällt sofort auf, dass in der Makro-Erzeugten Datei lauter Zeilenumbrüche zwischen den Statements sind, in der händisch runtergeladenen txt datei nicht (das sieht man im Editor gar nicht, aber wenn man den String in Word oder Excel kopiert, schaut das anders aus) Das scheint der Grund zu sein. Wenn ich die händisch rausnehme funktionierts!

Was auch kleine probleme macht: Es kommt ein "&" Symbol vor. Im händisch runtergeladenen Textfile steht dort wo vorher das "&" stand nun ein "&amp;". bei der Makrogeladenene Textdatei steht das "&" das ihm offensichtlich auch probleme bereitet!

Ich will dich jetzt nicht länger quälen, wenn du dich da auch erst reintigern müsstest, scahde um die Zeit. Aber falls du eine spontane Idee hättest, was die Zeilenumbrüche und Sonderzeichen angeht, wär das natürlich super!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Surft nur im ASB

@Indurus OK...wahrscheinlich hast du irgendein Problem mit dem Windows-Zeilenumbruch.

Ich habs jetzt um eine HTML-Konvertierung erweitert und lösche die CR+LF (Chr(13)) raus.

Auf ein Neues tät ich sagen :D

Sub DownloadFile()

Dim objIE As Object
Dim strURL As String

Dim strData As String
Dim strTemp As String
Dim intPos As Integer
Dim strResponse As String

Set objIE = CreateObject("InternetExplorer.Application")
strURL = "http://www.thomas-bayer.com/sqlrest/"
objIE.navigate strURL

While objIE.readyState <> 4
    DoEvents
Wend

strData = objIE.document.DocumentElement.outertext

strResponse = ""
strResponse = Left(strData, InStr(strData, "@") - 1)

intPos = 0
While InStr(intPos + 1, strData, "}") <> 0
    intPos = InStr(intPos + 1, strData, "}")
Wend
strTemp = Right(strData, Len(strData) - intPos)
While Left(strTemp, 1) = " "
    strTemp = Right(strTemp, Len(strTemp) - 1)
Wend

strResponse = Replace(ConvHTML(strResponse & strTemp), Chr(13), "")

Close #1
Open "C:\Users\.....\Desktop\TEST.xml" For Output As #1
Print #1, strResponse
Close #1

Set objIE = Nothing

End Sub

Public Function ConvHTML(strInput)

Dim i As Integer
Dim strTemp As String
Dim strChar As String

ConvHTML = Null

If Not IsNull(strInput) Then
    strTemp = ""
    For i = 1 To Len(strInput)
        strChar = Mid(strInput, i, 1)
        Select Case strChar
            Case "ä"
                strTemp = strTemp & "&auml;"
            Case "Ä"
                strTemp = strTemp & "&Auml;"
            Case "ö"
                strTemp = strTemp & "&ouml;"
            Case "Ö"
                strTemp = strTemp & "&Ouml;"
            Case "ü"
                strTemp = strTemp & "&uuml;"
            Case "Ü"
                strTemp = strTemp & "&Uuml;"
            Case "ß"
                strTemp = strTemp & "&szlig;"
            Case "&"
                strTemp = strTemp & "&amp;"
            Case Else
                strTemp = strTemp & strChar
        End Select
    Next i
    ConvHTML = strTemp
End If

End Function

 

bearbeitet von lx99

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Harry Wijnvoord Fußballgott

Du bist wirklich ein Hammer, @lx99! Jetzt liefert dein Code eine .xml Datei mit Text drinnen, der genau dem aus dem händisch runtergeladenen .xml gleicht. Allerdings ist dieses .xml aus dem Makro immer noch nicht ausführbar. Es wird erst ausführbar wenn ich es im editor öffne, den Text 1:1 (wirklich ohne Änderungen) kopiere und ins händisch runtergeladene .xml (im editor geöffnet und 1:1 durch den Text den das Makro ausgibt ersetzt) kopiere...Keine Ahnung wieso.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Surft nur im ASB
Indurus schrieb vor 1 Stunde:

Du bist wirklich ein Hammer, @lx99Allerdings ist dieses .xml aus dem Makro immer noch nicht ausführbar. Es wird erst ausführbar wenn ich es im editor öffne, den Text 1:1 (wirklich ohne Änderungen) kopiere und ins händisch runtergeladene .xml (im editor geöffnet und 1:1 durch den Text den das Makro ausgibt ersetzt) kopiere...Keine Ahnung wieso.

Danke für die Blumen, aber zufrieden sind wir erst, wenn alles funktioniert, oder? :)

Ich gehe stark davon aus, dass es an der Codierung liegt. Möglicherweise benötigst du bei der Weiterverarbeitung ein File im Format UTF-8 und das Makro erstellt nur ein ANSI File. Wenn du mir die beiden Files (anonymisiert bzw. kannst du auch irgendwas rein schreiben) schickst, kann ich mir das ansehen.

Wenn du es selbst versuchen möchtest, kann ich dafür Notepad++ empfehlen, da siehst du die Codierung und auch den Zeilenumbruch des Textfiles.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Harry Wijnvoord Fußballgott
Danke für die Blumen, aber zufrieden sind wir erst, wenn alles funktioniert, oder? [emoji4]

Ich gehe stark davon aus, dass es an der Codierung liegt. Möglicherweise benötigst du bei der Weiterverarbeitung ein File im Format UTF-8 und das Makro erstellt nur ein ANSI File. Wenn du mir die beiden Files (anonymisiert bzw. kannst du auch irgendwas rein schreiben) schickst, kann ich mir das ansehen.

Wenn du es selbst versuchen möchtest, kann ich dafür Notepad++ empfehlen, da siehst du die Codierung und auch den Zeilenumbruch des Textfiles.


Das mit UTF-8 klingt gut, das kommt gleich in der Titelzeile des runtergeladenen .xml Files vor (sowohl in der händisch als auch mit deinem Makro geladenen Datei). Könnte man dagegen was tun? Sobald ich wieder am PC bin schicke ich dir die beiden Files mal per PN!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Harry Wijnvoord Fußballgott

@lx99

UTF-8 war das Problem! Hab mir ein paar Zeilen ergoogelt, die mir die Codierung hinbiegen, jetzt klappts!

Danke dir vielmals für die umfangreiche Unterstützung, das Ganze in Ferndiagnose zu lösen ohne jemals auch nur einen einzigen Schnipsel davon in Händen gehalten zu haben ist echt sensationell! :clap:

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

  • 1 month later...
Mir is ois...

Hat jemand eine Idee, wie ich folgendes lösen könnte:

Ich möchte die Daten so zusammenfassen, dass immer wenn in der 4. Spalte der Wert von a auf b wechselt das erste Datum und das letzte Datum angezeigt wird. 

 

Ndbhpc+dfqy33c2SuqFYt7V2CxXD1qpUet9KiVHr

Die Daten sollen also so zusammen gefasst werden:

 

9yFWbO6txGa5esRKj1jpESs9YqUnY9X62AUAAMfJ

 

 

bearbeitet von ufo05

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Mir is ois...
ufo05 schrieb vor 23 Stunden:

Hat jemand eine Idee, wie ich folgendes lösen könnte:

Ich möchte die Daten so zusammenfassen, dass immer wenn in der 4. Spalte der Wert von a auf b wechselt das erste Datum und das letzte Datum angezeigt wird. 

  Unsichtbaren Inhalt anzeigen

Keiner eine Idee? :ratlos::=

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Surft nur im ASB

Versuchs mal damit:

Sub Main()

Dim x As Integer
Dim intLn As Integer
Dim varStart As Variant

intLn = ActiveSheet.UsedRange.Rows.Count + 2

x = 1
varStart = Range("E" & x).Value
While Range("D" & x).Value <> ""
    If varStart = "" Then
        varStart = Range("E" & x).Value
    End If
    If Range("D" & x + 1).Value <> Range("D" & x).Value Then 'Wenn sich Wert ändert
        Range("A" & intLn).Value = Range("A" & x).Value
        Range("B" & intLn).Value = Range("B" & x).Value
        Range("C" & intLn).Value = Range("C" & x).Value
        Range("D" & intLn).Value = Range("D" & x).Value
        Range("E" & intLn).Value = varStart
        Range("F" & intLn).Value = Range("F" & x).Value
        intLn = intLn + 1
        varStart = ""
    End If
    x = x + 1
Wend

End Sub

Dieses Makro schreibt die Zusammenfassung zwei Zeilen unterhalb der bestehenden Tabelle. Voraussetzung ist, dass in den Daten keine Leerzeilen bzw. eigentlich keine leeren Zellen in Spalte D vorkommen.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Mir is ois...
lx99 schrieb vor 22 Stunden:

Versuchs mal damit:


Sub Main()

Dim x As Integer
Dim intLn As Integer
Dim varStart As Variant

intLn = ActiveSheet.UsedRange.Rows.Count + 2

x = 1
varStart = Range("E" & x).Value
While Range("D" & x).Value <> ""
    If varStart = "" Then
        varStart = Range("E" & x).Value
    End If
    If Range("D" & x + 1).Value <> Range("D" & x).Value Then 'Wenn sich Wert ändert
        Range("A" & intLn).Value = Range("A" & x).Value
        Range("B" & intLn).Value = Range("B" & x).Value
        Range("C" & intLn).Value = Range("C" & x).Value
        Range("D" & intLn).Value = Range("D" & x).Value
        Range("E" & intLn).Value = varStart
        Range("F" & intLn).Value = Range("F" & x).Value
        intLn = intLn + 1
        varStart = ""
    End If
    x = x + 1
Wend

End Sub

Dieses Makro schreibt die Zusammenfassung zwei Zeilen unterhalb der bestehenden Tabelle. Voraussetzung ist, dass in den Daten keine Leerzeilen bzw. eigentlich keine leeren Zellen in Spalte D vorkommen.

Danke für deine Lösung! Ich hab mich gestern dann auch noch daran gemacht es anders (vmtl. umständlicher :D ) gelöst

 

il19+Kf4VTgAAAFPyqXqThBMAAMCUPJweP35cHll

@lx99 andere Frage hätte ich noch: Gibts eine Möglichkeit das Makro zu exportieren (wie man an und für sich exportiert weiß ich :D )und wenn ich wiedermal ein Excel mit dem selben Aufbau habe, dieses Excel zu öffnen und dann das Makro einfach zu starten, ohne, dass ich in die Entwicklertools rein muss? Quasi, dass jemand anders, der wirklich 0 Ahnung hat es einfach "starten" kann? :ratlos:

Edit: Denke ich habs, indem man das Makro aufzeichnet und danach in der persönlichen Arbeitsmappe abspeichert

bearbeitet von ufo05

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

  • 1 month later...
hold your colour

Ich möchte gerne folgendes Problem mit einer Formel lösen, ich denk ihr könnt mir damit helfen.

 

Tabelle sieht so aus

 

 

 

 

 

 


 

 

 

 

A 1
A 2
A 3
B 4
B 2
B 4
C 2
C 3
C 5
C 1
C 2

 

Also ich hab in Spalte A mehrere gleich Werte und auch in Spalte B.

In einer anderen Tabelle habe ich nun

A

B

C

 stehen und möchte mir in der zweiten Spalten den NIEDRIGSTEN Wert aus der anderen Tabelle holen. (mit SVERWEIS geht das leider net, auch mim Index bring ichs net zam). Bei A wär das dann 1, bei B 2 und bei C wieder 1. Mit SVERWEIS nimmt er natürlich immer nur den ersten Wert den er findet, der aber nicht immer der niedrigste is. Mit Index und Vergleich komm ich auch net zum gewünschten Ergebnis..nehm an ich brauch eine Matrixformel.

 

E: Beide Tabellen werden immer wieder umsortiert und gefiltert

 

Bitte um Hilfe.

 

bearbeitet von Splinta

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...


  • Folge uns auf Facebook

  • Partnerlinks

  • Unsere Sponsoren und Partnerseiten

  • Wer ist Online

    • Keine registrierten Benutzer online.