Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

PROB: Mappe per VBA öffnen - fortlaufende Nummer

PROB: Mappe per VBA öffnen - fortlaufende Nummer
30.04.2008 16:04:00
Gerd
Tach zusammen...
ich habe ein Problem was plötzlich in einem forhanden skript auftrat und ich weiß nicht wieso...
Ich Öffne mit folgendem Code eine Arbeitsmappe:

Sub DateiOeffnen()
Dim sFile As String, sPath As String
sFile = "doku.xlt"
sPath = ThisWorkbook.Path & "\" & sFile
If WkbExists("doku.xlt") = False Then
If Dir(sPath) = "" Then
MsgBox "Datei " & sPath & " wurde nicht gefunden!"
Else
Workbooks.Open sPath
End If
Else
Workbooks("Hauptmappe.xlt").Activate
End If
Workbooks("Hauptmappe.xlt").Activate
End Sub



Private Function WkbExists(sFile As String) As Boolean
Dim wkb As Object
On Error Resume Next
Set wkb = Workbooks(sFile)
If Not wkb Is Nothing Then
WkbExists = True
End If
On Error GoTo 0
End Function


Das hat auch immer soweit geklappt - ich benutze im Anschluss daran noch weitere skripts die Werte in diese geöffnete Arbeitsmappe kopieren auf verschiedene Blätter... Jedoch hängt Excel bei jedem öffnen der Datei (diese wird immer nur 1 mal geöffnet und nach der bearbeitung gespeichert und geschlossen) eine folrtlaufende Nummer... Also ich kann die Mappe nicht mehr ansprechen über zB. 'Workbooks("doku.xlt").Activate' da Excel auf bei ersten Aufruf ein doku1 in der Tittelzeile daraus macht...
Wird die Mappe geschlossen und danach nochmal die Funktion DateoOeffnen ausgeführt dann bennent Excel diese Mappe in 'doku2' usw...
Das hatte ich vorhin beim testen meiner Skripte nie - nur jetzt aufmal..
Kann mir da jemand helfen?
Gruß und nen schönen Feiertag!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PROB: Mappe per VBA öffnen - fortlaufende Nummer
30.04.2008 20:09:00
Gerd
Hallo Namensvetter,
eine XLT ist keine XLS .
Gruß Gerd

AW: PROB: Mappe per VBA öffnen - fortlaufende Numm
01.05.2008 14:37:00
fcs
Hallo Gerd,
wie von deinem Namensvetter erwähnt, ist die Verwendung von Excel-Nustervorlagen (.XLT) statt Excel-Arbeitsmappe (.XLS) ggf. Teil des Problems. Das kann man aber durch Verwendung von Objektvariablen vermeiden. Eigentlich gibt es keinen Grund die Hauptmappe als Mustervorlage zu speichern.
Deklariere vor den Prozeduren deines Moduls eine Workbook-Variable als Public.
Mit dem Öffnen der Vorlage "doku.xlt" wird dieser Variablen jetzt per Set diese Arbeitsmappendatei zugewiesen. Beispiel:

Option Explicit
Public wkbDoku As Workbook 'Variable für neue Datei aus "doku.xlt"
Sub DateiOeffnen()
Dim sFile As String, sPath As String
sFile = "doku.xlt"
sPath = ThisWorkbook.Path & "\" & sFile
If WkbExists("doku.xlt") = False Then
If Dir(sPath) = "" Then
MsgBox "Datei " & sPath & " wurde nicht gefunden!"
Else
Set wkbDoku = Workbooks.Open(FileName:=sPath)
End If
Else
Workbooks("Hauptmappe.xlt").Activate
End If
Workbooks("Hauptmappe.xlt").Activate
End Sub


In allen anderen Prozeduren verwendest du jetzt diese Variable statt Worksbooks("doku.xlt")
Also z.B


wbDoku.Activate
wbDoku.SaveAs Filename:="C:\Test\Mappe01.xls"
statt
Workbooks("doku.xlt")
Workbooks("doku.xlt").SaveAs Filename:="C:\Test\Mappe01.xls"

Gruß
Franz

Anzeige
AW: PROB: Mappe per VBA öffnen - fortlaufende Numm
05.05.2008 09:04:51
Gerd
Hallo ihr beiden,
leider klappt das beides nicht...
Habe einmal alles auf xls umgestellt: kein Erfolg.
Habe auch auf der Arbeitsmappe selbst die open explicit eingefügt und das open nach deinem Skript geändert...
Leider geht es immer noch nicht...
Kopieren von diversen Werten wäre das nächste... um das skript nicht komplett umzuschmeißen habe ich es folgendermaßen gemacht:

Sub Copy2Haz()
Dim wkb As Workbook
Dim wks As Worksheet
Dim rng As Range
On Error Resume Next
Set wkb = wkbDoku
If Err > 0 Or wkb Is Nothing Then
Beep
MsgBox _
prompt:="Es ist keine Testdatei geöffnet!"
Exit Sub
End If
Set wks = wkb.Worksheets("Hazardous Area Equipment")
If Err > 0 Or wks Is Nothing Then
Beep
MsgBox _
prompt:="Die Testdatei enthält das Zielblatt nicht!"
Exit Sub
End If
Set rng = wkbDoku.Worksheets("Hazardous Area Equipment").Range("a8")
Selection.Copy 'CopySelection
wkbDoku.Worksheets("Hazardous Area Equipment").Range("a8").PasteSpecial xlValues 'paste als  _
WERT
Application.CutCopyMode = False
End Sub


Ich bekomme immer meine MSGBOX 'Keine Testdatei geöffnet'...
Wenn ich mal die Variable wkbDoku auf eine MsgBox lege bekomme ich immer den Fehler: 'Objektvariable oder With-Blackvariable nicht festgelegt'... Was mach ich falsch?
Gruß

Anzeige
AW: PROB: Mappe per VBA öffnen - fortlaufende Numm
05.05.2008 14:42:04
fcs
Hallo Gerd,
wenn man nicht alle Zusammenhänge von Anfang an kennt, dann kann man schon mal was übersehen.
Ob XLT oder XLS-Datei ist für diese Problemstellung ziemlich egal, wobei man bei Musterdateien ggf. schon die XLS-Dateien verwenden sollte, die man dann auch zentral verwalten kann. Man muss dann "nur" zum richtigen Zeitpunkt die entsprechende Datei beim Öffnen einem Objekt zuordnen.
Option Explicit sollte man immer setzen. Man reduziert dadurch Syntax-Fehler und Tippfehler bei Variablen, da Excel vor der Ausführung eine Prüfung durchführt, ob alle Variablen deklariert sind.
Auch die Datei-Öffnen-Prozedur erfordert für deine Anwendung noch eine kleine Anpassung. Wenn die Datei "Doku.xls" bereits geöffnet ist, dann muss das wbkDoku-Objekt natürlich auch gesetzt werden.
In deiner Copy2Haz Prozedur hab ich auch noch ein wenig angepasst und aufgeräumt.
Nachfolgend der komplette Code in meinem Test-Modul.
Gruß
Franz

Option Explicit
Public wkbDoku As Workbook 'Variable neue Datei aus "doku.xls"
Sub DateiOeffnen()
Dim sFile As String, sPath As String
sFile = "doku.xls"
sPath = ThisWorkbook.Path & "\" & sFile
If WkbExists(sFile) = False Then
If Dir(sPath) = "" Then
MsgBox "Datei " & sPath & " wurde nicht gefunden!"
Else
Set wkbDoku = Workbooks.Open(Filename:=sPath)
End If
Else
Set wkbDoku = Workbooks(sFile)
End If
Workbooks("Hauptmappe.xls").Activate
End Sub
Sub Copy2Haz()
Dim wks As Worksheet
On Error Resume Next
If wkbDoku Is Nothing Then
Beep
If MsgBox(prompt:="Es ist keine Testdatei geöffnet! Jetzt öffnen?", _
Buttons:=vbQuestion + vbYesNo) = vbNo Then
Exit Sub
Else
Call DateiOeffnen
End If
End If
Set wks = wkbDoku.Worksheets("Hazardous Area Equipment")
If Err > 0 Or wks Is Nothing Then
Beep
MsgBox _
prompt:="Die Testdatei enthält das Zielblatt nicht!"
Exit Sub
End If
'Werte vom aktiven Blatt übertragen
Selection.Copy 'CopyS election
wks.Range("a8").PasteSpecial Paste:=xlPasteValues 'paste als _WERT
Application.CutCopyMode = False
End Sub
'Zum Testen von mir eingefügt fcs
Function WkbExists(strDateiname As String) As Boolean
'Prüfung ob datei schon geöffnet ist
Dim objWkb As Workbook
For Each objWkb In Workbooks
If LCase(objWkb.Name) = LCase(strDateiname) Then
WkbExists = True
Exit Function
End If
Next
End Function


Anzeige

269 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige