Microsoft Excel

Herbers Excel/VBA-Archiv

Objekt erforderlich


Betrifft: Objekt erforderlich von: Lukas
Geschrieben am: 29.09.2017 10:48:30

Hallo zusammen,

bin neu hier, aber da ich immer häufiger mich an VBA Programmierung versuche, fühle ich mich hier sehr gut aufgehoben :-)

Ich komme auch sofort auf mein erstes Problem. Ich habe ein Makro geschrieben, mit dem ich eine Daten Verbindung mit einer *.csv aktualisiere, im Anschluss die alte csv lösche und eine vorhandene leer Datei in den Ordner kopiere, wo sich die verbundene csv befand.

Hier der Code:

Sub Refresh()
Pfad$ = ThisWorkbook.Path
Ablage$ = Pfad$ + "\_"

    ActiveWorkbook.Connections("Ablage").Refresh
    Call Aktuell
    Kill Pfad$ + "\_\Ablage.csv"
    alt_datei$ = Pfad$ + "\___Vorlagen\Ablage.csv"
    Set datei_objekt = fs.GetFile(alt_datei$)
    datei_objekt.Copy Ablage$, True
    Call Filter_setzen
    Call Filter_setzen
            
End Sub


Ich bekomme als Fehlermeldung "Objekt erforderlich" an dieser Stelle:
Set datei_objekt = fs.GetFile(alt_datei$)

Alles ist richtig geschrieben, die Vorlage-Datei ist vorhanden.

Ich weiß echt nicht weiter. Wahrscheinlich irgendetwas einfaches, das mich im Nachheinein erröten lässt.....

Gruß
Lukas

  

Betrifft: Ist "fs" deklariert und zugewiesen? von: Michael (migre)
Geschrieben am: 29.09.2017 10:52:02

Hallo Lukas!

Fs ist ziemlich sicher ein Dateisystem-Objekt (Filesystemobject); aber wurde das ordentlich deklariert und zugewiesen? Sonst kann natürlich auf dessen Methoden nicht zugegriffen werden...

LG
Michael


  

Betrifft: AW: Ist "fs" deklariert und zugewiesen? von: Lukas
Geschrieben am: 29.09.2017 11:00:35

Ahhh God Damn.....

So ist es wenn man sich mit copy/paste an vorhandenen Makros bedient! :-P

Danke!


  

Betrifft: Kommt vor ;-), lg und owT von: Michael (migre)
Geschrieben am: 29.09.2017 11:02:30




  

Betrifft: AW: Kommt vor ;-), lg und owT von: Lukas
Geschrieben am: 29.09.2017 11:08:03

Ok Nächste Zeile. Mühsam ernährt sich das Eichhörnchen...

Folgende Fehlermeldung: Zugriff verweigert.

bei:
datei_objekt.Copy Ablage$, True

Ich muss dazu sagen, ich bin mit meinem Arbeitsrechner administrativ relativ stark eingeschränkt. Aber diese Funktion funktioniert in einem anderen Makro das auf die selbe Ordner Struktur zugreift.

Any Ideas?

Vielen Dank im Vorraus!


  

Betrifft: Das macht so keinen Sinn von: Michael (migre)
Geschrieben am: 29.09.2017 11:15:42

Lukas,

...wenn Du nur Codefetzen hier hinrotzt. Zeige Deinen kompletten Code und gib dann dazu an wo (Zeile) welcher Fehler auftritt.

Fraglich ist hier Einiges: Du willst eine Datei kopieren? Die Methode dazu ist meines Wissens CopyFile, nicht nur Copy, und die verlangt eine Quell- UND Zieladresse, neben der Info ob Überschrieben werden soll oder nicht.

Wenn Du fremden Code einsetzt solltest Du dennoch wissen, was der tut (tun soll) ;-).

LG
Michael


  

Betrifft: AW: Das macht so keinen Sinn von: Lukas
Geschrieben am: 29.09.2017 11:23:26

Hallo Michael,

verzeih, ich dachte mein Code aus dem Hauptbeitrag wäre in der Antwort sichtbar.

Sub Refresh()
Pfad$ = ThisWorkbook.Path
Ablage$ = Pfad$ + "\_"
Set fs = CreateObject("Scripting.FileSystemObject")

    ActiveWorkbook.Connections("Ablage").Refresh
    Call Aktuell
    Kill Pfad$ + "\_\Ablage.csv"
    alt_datei$ = Pfad$ + "\___Vorlagen\Ablage.csv"
    Set datei_objekt = fs.GetFile(alt_datei$)
    datei_objekt.Copy Ablage$, True
    Call Filter_setzen
    Call Filter_setzen
            
End Sub
Der Fehler Zugriff verweigert erscheint bei der Zeile:
datei_objekt.Copy Ablage$, True

Die Methode CopyFile wird nicht unterstützt.

Danke vielmals.


  

Betrifft: AW: Das macht so keinen Sinn von: Lukas
Geschrieben am: 29.09.2017 11:33:22

Ich hab's, trotzdem Danke!

Sub Refresh()
Pfad$ = ThisWorkbook.Path
Ablage$ = Pfad$ + "\_"
Set fs = CreateObject("Scripting.FileSystemObject")

    ActiveWorkbook.Connections("Ablage").Refresh
    Call Aktuell
    Kill Pfad$ + "\_\Ablage.csv"
    alt_datei$ = Pfad$ + "\___Vorlagen\Ablage.csv"
    Set datei_objekt = fs.GetFile(alt_datei$)
    datei_objekt.Copy Ablage$, True
    Call Filter_setzen
    Call Filter_setzen
            
End Sub
Bei
Ablage$ = Pfad$ + "\_"
Fehlte ein "\"


  

Betrifft: Nochmal... von: Michael (migre)
Geschrieben am: 29.09.2017 11:41:17

Hallo Lukas,

...Du verwendest die falsche Methode und das falsche Objekt:

Dim fs As Object: Set fs = CreateObject("Scripting.FileSystemObject")
    fs.copyfile "VollerPfadAlteDatei", "VollerPfadNeueDatei", True
Siehe auch: https://msdn.microsoft.com/en-us/library/aa265015(v=vs.60).aspx

LG
Michael


  

Betrifft: AW: Nochmal... von: mmat
Geschrieben am: 29.09.2017 17:10:13

Hallo Michael,

ähm, sorry, aber

Copyfile ist eine Methode des Filesystemobjekts

Copy ist eine Methode eines Dateiobjekts

siehe:
https://msdn.microsoft.com/en-us/library/aa265014(v=vs.60).aspx

Also rein syntaktisch scheint die eine Zeile OK zu sein

vg, MM


Beiträge aus den Excel-Beispielen zum Thema "Objekt erforderlich"