2017-01-21 3 views
0

Ich bin ganz neu in MS-Access und hatte ein paar leitlinien Fragen,-Beratung REQUEST MS-ACCESS Hyperlink Vergleich Script Tipps

Meine Organisation verwendet MS-Access ein großes elektronischen Bauteil-Inventar zu verfolgen. Diese Teile haben ein Hyperlink-Feld, das auf die Produktwebseite verweist. Hier ein Beispiel:

Part Number  Part Type Value Description     Component_Height Voltage Tolerance Schematic Part    Layout PCB Footprint Manufacturer Part Number Manufacturer Distributor Part Number Distributor Price Availability Link 
UMK105CG100DV-F Ceramic  10pF CAP CER 10PF 50V NP0 0402 0.35 MM    50V  ±0.5pF  xxxxx\C_NP,xxxxx\C_NP_Small c_0402     UMK105CG100DV-F    Taiyo Yuden  587-1947-2-ND Digi-Key   0.00378 In Stock  http://www.digikey.com/product-detail/en/UMK105CG100DV-F/587-1947-2-ND/1473246 

Links Hier:

http://www.digikey.com/product-detail/en/UMK105CG100DV-F/587-1947-2-ND/1473246

Fast die gesamte Mehrheit unserer Hyperlinks Punkt an den Lieferanten Digi-Key.

Im Moment der Verifikations-Flow geht so:

Jeden Monat oder so eine große Gruppe von uns setzt sich und eins nach dem anderen kopiert den Hyperlink in Google. Wir öffnen dann die entsprechende Webseite und überprüfen die Verfügbarkeit der Komponenten usw.

Wir haben fast 1000 Komponenten und dieser Prozess dauert Stunden. Ich suche nur Ratschläge, wie wir unseren Workflow verbessern können. Ich hatte gehofft, dass es einen Weg gab, eine "offene Hyperlink mit Standard-Browser und Suchzeichenfolge" Makro-oder Skript-Schnittstelle zu schreiben. Das Pseudo-Skript würde dann prüfen, ob die Zeichenkette "Menge verfügbar" größer als 1 ist, und wenn dies nicht der Fall war (das Teil war nicht auf Lager), markieren Sie das Teil als veraltet.

Jeder Rat würde sehr geschätzt werden, ich bin wirklich bestrebt, unseren Workflow zu optimieren.

Antwort

2

Sie können das DOM der Webseite durchlaufen. Ein kurzer Blick auf die Webseite und Sie können eine Tabelle mit einem Namen von Produktdetails sehen.

So würde der folgende VBA-Code die Beispielwebseite laden und die Werte herausziehen.

Option Compare Database 
Option Explicit 

Enum READYSTATE 

    READYSTATE_UNINITIALIZED = 0 
    READYSTATE_LOADING = 1 
    READYSTATE_LOADED = 2 
    READYSTATE_INTERACTIVE = 3 
    READYSTATE_COMPLETE = 4 

End Enum 

Sub GetWebX() 

    Dim ie  As New InternetExplorer 
    Dim HTML As New HTMLDocument 
    Dim strURL As String 
    Dim Htable As New HTMLDocument 
    Dim i  As Integer 

    strURL = "http://www.digikey.com/product-detail/en/UMK105CG100DV-F/587-1947-2-ND/1473246" 

    ie.Navigate strURL 
    Do While ie.READYSTATE < READYSTATE_COMPLETE 
    DoEvents 
    Loop 
    Set HTML = ie.Document 

    Set Htable = HTML.getElementById("product-details") 

    For i = 0 To Htable.Rows.Length - 1 
    With Htable.Rows(i) 
     Debug.Print Trim(.Cells(0).innerText), Trim(.Cells(1).innerText) 
    End With 
    Next I 
    ie.Quit 
    Set ie = Nothing 

End Sub 

Ausgabe von oben:

Digi-Key Part Number   587-1947-2-ND 
Quantity Available    230,000 
Can ship immediately 
Manufacturer     Taiyo Yuden 
Manufacturer Part Number  UMK105CG100DV-F 
Description     CAP CER 10PF 50V NP0 0402 
Expanded Description   10pF ±0.5pF 50V Ceramic Capacitor C0G, NP0 0402(1005 Metric) 
Lead Free Status/RoHS Status Lead free/RoHS Compliant 
Moisture Sensitivity Level (MSL) 1 (Unlimited) 
Manufacturer Standard Lead Time 11 Weeks 

Da das oben ist ein Array, dann könnte man einen Knopf rechts auf dem Formular platzieren, und haben ein paar zusätzliche Zeilen von VBA die Werte in die schreiben bilden. Ein Benutzer müsste also einfach zu dem gegebenen Datensatz/Formular in Access gehen - einen Knopf drücken und die obigen Werte würden direkt in das Formular kopiert werden.

die oben VBA-Code erfordert einen Verweis auf:

Microsoft Internet Controls 
Microsoft HTML Object Library 

würde ich vorschlagen, dass Sie zu spät nach dem Test für die beiden oben genannten Bibliotheken zu binden.