Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Speichern auf beliebigem PC - per VBA

Speichern auf beliebigem PC - per VBA
10.04.2021 10:56:06
Reto
Guten Tag Excel Forum
Ich habe eine Excel-Datenbank woraus viele Dokumente (.xlsx, .csv, .pdf) per Button gespeichert / exportiert werden können.
Zudem ein paar Dateien und Ordner die per Button aufgerufen werden können / sollen.
Das funktioniert soweit problemlos, solang ich es auf meinem(en) Rechner(n) (die auf "retob" lauten), also lokal anwende.
Die Dateien welche gespeichert und exportiert werden können, speichere ich alle auf dem (meinem) Desktop.
Das heisst, dass der Export funktioniert, muss der Benutzername des Rechners identisch sein. Ab einem "fremden" PC würde es nicht mehr funktionieren.
Beispiele Speicherung:
-- Pfad = "C:\Users\retob\OneDrive\Desktop\" & Worksheets("Kontrolle & Übersicht").Range("D2") & "_" & Worksheets("Kontrolle & Übersicht").Range("G1") & "_Versandliste_" & Format(Date, "YYYYMMDD") & ".csv"
-- ActiveWorkbook.SaveAs Filename:="C:\Users\retob\OneDrive\Desktop\" & Sheets("Data").Name & "_Adressliste Rechnungen.xlsx"

Alle Daten und Zugehörigen Dokumente habe ich auf DropBox (cloud) abgelegt.
Ich möchte erreichen, dass andere Benutzer die Datenbank auch soweit gebrauchen können, dass sie die Dateien ebenfalls exportieren können.
Gibt es die Möglichkeit einen Variablen Pfad zum speichern einzubauen? Oder bin ich mit meiner Vermutung richtig, dass das nicht funktionieren kann?
- oder Zugriff von verschiedenen Rechnern (mit verschiedenen Namen) auf eine Cloud. Ist sowas umsetzbar? Vermutlich ergibt sich da wieder das selbe Problem.
Als Notlösung würde ich auf jedem Rechner einen Ordner auf "C:\...." erstellen. Von da aus Könnten die Daten auf Dropbox kopiert werden. Oder automatisch mit einer Backupsoftware kopiert werden lassen.
Bei den Dateien und Ordnern die ich öffnen und aufrufen möchte stehe ich an der selben Stelle an.
Vielen Dank, wenn mir jemand einen Lösungsansatz hat. Was machbar ist, oder wie dass das elegant funktionieren könnte. Oder einen Arschritt, weil ich den Durchblick einfach nicht habe.
Grüsse Reto
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern auf beliebigem PC - per VBA
10.04.2021 11:05:23
ralf_b
Warum rufst du nicht die Speicher und Dateiöffnen Dialoge auf. Dann kann sich jeder den Pfad aussuchen ,den er braucht.
AW: Speichern auf beliebigem PC - per VBA
11.04.2021 19:26:26
Reto
Ciao Ralf
Danke für die Rückmeldung.
Das wäre eine Option, aber etwas umständlich. Je nach gewünschter Aufgabe werden bis zu 6 verschiedene Dateien erstellt und gespeichert.
Grüsse Reto
Anzeige
AW: Speichern auf beliebigem PC - per VBA
10.04.2021 11:14:20
Nepumuk
Hallo Reto,
teste mal:
Public Sub Test()
MsgBox Environ$("OneDrive") & "\Desktop\"
End Sub

Gruß
Nepumuk
AW: Speichern auf beliebigem PC - per VBA
11.04.2021 19:35:40
Reto
Ciao Nepumuk
Wow, das ist es! Der Export funktioniert perfekt so.
Ich habe den Pfad etwas abgeändert, jetzt speichert und findet die Datenbank auch in der DropBox.
Environ$ ("USERPROFILE") & "\Dropbox\....\Exportierte Daten\"
Mein Problem ist damit gelöst. Hoffe es funktioniert auch auf einem MAC - aber das wird sich morgen herausstellen.
Falls du oder jemand noch mag, wozu steht das Dollar Zeichen ?
Vielen Dank, Grüsse
Reto
Anzeige
AW: Speichern auf beliebigem PC - per VBA
11.04.2021 19:42:59
Nepumuk
Hallo Reto,
Environ ohne $ gibt einen Variant Untertype String zurück, mit $ einen String. Der String ist schneller und braucht weniger Speicher.
Gruß
Nepumuk
AW: Speichern auf beliebigem PC - per VBA
11.04.2021 19:44:40
Nepumuk
PS.:
Ich glaube nicht dass es auf einem MAC Umgebungsvariablen gibt.
Gruß
Nepumuk
AW: Speichern auf beliebigem PC - per VBA
11.04.2021 19:51:04
Reto
Danke Für die Antworten...
also sieht es düster aus, das auf dem MAC so einzurichten?
Naja, es ist die Chefin, dann muss Sie sich noch einen Windows PC kaufen...
Gruss
Reto
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA: Speichern auf beliebigem PC


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei auf dem Desktop zu speichern, unabhängig vom Benutzernamen des PCs, kannst du die Environ-Funktion verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11 in Excel.
  2. Erstelle ein neues Modul:

    • Rechtsklicke im Projektfenster und wähle Einfügen -> Modul.
  3. Füge den folgenden Code ein:

    Sub SpeichernAufDesktop()
       Dim Dateiname As String
       Dateiname = Environ$("OneDrive") & "\Desktop\MeineDatei.xlsx"
       ActiveWorkbook.SaveAs Filename:=Dateiname
    End Sub
  4. Führe das Makro aus:

    • Gehe zurück zu Excel, drücke ALT + F8, wähle SpeichernAufDesktop und klicke auf Ausführen.

Mit diesem Code wird die Excel-Datei immer auf dem Desktop des Benutzers gespeichert, unabhängig davon, ob er einen anderen PC verwendet.


Häufige Fehler und Lösungen

  • Fehler: "Der Pfad ist ungültig"
    Lösung: Stelle sicher, dass der OneDrive-Ordner existiert und dass die Umgebungsvariable korrekt ist. Du kannst dies überprüfen, indem du MsgBox Environ$("OneDrive") im VBA-Code verwendest.

  • Fehler: "Excel kann die Datei nicht speichern"
    Lösung: Überprüfe die Berechtigungen des Benutzers, um sicherzustellen, dass er Schreibzugriff auf den Desktop hat.


Alternative Methoden

Eine Alternative zur Verwendung von Environ ist die Verwendung von Dialogen, die dem Benutzer die Möglichkeit geben, einen Speicherort auszuwählen. Hier ein Beispiel:

Sub SpeicherDialog()
    Dim Dateiname As Variant
    Dateiname = Application.GetSaveAsFilename(FileFilter:="Excel-Dateien (*.xlsx), *.xlsx")
    If Dateiname <> False Then
        ActiveWorkbook.SaveAs Filename:=Dateiname
    End If
End Sub

Diese Methode ermöglicht es dem Benutzer, den Speicherort selbst auszuwählen, was besonders nützlich ist, wenn verschiedene PCs verwendet werden.


Praktische Beispiele

  1. Speichern einer Excel-Tabelle auf dem Desktop: Du kannst den gleichen Code anpassen, um eine Tabelle oder einen bestimmten Bereich zu exportieren:

    Sub ExportiereTabelle()
       Dim ZielPfad As String
       ZielPfad = Environ$("OneDrive") & "\Desktop\ExportierteTabelle.xlsx"
       Worksheets("Tabelle1").Copy
       ActiveWorkbook.SaveAs Filename:=ZielPfad
    End Sub
  2. Zugriff auf OneDrive von einem fremden PC: Wenn du auf OneDrive von einem anderen PC zugreifen möchtest, stelle sicher, dass der Benutzer mit seinem OneDrive-Konto angemeldet ist.


Tipps für Profis

  • Verwende Environ("USERPROFILE"): Wenn du die Dateien nicht nur auf dem Desktop, sondern auch in anderen Ordnern speichern möchtest, kannst du Environ("USERPROFILE") nutzen, um den Pfad dynamisch zu generieren.

  • Automatisierung mit Cloud-Diensten: Berücksichtige die Verwendung von excel vba cloud, um die Automatisierung des Datei-Uploads zu verbessern.


FAQ: Häufige Fragen

1. Was bedeutet das Dollarzeichen in Environ$?
Das Dollarzeichen bedeutet, dass die Funktion einen String zurückgibt, was in der Regel schneller und speichereffizienter ist.

2. Funktioniert dieser VBA-Code auch auf einem Mac?
Leider gibt es auf dem Mac keine direkten Äquivalente zu den Windows-Umgebungsvariablen. Du müsstest alternative Methoden verwenden, um den Speicherort zu bestimmen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige