Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Argument ist nicht optional

Begonnen von zorlayan, April 30, 2019, 12:09:59

⏪ vorheriges - nächstes ⏩

zorlayan

Hallo Freunde,

folgender Code sollte eine Word-Datei öffnen aber tut nicht und bringt die Meldung im Betreff.
Was könnte sein?

Private Sub Word_Click()
OpenWord ("C:\Projekt\Inland.docx")
End Sub

den folgenden Code habe ich im Internet gefunden, laut berichten sollte funktionieren aber tut nicht.

Public Sub OpenWord(Dateiname As String)

Dim appWord As Word.Application
Dim docWord As Word.Document

    appWord.Documents.Open , ReadOnly:=True
    appWord.Visible = True
    appWord.Activate
    AppActivate appWord.Caption
End Sub


Verweise für Office habe ich schon aktiviert!

Vielen Dank,
Zorlayan



DF6GL

Hallo,


appWord.Documents.Open , ReadOnly:=True


Es fehlt die Angabe der Datei, die geöffnet werden soll.



Die VBA-Hilfe und/oder der Objektkatalog sollte/n weiteren Aufschluss geben..

zorlayan

Danke für die schnellere Antwort aber habe ich nicht in den oberen Code die Datei angegeben?  ???

PhilS

Zitat von: zorlayan am April 30, 2019, 12:35:30
Danke für die schnellere Antwort aber habe ich nicht in den oberen Code die Datei angegeben?  ???
Nicht dort, wo Word ihn braucht. Nämlich hier:appWord.Documents.Open , ReadOnly:=True
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

zorlayan

#4
ich habe in einem anderen Forum funktionierenden Code gefunden.
Hier:
Public Sub OpenWord ()
    Dim objWord As Word.Application
   
    Set objWord = CreateObject("Word.Application")
    With objWord
        .Visible = True
        .Documents.Open "C:\temp\test.doc"       'das zu öffnende Worddokument
    End With
    objWord.ActiveDocument.PrintOut                                'ausdrucken
    ' nicht speichern
    objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
    objWord.Quit
    Set objWord = Nothing
End Sub


Ich kann die Word-Datei öffnen aber wie werde ich diesen Public Sub aus einem Privaten Sub aufrufen?
Mit welchem Befehl? Call etwa?


PhilS

Zitat von: zorlayan am Mai 01, 2019, 21:35:52
ich habe in einem anderen Forum funktionierenden Code gefunden.
Code aus dem Internet zu kopieren ist oft ein brauchbarer Startpunkt. - Als nächsten Schritt solltest du dann versuchen, den Code wenigstens in den Kernpunkten auch zu verstehen. Dabei kann es helfen die konkreten Unterschiede in verschiedene gefundene Varianten zu vergleichen/analysieren.

Wenn du das mit deinem Code machst und die Hinweise in dem Thread hier nochmal dazu liest, solltest du in wenigen Minuten die Lösung finden. - Dabei lernst du wahrscheinlich mehr, als wenn hier jemand die Lösung postet und du sie nur in deinen Code kopierst. Wenn du nicht weiterkommst helfe ich gern.

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Milvus

Zitat von: zorlayan am Mai 01, 2019, 21:35:52
ich habe in einem anderen Forum funktionierenden Code gefunden.
Hier:
Public Sub OpenWord ()
    Dim objWord As Word.Application
   
    Set objWord = CreateObject("Word.Application")
    With objWord
        .Visible = True
        .Documents.Open "C:\temp\test.doc"       'das zu öffnende Worddokument
    End With
    objWord.ActiveDocument.PrintOut                                'ausdrucken
    ' nicht speichern
    objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
    objWord.Quit
    Set objWord = Nothing
End Sub


Ich kann die Word-Datei öffnen aber wie werde ich diesen Public Sub aus einem Privaten Sub aufrufen?
Mit welchem Befehl? Call etwa?

Hi,

call sollte gehen, ohne auch.

In dem Code ist das enthalten, was im anderen gefehlt hat. Vergleiche mal die Zeilen mit Documents.open

In der 1. Variante hat das Dokument, welches geöffnet werden soll, gefehlt.
Genau das wollte Dir der Comilier mit der Fehlermeldung "Argument is nicht optional" damit sagen.

Zugegeben, die Meldung klingt erst mal überkomisch.

Aber Du sprichst mit Document.Open eine Methode der Klasse Word.Application an. Und diese Methode (was letztendlich eine Funktion oder Prozedur ist) möchte gerne einen Parameter haben. Dieser Paramter ist das Dokument, welches geöffnet werden soll. Ruft man diese Methode von außen auf (was Du machst), spricht man auch gerne von einem Argument (gemeint ist der Parameter).

Du hast die Methode ohne Argument zu übergeben aufgerufen. Und da hat der Compiler Dir gesagt, dass die Methode ein Argument benötigt, da - und das muss man verstehen -  ein Argument auch optional sein kann (was es aber bei der Methode hier nicht ist). D.h., es muss da sein!

Ist ja auch logisch.
Stell Dir vor, Du hast einen Aktenschrank mit 100 Akten und dein Chef macht Dir Druck mit dem Befehl: Öffne die Akte.

Was machst Du? Welche der Akte öffnest Du?


zorlayan

vielen Dank, ausführlich erklärt.
Ich brauche wohl noch einige Übungen damit ich kapiere  ;)