VBA Datei kopieren, Pfad speichern

Moderator: ModerationP

VBA Datei kopieren, Pfad speichern

Beitragvon Dancing Lance » 08. Feb 2019, 09:25

HAllo,
ich suche nach einem Code der folgendes macht:
(WORD 2010)

1. eine Excel-Datei aus einem immergleichen Ordner kopieren (die Datei muss nicht geöffnet werden)
2. in einem selbstgewählten Pfad abspeichern
3. dieser Pfad soll beim nächsten Öffnen der Word-Datei noch vorhanden sein und
4. es soll überprüft werden, ob die Excel-Datei unter dem Pfad vorhanden ist oder nicht

Ich bin VBA-Autodidakt und habe mir die Codes aus Foren wie dieses zusammengesucht, bin aber mit dieser Aufgaben hoffnungslos überfordert. :oops:

Der Code soll dazu dienen, dass Werte aus einer WORD-Tabelle automatisch in Excel gesammelt werden (so eine Art Statistik). Jeder der die WORD-Datei nutzt, speichert die Statistik aber in einem anderen Ordner ab und wenn die Excel-Datei im Ordner schon vorhanden ist, braucht sie nicht aus dem "Vorlagen-Ordner" kopiert werden.

Den Export von Word nach Excel habe ich hinbekommen, aber hier stehe ich vor einem Rätsel.

Ich hoffe ihr könnt mir helfen.

Grüße
Lance
Dancing Lance
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 13. Jan 2019, 13:17

Re: VBA Datei kopieren, Pfad speichern

Beitragvon Dancing Lance » 11. Feb 2019, 15:42

Hi,
ich habe jetzt einen Anfang gefunden.
Mit dem folgenden Code wird die Excel-Datei aus dem bestimmten Ordner ausgewählt und ein Speichern unter-Dialog wird geöffnet.
So, wie ich das wollte. Das Dateiformat ist aber keine .xlsx, sondern es werden nur WORD-Formate angeboten.
Wie kann ich gleich das richtige Dateiformat einbinden?


Code: Alles auswählen
Sub Speichern_unter()

Dim dialog As Object
Dim pfad As String

pfad = "C:\Testpfad\Ordner\Datei.xlsx"
Set dialog = Application.FileDialog(msoFileDialogSaveAs)
With dialog
.InitialFileName = pfad
.Show
End With
If dialog <> False Then dialog.Execute
End Sub


Gruß Lance
Dancing Lance
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 13. Jan 2019, 13:17

Re: VBA Datei kopieren, Pfad speichern

Beitragvon Dancing Lance » 11. Feb 2019, 17:59

ich bin wohl immer noch auf dem Holzweg :( , denn der Speicherdialog speichert ja die offene Worddatei und nicht die Excel-Datei.

Ich teste weiterhin Sachen aus und hoffe natürlich auf eure Unterstützung.

Danke und Grüße
Lance
Dancing Lance
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 13. Jan 2019, 13:17

Re: VBA Datei kopieren, Pfad speichern

Beitragvon gem76 » 11. Feb 2019, 23:19

Als Idee:

Code: Alles auswählen
Sub KopiereEineDatei()
'Kopieren einer Datei

Dim objFSO As Object

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "Pfad+Quelldatei", "Pfad+ZIeldatei"
End Sub


Für den Zielpfad kannst ja auf einen der PfadDialge zugreifen.

Und eine Möglichkeit, eine Information dauerhaft in Word zu speichern, wären die "ActiveDocument.Variables", anlegen über .Add, auslesen über deren Index (alternativ Namen), kleines Beispiel:

Code: Alles auswählen
Sub InformationImDokumentSpeichern()

'Legt die Variable "TestName" mit dem Inhalt "TestInhalt" an.
ActiveDocument.Variables.Add Name:="TestName", Value:="TestInhalt"

'Gibt den Wert von "TestName" aus
Debug.Print ActiveDocument.Variables("TestName").Value

'Setzt den Wert von "TestName" auf "NeuerTestInhalt"
ActiveDocument.Variables("TestName").Value = "NeuerTestInhalt"
End Sub


Und ob eine Datei vorhanden ist, prüft man z.B. mit FileExists (gibt Wahr oder Falsch zurück).
gem76
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 34
Registriert: 10. Feb 2019, 17:00
Wohnort: ~Stuttgart~

Re: VBA Datei kopieren, Pfad speichern

Beitragvon Dancing Lance » 21. Feb 2019, 18:13

Hallo gem76,
danke für die Vorschläge. Das Kopieren der Datei funktioniert einwandfrei.

Für den Zielpfad kannst ja auf einen der PfadDialge zugreifen.

Hört sich gut an, weiß aber nicht wie.

Die Prüfung, ob eine Datei existiert funktioniert auch.
Code: Alles auswählen
Sub FileExist()
Dim Pfad as String
Dim objFSO As Object
Pfad = "C:\Ordner\Unterordner\Datei"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(Pfad) = True Then
MsgBox "Datei vorhanden"
Else
MSgBox "Datei nicht vorhanden"

End If
Set obFSO = Nothing
End Sub


Eine Information dauerhaft in WORD zu speichern teste ich noch aus und melde mich nochmals.
Vielen Dank soweit

Gruß Lance
Dancing Lance
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 13. Jan 2019, 13:17

Re: VBA Datei kopieren, Pfad speichern

Beitragvon gem76 » 22. Feb 2019, 20:22

Dancing Lance hat geschrieben:Hört sich gut an, weiß aber nicht wie.


Ich hoffe, Querverlinkungen sind hier erlaubt: https://stackoverflow.com/questions/26392482/vba-excel-to-prompt-user-response-to-select-folder-and-return-the-path-as-string

Eines von vermutlich sehr vielen Beispielen...
gem76
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 34
Registriert: 10. Feb 2019, 17:00
Wohnort: ~Stuttgart~

Re: VBA Datei kopieren, Pfad speichern

Beitragvon theoS » 22. Feb 2019, 22:36

Dauerhaft geht über Variables oder CustomDocumentPropertys.
Letzere haben halt den Nachteil, dass sie für den User sichtbar sind. Variables sieht man nur mit VBA

Code: Alles auswählen
Sub variABlesS()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim vInn As Variable
Set vInn = dd1.Variables("PFAD")
vInn.Value = "Der Pfad nach irgendwo..."

Debug.Print vInn.Value

End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4768
Registriert: 19. Apr 2008, 00:14

Re: VBA Datei kopieren, Pfad speichern

Beitragvon theoS » 22. Feb 2019, 23:42

ERgänzung, wie mans auch machen kann.

Code: Alles auswählen
Sub hhh()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim Pfad As String: Pfad = "C:\Users\" & Environ("USERNAME") & "\Desktop\" 'liest den Pfad zum Desktop aus

Dim obD As Object
Set obD = CreateObject("Excel.Application") 'die Anwendung in eine Variable holen
Dim ws As Object: Set ws = obD.workbooks.Add ' Eine Arbeitsmappe erstellen - wenn schon eine da ist, dann machst du das mit GetObject()
ws.Windows(1).Visible = True 'sollte man machen, denn das Ding kriegt sonst keine Fenster mehr auf.
ws.worksheets(1).Cells(1, 1).Value = 13 'macht irgendwas, hier die Zelle A1 des ersten Arbeitsblattes mit der Zahl 13 füllen
ws.SaveAs FileName:=Pfad & "ExcTest.xlsx" 'hier hast du eine Möglichkeit das Ding mit einem vorgegebenen Pfad zu speichernt
Set Dialog = obD.Application.FileDialog(msoFileDialogSaveAs) 'hier rufst du den Dialog von Excel auf.
With Dialog
.InitialFileName = Pfad & "ExcTest2.xlsx"
.Show
End With
ActiveDocument.Variables("SpeicherpfadExcel").Value = Pfad & "ExcTest2.xlsx" 'speichert deinen Pfad in die Worddatei
ws.Close

Set ws = Nothing
Set obD = Nothing
End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4768
Registriert: 19. Apr 2008, 00:14


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste