# [VBS] Frage zu Excel Daten aktualisieren per Script



## Muhkuh42 (23. April 2007)

Hallo, 

habe soeben das ganze Forum und Internet durchsucht, aber irgendwie komme ich nicht auf einen grünen Zweig. Ich möchte mehrere Excel-Dateien in einem Verzeichnis öffnen lassen, sie aktualisieren (wie z.B. durch klick auf JA beim starten einer Excel-Datei oder per F9), speichern und schließen. Das meiste was ich bisher lesen konnte war mir fast zu hoch für den Anfang, aber hier mal mein erster Ansatz:

Set Excel = CreateObject("Excel.Application")
Set WB = Excel.Workbooks.Open("C:\1.xls")
WB.Save
WB.Close
Set WB = Nothing
Excel.Quit

Mir fehlt quasi mittendrin der Aufruf zum aktualisieren und wahrscheinlich muss ich da eine Schleife drumbauen, richtig ? Bitte Euch um eine einfache Erklärung ;-)


----------



## Alex F. (24. April 2007)

Du hast es doch schon 

der zweite Parameter bei 

Set WB = Excel.Workbooks.Open("C:\1.xls"*,true*)

nennt sich updatelinks ist dieser gesetzt so werden beim öffnen die Verknüpfungen aktualisiert 

Grüsse bb


----------



## Muhkuh42 (25. April 2007)

Hi, vielen Dank schonmal für die Antwort - war ja wirklich nicht so viel falsch, was ich da fabriziert habe, aber schon taucht das nächste Problem auf - ich will mehrere Dateien eines Ordners aktualisieren hab das bisher mal so gemacht:

```
Set Excel = CreateObject("Excel.Application")
text2 = "Aktualisierung abgeschlossen!"
path = "C:\"
name = "Team"
extension = ".xls"
For i = 1 to 5
no = cstr(i)
Set WB = Excel.Workbooks.Open(path & name & no & extension,true)
WB.Save
WB.Close
Set WB = Nothing
next
WScript.Echo text2
Excel.Quit
```

Jetzt habe ich aber ja das Problem, daß ich jeden Dateinamen genau wissen muss, was schwierig ist, da diese sich regelmäßig ändern - gibt es keine Möglichkeit eine Wildcard einzubauen, so dass ich alle Dateien des Ordners öffnen kann? (z.B. c:\Team*.xls) ?

Kann mir da jemand zur Seite stehen ? Gefunden habe ich da nix, weil die meisten sich wohl eher mit vba befassen.


----------



## Alex F. (25. April 2007)

Mach es doch wie in den VBA scripten  


```
Set fso = CreateObject("Scripting.FilesystemObject")
    
    Set fld = fso.GetFolder("u:\Produktion")
    
    For Each fil In fld.Files
        If Left(fil.ShortName, 4) = "Team" And Right(fil.ShortName, 4) = ".xls" Then
            'Excel aktualisieren
            Set WB = Excel.Workbooks.Open(fil.path,true)
            ' speichern
            WB.Save
            WB.Close
            Set WB = Nothing
        End If
    Next fil
```

in fil.shortname steht der 8 Zeichenname drin der in deinem Beispiel ausreichend ist und in fil.path steht der komplette Dateiname incl. Pfad drin

Grüsse bb


----------



## ronaldh (25. April 2007)

Warum machst Du nicht eine File-Listbox auf, der Du die Extension und den Pfadnamen übergibst?

Da kannst Du dann ganz einfach durchschleifen wie durch jede Listbox.


```
Private Sub Form_Load ()
      File1.Path = "C:\Temp"
      File1.Pattern = "*.xls"
END SUB

Private Sub Command1_Click()
      Dim i as integer
      Dim dateiname as string

      For i = 0 to File1.ListCount -1
           File1.Listindex = i
           Dateiname = File1.FileName
           'hier machst Du nun was
     Next
End Sub
```


Viele Grüsse
ronaldh


----------



## Alex F. (25. April 2007)

weil er mit *VBS* arbeitet !?


----------

