Dos-Konsole auslesen?!

Razortide

Grünschnabel
Hallo Community,

im Rahmen meiner Ausbildung bin ich gerade dabei ein kleines VB-Script zu schreiben.

Die Aufgabe soll es sein, aus einer Excel Liste die Namen von Servern auszulesen, über einen nslookup die IP-Adresse zu ermitteln und diese wieder in die List einzutragen. Das funktioniert exemplarisch im Moment darüber, dass ich über einen CMD Befehl eine Hilfedatei erstelle, die wieder ausgelesen und danach wieder gelöscht wird. Allerdings habe ich hier nahezu 1000 Datensätze und im Laufe der aktualisierung verreckt er mir des öfteren mal (naja eigentlich immer, meist zwischen 200 und 600).

Meine Frage also ist: Ist es möglich, die Ausgabe nach dem nslookup (die ja in der DOS-Konsole erscheint) direkt in eine Variable zu laden um den Umweg über die externe Hilfsdatei umgehen zu können?

Hier der Quellcode:
Code:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMS As Long)
Sub Ip_Ermitteln()
    Dim strName                                As String
    Dim strBefehl                              As String
    Dim Ip                                     As String
    Dim i                                      As Integer
        
    i = 3
    
   Do While ActiveSheet.Cells(i, 2) <> ""
        
    Rem ========================================
    Rem == Name des Servers wird ausgelesen   ==
    Rem ========================================
    strName = ActiveSheet.Cells(i, 2).Value
            
    Rem ========================================
    Rem == Befehl wird erstellt               ==
    Rem ========================================
    strBefehl = ("CMD /c nslookup " & strName & " >> help.txt")
    Shell (strBefehl)
    Sleep 300
        
    Rem ========================================
    Rem == IP-Adresse wird geschrieben        ==
    Rem ========================================

    ActiveSheet.Cells(i, 6).Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;help.txt", _
        Destination:=ActiveSheet.Cells(i, 6))
        .Name = "help_9"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = False
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 5
        .TextFileParseType = xlFixedWidth
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(9, 1)
        .TextFileFixedColumnWidths = Array(10)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    
    Rem ========================================
    Rem == Hilfedatei wird entfernt           ==
    Rem ========================================
    Sleep 400
    strBefehl = ("CMD /c del help.txt")
    
    Shell (strBefehl)
    i = i + 1
    Sleep 300
    Loop
End Sub
 
Zuletzt bearbeitet:
wenn du das handle der dosbox hast....

SetParent AppHandle, Form1.Picture1.hwnd

damit wird die dosbox in deine anwendung geladen(in eine PICBox) und du kannst sie "verschwinden lassen"
 
Zurück