Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Automatisch umbenennen von Excel-Dateien: 0B351860

1 view
Skip to first unread message

Habets

unread,
Aug 9, 2004, 3:06:48 AM8/9/04
to
Wir verwenden Excel um verschiedene Auswertungen unserer
ORACLE-Datenbank zu machen. Wir machen unsere Abfragen in
Access und lesen die in Excel ein über 'externe Daten'.
Soweit alles klar.

Um die Aktualisierung zu 'automatisieren' haben wir ein
Makro erstellt, die die Excel-Datei öffnet, die Daten
einliest und dann die Datei wieder schließt. Jetzt haben
wir die Excel-Dateien im 'Scheduled Tasks' eingetragen
damit sie periodisch gestartet (und somit aktualisiert)
werden. Soweit auch noch alles klar!

Jetzt das Problem: bei manchen Aktualisierungen wird die
Datei nicht aktualisiert und benennt Excel die Datei in
irgendwelchen Code um (zB. 4D411C50 oder 0B351860). Kann
jemand mir sagen wo hier die Ursache liegt? Oder was die
Codes bedeuten?

Platform: Windows 2000 Prof. und Office 97.
Makro:
Sub Auto_Open()
'
' Automatische Aktualisierung der Daten
Dim aktDatum

On Error GoTo Errorhandler

aktDatum = Now
ActiveWorkbook.Unprotect
Range("B5").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
Range("B1").Select
'ActiveCell.FormulaR1C1 = "=NOW()"
ActiveCell.FormulaR1C1 = aktDatum
Range("C1").Select
ActiveCell.FormulaR1C1 = "AUTO"
'Call Sortierung
ActiveWorkbook.Protect
ActiveWorkbook.Save
'ActiveWorkbook.Close savechanges = True
'ActiveWorkbook.Save
Application.Quit
Exit Sub
Errorhandler:
End Sub

Melanie Breden

unread,
Aug 9, 2004, 4:40:53 AM8/9/04
to
Hallo Habets,

Habets schrieb:

> Jetzt das Problem: bei manchen Aktualisierungen wird die
> Datei nicht aktualisiert und benennt Excel die Datei in
> irgendwelchen Code um (zB. 4D411C50 oder 0B351860). Kann
> jemand mir sagen wo hier die Ursache liegt? Oder was die
> Codes bedeuten?

Zu den Dateinamen kann ich dir leider Nichts sagen :-(

Aber die Prozedur selber könnte man verbessern.
Zunächst würde ich nicht die Auto_Open-Prozedur verwenden, sondern
die entsprechende Ereignisprozedur im Codemodul "DieseArbeitsmappe"

Private Sub Workbook_Open()
...
End Sub

Bezieht sich der Code auf die Mappe in der er gespeichert ist?
Dann verwende anstelle von "ActiveWorkbook" besser "ThisWorkbook".

In der Prozedur werden die Bezüge nicht genau referenzierst.
Wenn du nur eine Range-Angabe machst, bezieht sich diese immer auf das gerade aktive Blatt.
Gebe also das Blatt an, in dem du Änderungen durchführen willst.

Durch den Errorhandler wird jeglicher Fehler übergangen und du kannst die
Fehlerquelle nicht mehr lokalisieren.
Wenn du eine Fehlerquelle im Code vermutest versuche diese gezielt abzufangen.

Vermutlich willst du den Blattschutz aufheben und nicht den Arbeitsmappenschutz?

Versuchs mal so:

' Modul DieseArbeitsmappe
Private Sub Workbook_Open()
' Blattname oder Index anpassen
With ThisWorkbook.Worksheets("Tabelle1")
.Unprotect

On Error Resume Next
.Range("B5").QueryTable.Refresh BackgroundQuery:=False
If Err.Number = 0 Then
.Range("B1").Value = Now
.Range("C1").Value = "AUTO"
End If
' Fehlerroutine zurücksetzen
On Error GoTo 0

.Protect
End With

ThisWorkbook.Close SaveChanges:=True
Application.Quit
End Sub

--
Mit freundlichen Grüssen

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#


0 new messages