J'ai besoin de la date du jour en cours. Je ne veux pas le placer dans une variable pour pouvoir le faire fonctionner, à la place je voudrais que cette variable soit Date ou dans sa chaîne par défaut.
Sub WEB() Dim IE As Object Dim allelements As Object Application.ScreenUpdating = False Set IE = CreateObject("InternetExplorer.Application") IE.navigate "http://www.fechadehoy.com/venezuela" Do Until IE.ReadyState = 4 DoEvents Loop Application.Wait (Now + TimeValue("0:00:01")) IE.document.getElementById ("date") IE.Visible = True Set IE = Nothing Application.ScreenUpdating = True End Sub
Le site Web est http://www.fechadehoy.com/venezuela
Je n'ai besoin que la date de cette page. Je ne suis intéressé par aucun autre élément de la macro.
J'ai juste besoin d'extraire la date actuelle et de la placer dans une variable.
3 Réponses :
Bien que la réponse donnée par @Siddharth Rout soit parfaitement correcte, il faudrait un peu de manipulation de chaîne pour obtenir la date sous une forme utilisable.
Pour la raison ci-dessus, je propose une solution alternative qui obtient le date dans un format directement utilisable, prêt à être manipulé et utilisé dans d'autres calculs si nécessaire.
En prime, je montre comment obtenir la date en utilisant une requête HTTP au lieu d'utiliser Internet Explorer. Cela rend le code plus efficace.
Option Explicit Sub getDate() Dim req As New WinHttpRequest Dim doc As New HTMLDocument Dim el As HTMLParaElement Dim key As String Dim url As String Dim retrievedDate As Date url = "http://www.fechadehoy.com/venezuela" key = "Fecha actual: " ''''''''''Bonus: Use an HTTP request to get the date instead of opening IE''''''''''' With req ' .Open "GET", url, False ' .send ' doc.body.innerHTML = .responseText ' 'Debug.Print .responseText ' End With ' ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' For Each el In doc.getElementsByTagName("p") If el.innerText Like "Fecha actual*" Then retrievedDate = Mid(el.innerText, InStr(el.innerText, key) + Len(key), Len(el.innerText)) End If Next el End Sub
Vous devrez ajouter une référence à Microsoft HTML Object Library
et Microsoft WinHTTP Services version 5.1
. Pour ce faire, allez dans l'éditeur VB> Outils> Références.
Avoir la date dans ce format signifie qu'elle peut être facilement manipulée. Un exemple serait l'utilisation de fonctions telles que jour (retrievedDate)
, mois (retrievedDate)
, année (retrievedDate)
etc.
Ajoutez la bibliothèque, mais ne me laissez pas exécuter le code, "le type n'a pas été défini par l'utilisateur"
@EduardoGonzalez Désolé, j'ai oublié la deuxième référence. J'ai mis à jour ma réponse. Vous avez également besoin d'une référence à Microsoft WinHTTP Services version 5.1
Merci pour votre temps et votre réponse a été très utile pour mon projet. Bonne journée.
@EduardoGonzalez Heureux d'avoir pu vous aider!
Pourquoi opter pour IE alors que xhr peut faire l'affaire? Vous pouvez obtenir la date en un clin d'œil si vous optez pour XMLHttpRequest
.
Sub GetCurrentDate() Dim S$ With CreateObject("MSXML2.XMLHTTP") .Open "GET", "http://www.fechadehoy.com/venezuela", False .send S = .responseText End With With CreateObject("htmlfile") .body.innerHTML = S MsgBox .getElementById("fecha").innerText End With End Sub
Référence à ajouter:
Microsoft XML, v6.0 Microsoft HTML Object Library
Cela me désigne comme l'erreur: "Nouveau XMLHTTP" et j'ai l'erreur "non défini par l'utilisateur"
Je viens de mettre à jour le fil avec une autre image, pouvez-vous le vérifier?
Merci pour votre temps et votre réponse a été très utile pour mon projet. Bonne journée.
Agréable et propre +