Laufzeitfehler 5: Ungültiger Prozeduraufruf oder ungültiges Argument bei neuer Word Version

  • Word

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

    Laufzeitfehler 5: Ungültiger Prozeduraufruf oder ungültiges Argument bei neuer Word Version

    Hi,

    ein Bekannter hat mich um seine Hilfe gebeten.
    Er hat ein VBA Script welches Ihm bei seinen Word Dokumenten hilft.
    Nachdem er auf die aktuelle Word Version upgedatet hat bekommt er folgende Fehlermeldung:

    Laufzeitfehler 5: Ungültiger Prozeduraufruf oder ungültiges Argument

    Da ich mich in VBA nicht auskenne würde ich mich um eine Unterstützung freuen.

    Hier das Script:

    Quellcode

    1. Private Sub Command1_Click()
    2. StartScreen.Show
    3. Unload WADatenbank
    4. End Sub
    5. Private Sub Command2_Click()
    6. Open BasisVerz & "\WA\" & File1.FileName For Input As #1
    7. Open BasisVerz & "\WA\temp.tmp" For Output As #2
    8. Input #1, tmp1
    9. Write #2, Text1.Text
    10. Do While Not EOF(1)
    11. Input #1, temp2
    12. Write #2, temp2
    13. Loop
    14. Close #1
    15. Close #2
    16. Kill (BasisVerz & "\WA\" & File1.FileName)
    17. AlterName = BasisVerz & "\WA\temp.tmp": Neuername = BasisVerz & "\WA\" & File1.FileName
    18. Name AlterName As Neuername
    19. End Sub
    20. Private Sub Command3_Click()
    21. If List1.ListIndex <> -1 Then
    22. 'Set objWordComment = New Word.Application
    23. ''Set objWord = New Word.Document
    24. ' With objWordComment
    25. ' .Visible = False
    26. ' '.WindowState = 1 'wdWindowStateNormal
    27. ' '.Top = 0
    28. ' '.Left = 0
    29. ' '.Width = .PixelsToPoints(640)
    30. ' '.Height = .PixelsToPoints(480)
    31. ' '.StatusBar = "Word " & .Version & " (Build: " & .Build & ")"
    32. ' tems = Split(List1.List(List1.ListIndex), "-")
    33. ' tems2 = tems(2)
    34. ' tempver = Left(tems2, Len(tems2) - 4)
    35. ' .Documents.Open FileName:=BasisVerz & "\" & tempver & "\" & List1.List(List1.ListIndex)
    36. ' ActiveDocument.BuiltInDocumentProperties(wdPropertyComments).Value = Text3.Text
    37. ' .Documents.Close
    38. ' .Application.Quit
    39. 'End With
    40. ''AppActivate objWord
    41. 'Set objWordComment = Nothing
    42. On Error Resume Next
    43. tems = Split(List1.List(List1.ListIndex), "-")
    44. tems2 = tems(2)
    45. tempver = Left(tems2, Len(tems2) - 4)
    46. Open BasisVerz & "\" & tempver & "\" & List1.List(List1.ListIndex) & ".info" For Output As #2
    47. Write #2, Text3.Text
    48. Close #2
    49. End If
    50. End Sub
    51. Private Sub Command4_Click()
    52. If List1.ListIndex <> -1 Then
    53. erg = MsgBox("Wollen Sie die Datei " & List1.List(List1.ListIndex) & " wirklich löschen?", vbYesNo, "Sicherheitsabfrage")
    54. If erg = vbYes Then
    55. tems = Split(List1.List(List1.ListIndex), "-")
    56. tems2 = tems(2)
    57. tempver = Left(tems2, Len(tems2) - 4)
    58. Kill (BasisVerz & "\" & tempver & "\" & List1.List(List1.ListIndex))
    59. Kill (BasisVerz & "\" & tempver & "\" & List1.List(List1.ListIndex) & ".info")
    60. List1.RemoveItem (List1.ListIndex)
    61. Open BasisVerz & "\WA\" & File1.FileName For Input As #1
    62. Open BasisVerz & "\WA\temp.tmp" For Output As #2
    63. Input #1, tmp1
    64. Write #2, tmp1
    65. Do While List1.ListCount > 0
    66. List1.ListIndex = 0
    67. Write #2, List1.List(List1.ListIndex)
    68. List1.RemoveItem (List1.ListIndex)
    69. Loop
    70. Close #1
    71. Close #2
    72. Kill (BasisVerz & "\WA\" & File1.FileName)
    73. AlterName = BasisVerz & "\WA\temp.tmp": Neuername = BasisVerz & "\WA\" & File1.FileName
    74. Name AlterName As Neuername
    75. AktWA = File1.FileName
    76. If File1.FileName <> "" Then
    77. Text2.Text = Mid(File1.FileName, 3)
    78. On Error Resume Next
    79. Open BasisVerz & "\WA\" & File1.FileName For Input As #1
    80. Input #1, temp1
    81. Do While Not EOF(1)
    82. Input #1, temp2
    83. List1.AddItem temp2
    84. Loop
    85. Close #1
    86. Text1.Text = temp1
    87. End If
    88. End If
    89. End If
    90. End Sub
    91. Private Sub File1_Click()
    92. Text3.Text = ""
    93. List1.Clear
    94. List2.Clear
    95. AktWA = File1.FileName
    96. If File1.FileName <> "" Then
    97. Text2.Text = Mid(File1.FileName, 3)
    98. On Error Resume Next
    99. Open BasisVerz & "\WA\" & File1.FileName For Input As #1
    100. Input #1, temp1
    101. Do While Not EOF(1)
    102. Input #1, temp2
    103. List2.AddItem temp2
    104. Loop
    105. Close #1
    106. Text1.Text = temp1
    107. For za = 0 To List2.ListCount - 1
    108. If Mid(List2.List(za), 18, 2) = "An" Then
    109. List1.AddItem (List2.List(za))
    110. List2.RemoveItem (za)
    111. za = za - 1
    112. End If
    113. Next za
    114. For za = 0 To List2.ListCount - 1
    115. If Mid(List2.List(za), 18, 2) = "Ar" Then
    116. List1.AddItem (List2.List(za))
    117. List2.RemoveItem (za)
    118. za = za - 1
    119. End If
    120. Next za
    121. For za = 0 To List2.ListCount - 1
    122. If Mid(List2.List(za), 18, 2) = "Au" Then
    123. List1.AddItem (List2.List(za))
    124. List2.RemoveItem (za)
    125. za = za - 1
    126. End If
    127. Next za
    128. For za = 0 To List2.ListCount - 1
    129. If Mid(List2.List(za), 18, 2) = "Be" Then
    130. List1.AddItem (List2.List(za))
    131. List2.RemoveItem (za)
    132. za = za - 1
    133. End If
    134. Next za
    135. For za = 0 To List2.ListCount - 1
    136. If Mid(List2.List(za), 18, 2) = "Br" Then
    137. List1.AddItem (List2.List(za))
    138. List2.RemoveItem (za)
    139. za = za - 1
    140. End If
    141. Next za
    142. For za = 0 To List2.ListCount - 1
    143. If Mid(List2.List(za), 18, 2) = "Fa" Then
    144. List1.AddItem (List2.List(za))
    145. List2.RemoveItem (za)
    146. za = za - 1
    147. End If
    148. Next za
    149. For za = 0 To List2.ListCount - 1
    150. If Mid(List2.List(za), 18, 2) = "Li" Then
    151. List1.AddItem (List2.List(za))
    152. List2.RemoveItem (za)
    153. za = za - 1
    154. End If
    155. Next za
    156. For za = 0 To List2.ListCount - 1
    157. If Mid(List2.List(za), 18, 2) = "Re" Then
    158. List1.AddItem (List2.List(za))
    159. List2.RemoveItem (za)
    160. za = za - 1
    161. End If
    162. Next za
    163. If List1.ListCount > 0 Then List1.ListIndex = List1.ListCount - 1
    164. End If
    165. End Sub
    166. Private Sub Form_Load()
    167. Me.Left = MDIForm1.Width / 2 - Me.Width / 2 '- MDIForm1.Left
    168. Me.Top = MDIForm1.Height / 2 - Me.Height / 2 '- MDIForm1.Top
    169. If RunsLokal = True Then
    170. Command2.Enabled = False
    171. Command4.Enabled = False
    172. Frame5.Enabled = False
    173. End If
    174. File1.Path = BasisVerz & "\WA"
    175. End Sub
    176. Private Sub List1_Click()
    177. Text3.Text = ""
    178. 'If List1.ListIndex <> -1 Then
    179. 'Set objWordComment = New Word.Application
    180. ''Set objWord = New Word.Document
    181. ' With objWordComment
    182. ' .Visible = False
    183. ' '.WindowState = 1 'wdWindowStateNormal
    184. ' '.Top = 0
    185. ' '.Left = 0
    186. ' '.Width = .PixelsToPoints(640)
    187. ' '.Height = .PixelsToPoints(480)
    188. ' '.StatusBar = "Word " & .Version & " (Build: " & .Build & ")"
    189. ' tems = Split(List1.List(List1.ListIndex), "-")
    190. ' tems2 = tems(2)
    191. ' tempver = Left(tems2, Len(tems2) - 4)
    192. ' .Documents.Open FileName:=BasisVerz & "\" & tempver & "\" & List1.List(List1.ListIndex)
    193. ' Text3.Text = .ActiveDocument.BuiltInDocumentProperties(wdPropertyComments).Value
    194. ' .Documents.Close
    195. ' .Application.Quit
    196. 'End With
    197. ''AppActivate objWord
    198. 'Set objWordComment = Nothing
    199. 'End If
    200. If List1.ListIndex <> -1 Then
    201. On Error GoTo nofile
    202. tems = Split(List1.List(List1.ListIndex), "-")
    203. tems2 = tems(2)
    204. tempver = Left(tems2, Len(tems2) - 4)
    205. Open BasisVerz & "\" & tempver & "\" & List1.List(List1.ListIndex) & ".info" For Input As #2
    206. Input #2, datinfo
    207. Close #2
    208. Text3.Text = datinfo
    209. End If
    210. Exit Sub
    211. nofile:
    212. Text3.Text = ""
    213. End Sub
    214. Private Sub List1_DblClick()
    215. If List1.ListIndex <> -1 Then
    216. Set objWord = New Word.Application
    217. 'Set objWord = New Word.Document
    218. With objWord
    219. .Visible = True
    220. .WindowState = 1 'wdWindowStateNormal
    221. '.Top = 0
    222. '.Left = 0
    223. '.Width = .PixelsToPoints(640)
    224. '.Height = .PixelsToPoints(480)
    225. .StatusBar = "Word " & .Version & " (Build: " & .Build & ")"
    226. tems = Split(List1.List(List1.ListIndex), "-")
    227. tems2 = tems(2)
    228. tempver = Left(tems2, Len(tems2) - 4)
    229. .Documents.Open FileName:=BasisVerz & "\" & tempver & "\" & List1.List(List1.ListIndex)
    230. ' MsgBox .ActiveDocument.BuiltInDocumentProperties(wdPropertyAuthor).Value
    231. End With
    232. AppActivate objWord
    233. Set objWord = Nothing
    234. End If
    235. End Sub
    236. Private Sub Text2_KeyUp(KeyCode As Integer, Shift As Integer)
    237. For za = 0 To File1.ListCount
    238. If File1.List(za) = "WA" & Format(Val(Text2.Text), "0000") Then
    239. File1.ListIndex = za
    240. Exit For
    241. Else
    242. File1.ListIndex = -1
    243. End If
    244. Next za
    245. End Sub
    Da AppActivate einen FensterTITEL und kein Objekt erwartet, dürfte klar sein, wo der Fehler liegt.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Na Moment, ich fand die Ursache für den genannten Fehler. Ob das alles ist, um das Ganze zum Laufen zu bringen, entzieht sich meiner Kenntnis.
    Was da jetzt reinkommt, kommt auf Word drauf an. Es reicht normalerweise, wenn nur ein Teil des Titels der zu aktivierenden Anwendung als Parameter bei AppActivate steht. Wenn Du also das Dokument 187.docx geladen hast, dann steht ja in der Word-Titelleiste bei Word 2016 eben genau das: "187.docx". Das kann dann bei AppActivate verwendet werden:

    Visual Basic-Quellcode

    1. AppActivate "187.docx"

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.
    Ich glaube sogar, hier ist AppActivate gar nicht die Methode der Wahl.
    Da würde ich eher objWord.Activate und / oder objWord.ActiveDocument.Select verwenden.

    P.S.:

    conny schrieb:

    auf die aktuelle Word Version upgedatet

    conny schrieb:

    2003 -> 2013
    Ich würde mal sagen:
    Von einer Uralt-Version auf eine etwas neuere.
    Aktuell wäre 2019.
    Versuche, in der Beschreibung exakt zu sein, wenn du uns nicht in die Irre führen willst.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

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