.VBS über Excel lauffähig machen

  • VBScript

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    .VBS über Excel lauffähig machen

    Moin

    Ich habe eine .VBS Datei gefunden die scheinbar genau das macht was ich brauche. Aufgrund von Sicherheitseinstellungen darf ich aber keine .vbs Dateien ausführen. Eigene Makros aus Excel heraus laufen aber ohne Probleme.
    Den ersten Teil bekomme ich auch ans laufen, aber bei "Sub OrdnerSucheIn (verz)" (Zeile 93) läuft es dann auf Fehler. Habe den Code einfach als Modul eingefügt und ausgeführt. Was muss ich ändern, damit es komplett läuft? Danke!

    Gruß
    Knut



    Visual Basic-Quellcode

    1. Dim ordner(999)
    2. set MyFiles=CreateObject("Scripting.FileSystemObject")
    3. Set AppShell = CreateObject("Shell.Application")
    4. Set BrowseDir = AppShell.BrowseForFolder(0, " Wählen Sie den Ordner der zu konvertierenden DOC-Dateien.", &H1, 17)
    5. On Error Resume Next
    6. verz = BrowseDir.ParentFolder.ParseName(BrowseDir.Title).Path
    7. If Err.Number > 0 Then
    8. i = InStr(BrowseDir, ":")
    9. verz = Mid(BrowseDir, i - 1, 1) & ":\"
    10. End If
    11. If verz = "" Then Wscript.quit
    12. ordner(a) = verz
    13. Set BrowseDir = AppShell.BrowseForFolder(0, " Wählen Sie den Zielordner. Ohne Zielangabe werden alle Dateien in den ursprünglichen Ordnern abgelegt.", &H1, 17)
    14. ziel = BrowseDir.ParentFolder.ParseName(BrowseDir.Title).Path
    15. If Err.Number > 0 Then
    16. i = InStr(BrowseDir, ":")
    17. ziel = Mid(BrowseDir, i - 1, 2)
    18. End If
    19. err.clear
    20. wdFormat=inputbox("(1) Nur Text - ANSI" & chr(13) & chr(13) & "(2) DOS-Text - ASCII" & chr(13) & chr(13) & "(3) RTF" & chr(13) & chr(13) & "(4) HTML" & chr(13)," DOC-Dateien im folgendem Format speichern:")
    21. wdformat=wdformat * 2
    22. if err.number > 0 then wscript.quit
    23. select case wdformat
    24. case 2
    25. erweiterung=".TXT"
    26. case 4
    27. erweiterung=".ASC"
    28. case 6
    29. erweiterung=".RTF"
    30. case 8
    31. erweiterung=".HTM"
    32. case else
    33. wscript.quit
    34. end select
    35. OrdnerSucheIn ordner(a)
    36. Set ObjWord = CreateObject("Word.Application")
    37. with ObjWord
    38. .visible=TRUE
    39. .application.WindowState = 0
    40. .Documents.Add
    41. .top=3
    42. .left=100
    43. .height=22
    44. .width=400
    45. .Selection.TypeText "PROTOKOLL DER KONVERTIERUNG" & chr(13) & chr(13)
    46. end with
    47. For w = 0 To a
    48. Set verz=MyFiles.GetFolder(ordner(w))
    49. Set dat = verz.Files
    50. For Each datei In dat
    51. worddatei = datei.Path
    52. If Right(UCase(worddatei), 4) = ".DOC" Then
    53. if ziel <> "" then
    54. outdatei = ziel & "\" & left(datei.name, len(datei.name) - 4) & erweiterung
    55. else
    56. outdatei = left(worddatei, len(worddatei) - 4) & erweiterung
    57. end if
    58. do
    59. err.clear
    60. set kontrolle=myFiles.GetFile(outdatei)
    61. if err.number = 0 then
    62. outdatei = left(outdatei,len(outdatei)-4) & "#" & erweiterung
    63. end if
    64. loop until err.number > 0
    65. n = n + 1
    66. with ObjWord
    67. .Documents.Open worddatei
    68. .ActiveDocument.SaveAs outdatei, wdformat
    69. .ActiveDocument.Close
    70. .Selection.TypeText worddatei & chr(13) & "===> " & outdatei & chr(13) & chr(13)
    71. end with
    72. End If
    73. Next
    74. Next
    75. If n = 0 Then n = "0"
    76. with ObjWord
    77. .ActiveWindow.ActivePane.View.Zoom.Percentage = 80
    78. .Selection.TypeText chr(13) & n & " Datei(en) wurde(n) konvertiert."
    79. .top=3
    80. .left=3
    81. .height=400
    82. .width=600
    83. end with
    84. Sub OrdnerSucheIn (verz)
    85. set verz=MyFiles.GetFolder(verz)
    86. Set MoreFolders = verz.SubFolders
    87. For Each AktuellerOrdner In MoreFolders
    88. a = a + 1
    89. ordner(a)=AktuellerOrdner
    90. OrdnerSucheIn AktuellerOrdner
    91. Next
    92. End Sub


    CodeTags korrigiert ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Willkommen im Forum!

    Die gewünschte Antwort kann ich Dir nicht geben, habe seit 20 Jahren nicht mehr mit WSH (Windows Scripting Host) und VBS (VB-Script) gearbeitet.
    Excel kann kein nicht ohne Kniff VBS, sondern VBA (Visual Basic for Appliction), das ist *nicht* dasselbe.
    Das nur mal zur Aufklärung.

    Nachtrag: nach @petaod's Antwort angepasst und wieder etwas gelernt :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dksksm“ ()

    Dksksm schrieb:

    Excel kann kein VBS, sondern VBA
    VBS in VBA zu testen und auszuführen, ist relativ einfach möglich.
    VBS ist ein Subset von VBA.

    @Knut
    Wenn du das VBS unter VBA zum Laufen kriegen willst, musst du den impliziten VBS-Prozedurrahmen in VBA explizit einfügen.
    Also deine Hauptprozedur in eine Sub kapseln.
    Und die globalen Variablen ausserhalb deklarieren

    Visual Basic-Quellcode

    1. Dim ordner(999), MyFiles, AppShell
    2. Sub RunVBS()
    3. Set MyFiles = CreateObject("Scripting.FileSystemObject")
    4. Set AppShell = CreateObject("Shell.Application")
    5. '...
    6. End Sub
    7. Sub OrdnerSucheIn(verz)
    8. '...
    9. End Sub
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    Natürlich :D

    Der Code läuft zwar durch, macht aber nicht das was er soll. Sprich, es werden keine Dateien konvertiert.
    Ich habe hier noch ein Skript gefunden das bei mir funktioniert, allerdings immer nur einen Ordner konvertiert. Vielleicht schaffe ich es ja beide zu kombinieren....

    Viele Grüße
    Knut