Sind keine VBS Unterprogramme in einer .hta möglich?

  • VBScript

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Bot-Like.

    Sind keine VBS Unterprogramme in einer .hta möglich?

    Hallo,

    ich habe in der Vergangenheit meine VB-Scripts gern in einer HTA verpackt.
    Bei meinem aktuellen Projekt beiße ich mir leider die Zähne aus.
    Ich habe zu dem Thema das Netz einmal auf links gedreht, konnte aber nix finden.

    in meinem VB code kommt ein Sub / End Sub vor. Das ist in einer eigenständigen .vbs auch kein Problem!
    Da der HTA Script tag aber noch eine Unterroutine zum starten eines Skriptes benötigt bekomme ich immer einen Syntax-Fehler.

    <script language="VBScript">
    Sub start()
    'mein Skript ....->
    Sub DoFolders(Folder) '<--- Syntax-Fehler ab dem ersten Zeichen
    'Unterroutine
    End Sub
    End Sub
    </script>

    Ich gehe mal davon aus, dass VB allein schon kein zweiten "Sub" mag wenn der este noch nicht mit "End Sub" abgeschlossen ist.
    weiterhin kann ich aber nicht glauben, das man in einer HTA keine Unterprogramme nutzen können soll.

    Da kommt Ihr ins Spiel: Wie baut man also eine (VBS)HTA eine Unterroutine ein?

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    das wird in meinem Fall wahrscheinlich nicht nicht funktionieren.
    Ich benutze den zweiten Sub um damit rekursiv alle Ordnerebenen durchzublättern.

    Visual Basic-Quellcode

    1. <head>
    2. <title>Verzeichnis_nach_Datei-Inhalt_durchsuchen</title>
    3. <HTA:APPLICATION
    4. APPLICATIONNAME="Verzeichnis_nach_Datei-Inhalt_durchsuchen"
    5. SCROLL="yes"
    6. SINGLEINSTANCE="yes"
    7. >
    8. </head>
    9. <script language="VBScript">
    10. Sub start()
    11. 'Deklaration
    12. Dim Dateiarray, Anhang, AktionSHELL, AktionFSO, Ordner, file, ArtikelnummernSammlung
    13. Dim Textzeile, Suchstring, Treffer, Zeilenposition, Ladetext
    14. 'Objekte
    15. Set AktionFSO = CreateObject("Scripting.FileSystemObject")
    16. Set AktionSHELL = CreateObject("WScript.Shell")
    17. 'Abfragen
    18. If Ordnerangabe_option.Value = "" Then
    19. Ordner = Ordnerangabe_textbox.Value
    20. Else
    21. Ordner = Ordnerangabe_option.Value
    22. End if
    23. If Ordner = "" Then
    24. MsgHTA.InnerHTML = "Bitte geben Sie einen Pfad an."
    25. Exit Sub
    26. End If
    27. Ladetext = "Lade"
    28. If Suchbegriff_option.Value = "" Then
    29. Suchstring = Suchbegriff_textbox.Value
    30. Else
    31. Suchstring = Suchbegriff_option.Value
    32. End if
    33. If Suchstring = "" Then
    34. MsgHTA.InnerHTML = "Bitte geben Sie einen Suchbegriff an."
    35. Exit Sub
    36. End If
    37. Set Fld = AktionFSO.GetFolder(Ordner)
    38. DoFolders(Fld)
    39. Sub DoFolders(Folder)
    40. For Each SubFolder In Folder.SubFolders
    41. DoFolders(SubFolder)
    42. Next
    43. 'Auslesen der .txt
    44. For Each File In Folder.Files
    45. Treffer = false
    46. Set Datei = AktionFSO.OpenTextFile (File.Path,1)
    47. While not Datei.AtEndOfStream
    48. Textzeile = Datei.ReadLine
    49. Zeilenposition = instr(1, Textzeile, Suchstring, vbTextCompare)
    50. If Zeilenposition <> 0 Then
    51. Treffer = true
    52. End if
    53. Wend
    54. Datei.close
    55. If Ladetext = "Lade...................." Then
    56. Ladetext = "Lade"
    57. Else
    58. Ladetext = Ladetext & "."
    59. End if
    60. MsgHTA.InnerHTML = Ladetext
    61. If Treffer = true Then
    62. ArtikelnummernSammlung = ArtikelnummernSammlung & File.Name & "<BR>"
    63. End if
    64. Next
    65. End Sub
    66. If ArtikelnummernSammlung = "" Then
    67. ArtikelnummernSammlung = "In dem angegeben Verzeichnis gab es keine Treffer"
    68. End if
    69. MsgHTA.InnerHTML = ArtikelnummernSammlung
    70. End Sub
    71. </script>
    72. <body bgcolor="F0EEFE">
    73. <P ALIGN="RIGHT"><b><font SIZE="2" color='red' align="right" face='Calibri'>ITAB Harr</font></b></P>
    74. Dieses Tool durchsucht im angegebenen Ordner und allen Unterordnern,<BR>
    75. jeden Datei-Inhalt, nach dem angegeben Suchkriterium.<BR>
    76. Im Anschluss werden die Artikelnummern der Treffer ausgegeben.<BR><BR>
    77. Bitte geben Sie alle Informationen in den Text- ODER Optionsfeldern an.<BR>
    78. Klicken Sie nun auf "start".
    79. <p>
    80. Zu durchsuchender Ordner:<BR>
    81. <input type="text" name="Ordnerangabe_textbox" size="50">
    82. /
    83. <select size="1" name="Ordnerangabe_option" >
    84. <option value=""></option>
    85. <option value="C:\Users\Herkner\Desktop\Neuer Ordner">DXF zu BZ</option>
    86. </select>
    87. <p>
    88. Suchbegriff:<BR>
    89. <input type="text" name="Suchbegriff_textbox" size="50">
    90. /
    91. <select size="1" name="Suchbegriff_option" >
    92. <option value=""></option>
    93. <option value="180°">"Umschlag"</option>
    94. <option value="grav">"Gravur"</option>
    95. </select>
    96. <p>
    97. <input type="button" value="start" name="run_button" onClick="start">
    98. <p>
    99. <font color='red'><span id = "MsgHTA"></span></font>
    100. </body>

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Bot-Like“ ()

    Sicher geht das auch bei Rekursion.
    Schreibe die Subs niemals in einander verschachtelt. Das geht bei den wenigstens Sprachen (außer bei Inline Methods, ist aber eine andere Syntax)

    Rekursion:

    Visual Basic-Quellcode

    1. Sub main
    2. 'do stuff
    3. Call RecursiveCall
    4. End Sub
    5. Sub RecursiveCall
    6. 'tu was
    7. Call RecursiveCall
    8. End Sub
    Das ist meine Signatur und sie wird wunderbar sein!

    Wissenslücke geschlossen :-)

    Danke!! So hat´s geklappt.
    (Ich habe bisher immer nur ein Sub pro Skript benötigt)

    PS: hier noch mein debugter code falls jemand Interesse hat

    Visual Basic-Quellcode

    1. <head>
    2. <title>Verzeichnis_nach_Datei-Inhalt_durchsuchen</title>
    3. <HTA:APPLICATION
    4. APPLICATIONNAME="Verzeichnis_nach_Datei-Inhalt_durchsuchen"
    5. SCROLL="yes"
    6. SINGLEINSTANCE="yes"
    7. >
    8. </head>
    9. <script language="VBScript">
    10. 'Deklaration
    11. Dim Dateiarray, Anhang, AktionSHELL, AktionFSO, Ordner, file, ArtikelnummernSammlung
    12. Dim Textzeile, Suchstring, Treffer, Zeilenposition
    13. 'Objekte
    14. Set AktionFSO = CreateObject("Scripting.FileSystemObject")
    15. Set AktionSHELL = CreateObject("WScript.Shell")
    16. Sub start()
    17. 'Abfragen
    18. If Ordnerangabe_option.Value = "" Then
    19. Ordner = Ordnerangabe_textbox.Value
    20. Else
    21. Ordner = Ordnerangabe_option.Value
    22. End if
    23. If Ordner = "" Then
    24. MsgHTA.InnerHTML = "Bitte geben Sie einen Pfad an."
    25. Exit Sub
    26. End If
    27. If Ordnerangabe_option.Value <> "" AND Ordnerangabe_textbox.Value <> "" Then
    28. MsgHTA.InnerHTML = "Bitte nutzen Sie nur eine Option zur Pfadangabe."
    29. Exit Sub
    30. End If
    31. If Suchbegriff_option.Value = "" Then
    32. Suchstring = Suchbegriff_textbox.Value
    33. Else
    34. Suchstring = Suchbegriff_option.Value
    35. End if
    36. If Suchstring = "" Then
    37. MsgHTA.InnerHTML = "Bitte geben Sie einen Suchbegriff an."
    38. Exit Sub
    39. End If
    40. If Suchbegriff_option.Value <> "" AND Suchbegriff_textbox.Value <> "" Then
    41. MsgHTA.InnerHTML = "Bitte nutzen Sie nur eine Option zur Suchbegriffangabe."
    42. Exit Sub
    43. End If
    44. Set Fld = AktionFSO.GetFolder(Ordner)
    45. DoFolders(Fld)
    46. If ArtikelnummernSammlung = "" Then
    47. ArtikelnummernSammlung = "In dem angegeben Verzeichnis gab es keine Treffer"
    48. End if
    49. MsgHTA.InnerHTML = ArtikelnummernSammlung
    50. ArtikelnummernSammlung = ""
    51. End Sub
    52. '####################################
    53. Sub DoFolders(Folder)
    54. For Each SubFolder In Folder.SubFolders
    55. DoFolders(SubFolder)
    56. Next
    57. 'Auslesen der .txt
    58. For Each File In Folder.Files
    59. Treffer = false
    60. Set Datei = AktionFSO.OpenTextFile (File.Path,1)
    61. While not Datei.AtEndOfStream
    62. Textzeile = Datei.ReadLine
    63. Zeilenposition = instr(1, Textzeile, Suchstring, vbTextCompare)
    64. If Zeilenposition <> 0 Then
    65. Treffer = true
    66. End if
    67. Wend
    68. Datei.close
    69. If Treffer = true Then
    70. Select Case Ergebnisausgabe.Value
    71. Case "1"
    72. ArtikelnummernSammlung = ArtikelnummernSammlung & Left(File.Name,10) & "<BR>"
    73. Case "2"
    74. ArtikelnummernSammlung = ArtikelnummernSammlung & File.Name & "<BR>"
    75. Case "3"
    76. ArtikelnummernSammlung = ArtikelnummernSammlung & File.Path & "<BR>"
    77. End Select
    78. End if
    79. Next
    80. End Sub
    81. </script>
    82. <script language="VBScript">
    83. Sub Ergebnisliste_leeren()
    84. MsgHTA.InnerHTML = ""
    85. End Sub
    86. </script>
    87. <body bgcolor="#CEF6D8">
    88. <P ALIGN="RIGHT"><b><font SIZE="2" color='red' align="right" face='Calibri'>ITAB Harr</font></b></P>
    89. Dieses Tool durchsucht im angegebenen Ordner und allen Unterordnern,<BR>
    90. jeden Datei-Inhalt, nach dem angegeben Suchkriterium.<BR>
    91. Im Anschluss werden die Artikelnummern der Treffer ausgegeben.<BR><BR>
    92. Bitte geben Sie alle Informationen in den Text- ODER Optionsfeldern an.<BR>
    93. Klicken Sie nun auf "start".
    94. <p>
    95. Zu durchsuchender Ordner:<BR>
    96. <input type="text" name="Ordnerangabe_textbox" size="50">
    97. /
    98. <select size="1" name="Ordnerangabe_option" >
    99. <option value=""></option>
    100. <option value="C:\Users\Geht_euch_garnix_an\Desktop\Neuer Ordner">DXF zu BZ</option>
    101. </select>
    102. <p>
    103. Suchbegriff:<BR>
    104. <input type="text" name="Suchbegriff_textbox" size="50">
    105. /
    106. <select size="1" name="Suchbegriff_option" >
    107. <option value=""></option>
    108. <option value="180.00">"Umschlag"</option>
    109. <option value="grav">"Gravur"</option>
    110. </select>
    111. <p>
    112. Ergebnisausgabe:&nbsp;&nbsp;&nbsp;&nbsp;
    113. <select size="1" name="Ergebnisausgabe" >
    114. <option value=1>Artikelnummer</option>
    115. <option value=2>Dateiname</option>
    116. <option value=3>Dateipfad</option>
    117. </select>
    118. <p>
    119. <input type="button" value="Verzeichnis durchsuchen" name="run_button" onClick="start">
    120. <input type="button" value="Ergebnisliste leeren" name="run_button" onClick="Ergebnisliste_leeren">
    121. <p>
    122. <font color='red'><span id = "MsgHTA"></span></font>
    123. </body>

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Bot-Like“ () aus folgendem Grund: ein bug war noch drin