Mein Chef hat mich gebeten, die Mantis Fehler Datenbank der Firma nach Excel zu exportieren, aber er kann mir keinen Zugriff auf den SQL Server geben und der Prozess muss automatisiert werden.Mantis BT Exportanfrage über "WinHttp.WinHttpRequest.5.1"
Das einzige, was ich verwenden kann, ist Excel (kein ODBC, kein manueller Export).
So habe ich es geschafft, dies zu tun:
Dim webClient As Object
Dim i As Long, vFF As Long, oResp() As Byte
Dim vLocalFile As String
Dim username As String, password As String
username = "blahblah"
password = "blahblah"
Set webClient = CreateObject("WinHttp.WinHttpRequest.5.1")
// Opening the connection to the application with a POST, containing user, password, and "permanent login" checked
webClient.Open "POST", "http://10.202.157.40/mantisbt-1.1.6/login.php", False
webClient.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
webClient.send ("username=" & username & "&password=" & password & "&perm_login=on")
// Now I set the "project" to "All Projects" (as I want the view to display our 2200 bugs)
webClient.Open "POST", "http://10.202.157.40/mantisbt-1.1.6/set_project.php", False
webClient.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
webClient.send ("project_id=0")
// The problem is, the last query displays 624 bugs instead of 2200, but I noticed when I click on "Advanced Filters" it successfully show the 2200 bugs (tested under a web browser AND Excel : the ResponseText shows them)
webClient.Open "GET", "http://10.202.157.40/mantisbt-1.1.6/view_all_set.php?type=6&view_type=advanced", False
webClient.send
// And NOW I can download the CSV file... (and that's where something is wrong *)
webClient.Open "GET", "http://10.202.157.40/mantisbt-1.1.6/csv_export.php", False
webClient.send
oResp = webClient.responseBody
// Creating a file and then filling it...
vFF = FreeFile
vLocalFile = "_mantis_export.csv"
If Dir(vLocalFile) <> "" Then Kill vLocalFile
Open vLocalFile For Binary As #vFF
Put #vFF, , oResp
Close #vFF
// Freeing memory
Set webClient = Nothing
(*: cf der Code) Die Linie vor, die Response zeigte "2200 Fehler", so war alles bis zur letzten Abfrage (csv_export.php) Fein . Das Skript zeigt, wenn es über einen Browser aufgerufen wird, genau das gleiche wie die Seite, die es aufgerufen hat (wenn die Seite 2 Fehler aufweist, enthält die CSV 2 Fehler). Mit meinen 2200 Fehlern, die in IE/Firefox gezeigt werden, bringt die CSV 2200 Bugs. Aber in Excel, selbst wenn der ResponseText 2200 Fehler zeigt, bringt mir die CSV 624 Bugs ... Als ob ich nicht die "Advanced Filter" -Seite aufgerufen hätte :(
Ich hoffe, dass jemand mich verstehen und mir helfen kann;)
Vielen Dank im Voraus,
David
Ich habe diese Funktion nicht gesehen, Schande über mich. Danke, das ist sehr hilfreich! –