Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1148to1152
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
Inhaltsverzeichnis

Speicherproblem Laufzeitfehler 14

Speicherproblem Laufzeitfehler 14
Deister
Hallo,
Ich habe ein Exceltemplate mit Excel 2003 erstellt, welches auf unserem Server abgelegt ist, von allen Kollegen abgerufen, ausgefüllt und dann mit einer Macro umbenannt und auf einem bestimmten Pfad abgespeichert wird.
Ein Kollege, welcher mit Excel 2007 arbeitet, kann die Datei wohl nutzen, doch beim Abspeichern, an Hand von der Macro, bekommt er immer den Laufzeitfehler 14. Ich habe nun herausgefunden, dass die Dateien welche der Kollege normal abspeichert, alle als .xlsx abgespeichert werden und denke dass mein Problem damit verbunden ist.
In meiner Macro verwende ich folgenden Code zum speichern:
Range("A1").Select
Dim folder As String
folder = Range("BB5")
Dim datname1 As String
datname1 = Range("BB7")
ActiveWorkbook.SaveAs FileName:=folder & "\" & datname1 & ".xls", FileFormat:=xlNormal, _
Password:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Ich kenne den Abspeichertype .xlsx leider nicht. Wozu wird dieser benutzt und wie kann ich mein Problem lösen ohne dass der Kollege Vorteile von Excel 2007 einbussen muss?
Danke für jede Hilfestellung,
Ant
AW: Speicherproblem Laufzeitfehler 14
01.04.2010 11:58:41
Rudi
Hallo,
frag doch die Excel-Version ab.
Sub tt()
Select Case Application.Version
Case Is 

Gruß
Rudi
AW: Speicherproblem Laufzeitfehler 14
01.04.2010 12:15:00
Tino
Hallo,
in xl2007 gibt es viele Dateiformate, xlsx sind Dateien ohne Makros.
Eine Möglichkeit um diese abzufangen, wäre so.
Erste das Format und die Dateiextension bestimmen und mit diesen Angaben speichern.
Beispiel:
Dim folder$, datname1$
Dim File_Format%
Dim File_Ex$

folder = ThisWorkbook.Path
datname1 = ThisWorkbook.Name

'Fileformat 
File_Format = ThisWorkbook.FileFormat
'Datei Extension 
File_Ex$ = Right$(ThisWorkbook.Name, Len(ThisWorkbook.Name) - InStrRev(ThisWorkbook.Name, ".") + 1)
    
ActiveWorkbook.SaveAs Filename:=folder & "\" & datname1 & File_Ex$, FileFormat:=File_Format, _
Password:="", ReadOnlyRecommended:=False, CreateBackup:=False
Gruß Tino
Anzeige
Extension schon in Dateiname
01.04.2010 12:19:48
Tino
Hallo,
die Extension kann mann weg lasse, die steht ja im Filename
Dim folder$, datname1$
Dim File_Format%
folder = ThisWorkbook.Path
datname1 = ThisWorkbook.Name
'Fileformat
File_Format = ThisWorkbook.FileFormat
ActiveWorkbook.SaveAs Filename:=folder & "\" & datname1, FileFormat:=File_Format, _
Password:="", ReadOnlyRecommended:=False, CreateBackup:=False
Gruß Tino
AW: Extension schon in Dateiname
01.04.2010 12:38:37
Deister
Hallo Tino,
Nun bekomme ich beim Abspeichern in XL2003 folgende Fehlermeldung bei "folder$":
Compile Error:
Duplicate declaration in current scope
Dim folder As String
folder = Range("BB5")
Dim datname1 As String
datname1 = Range("BB7")
'ActiveWorkbook.SaveAs FileName:=folder & "\" & datname1 & ".xls", FileFormat:=xlNormal, _
Password:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Dim folder$, datname1$
Dim File_Format%
folder = ThisWorkbook.Path
datname1 = ThisWorkbook.Name
'Fileformat
File_Format = ThisWorkbook.FileFormat
ActiveWorkbook.SaveAs FileName:=folder & "\" & datname1, FileFormat:=File_Format, _
Password:="", ReadOnlyRecommended:=False, CreateBackup:=False
Gruss aus Luxemburg
Ant
Anzeige
AW: Extension schon in Dateiname
01.04.2010 12:42:31
Deister
Hallo Tino,
Ich habe heute noch einen anderen Post geschickt.
"Lästiges Problem beim Abspeichern"
Könnte es sein, dass dieses auch hiermit zu tun hat?
MfG
Ant
könnte sein...
01.04.2010 13:00:40
Tino
Hallo,
kann ich aber nicht mit Bestimmtheit sagen, sieht aber danach aus.
Gruß Tino
AW: Extension schon in Dateiname
01.04.2010 12:58:03
Tino
Hallo,
hier etwas ausführlicher.
Zu Deiner Fehlermeldung, hast Du diese Variable irgendwo schon Deklariert, darf nur einmal?
Sub test()
Dim folder$, datname1$
Dim File_Format%
Dim File_Ex$

'hier Ordner angeben 
folder$ = ThisWorkbook.Path
'hier Dateinamen angeben 
datname1$ = ThisWorkbook.Name

'Datei Extension 
File_Ex$ = Right$(datname1$, Len(datname1$) - InStrRev(datname1$, ".") + 1)
'Dateiname ohne Extension 
datname1$ = Left(datname1$, InStrRev(datname1$, ".") - 1)

Select Case LCase(File_Ex$)
    
    Case ".xlsb"    'Binärarbeitsmappe 
        File_Format = 50
        datname1$ = datname1$ & ".xlsb"
    
    Case ".xlsx"    'Arbeitsmappe ohne Makros 
        File_Format = 51
        datname1$ = datname1$ & ".xlsb"
    
    Case ".xlsm"    'Arbeitsmappe mit Makros 
        File_Format = 52
        datname1$ = datname1$ & ".xlsb"
    
    Case ".xls"     'Excel 97-2003 Arbeitsmappe 
        If Val(Application.Version) < 12 Then
            File_Format = xlNormal
        Else
            File_Format = 56
        End If
        datname1$ = datname1$ & ".xls"

End Select

folder$ = IIf(Right$(folder$, 1) = "\", folder$, folder$ & "\")

ActiveWorkbook.SaveAs Filename:=folder$ & datname1$, FileFormat:=File_Format, _
Password:="", ReadOnlyRecommended:=False, CreateBackup:=False

End Sub
Gruß Tino
Anzeige
Korrektur ...
01.04.2010 13:02:39
Tino
Hallo,
Sub test()
Dim folder$, datname1$
Dim File_Format%
Dim File_Ex$

'hier Ordner angeben 
folder$ = ThisWorkbook.Path
'hier Dateinamen angeben 
datname1$ = ThisWorkbook.Name

'Datei Extension 
File_Ex$ = Right$(datname1$, Len(datname1$) - InStrRev(datname1$, ".") + 1)
'Dateiname ohne Extension 
datname1$ = Left(datname1$, InStrRev(datname1$, ".") - 1)

Select Case LCase(File_Ex$)
    
    Case ".xlsb"    'Binärarbeitsmappe 
        File_Format = 50
        datname1$ = datname1$ & ".xlsb"
    
    Case ".xlsx"    'Arbeitsmappe ohne Makros 
        File_Format = 51
        datname1$ = datname1$ & ".xlsx"
    
    Case ".xlsm"    'Arbeitsmappe mit Makros 
        File_Format = 52
        datname1$ = datname1$ & ".xlsm"
    
    Case ".xls"     'Excel 97-2003 Arbeitsmappe 
        If Val(Application.Version) < 12 Then
            File_Format = xlNormal
        Else
            File_Format = 56
        End If
        datname1$ = datname1$ & ".xls"

End Select

folder$ = IIf(Right$(folder$, 1) = "\", folder$, folder$ & "\")

ActiveWorkbook.SaveAs Filename:=folder$ & datname1$, FileFormat:=File_Format, _
Password:="", ReadOnlyRecommended:=False, CreateBackup:=False

End Sub
Gruß Tino
Anzeige
AW: Korrektur ...
01.04.2010 13:32:44
Deister
Hallo Tino,
Ordner und Dateinamen können variabel sein. Ich muss mich diesbezüglich auf die Zellen BB5 für den Ordner und BB7 für den Dateinamen beziehen. Ich denke dass ich deshalb die folgende Strings brauche
Dim folder As String
folder = Range("BB5")
Dim datname1 As String
datname1 = Range("BB7")
Dein Code sieht mit den verschiedenen cases vielversprechend aus, doch ich komme dann mit folgendem nicht klar (folder$ und datname1$):
Dim folder$, datname1$
Dim File_Format%
Dim File_Ex$
'hier Ordner angeben
folder$ = ThisWorkbook.Path
'hier Dateinamen angeben
datname1$ = ThisWorkbook.Name
Anzeige
AW: Korrektur ...
01.04.2010 13:51:29
Tino
Hallo,
Datei und Pfad aus einer Zelle so.
Tabellennamen noch anpassen.
Sub test()
Dim folder$, datname1$, File_Ex$
Dim File_Format%

With Sheets("Tabelle1") 'Tabelle anpassen !!!!!!!!!!!!!! 
    'hier Ordner angeben 
    folder$ = .Range("BB5")
    'hier Dateinamen angeben 
    datname1$ = .Range("BB7")
End With

'Datei Extension 
File_Ex$ = Right$(datname1$, Len(datname1$) - InStrRev(datname1$, ".") + 1)
'Dateiname ohne Extension 
datname1$ = Left(datname1$, InStrRev(datname1$, ".") - 1)

Select Case LCase(File_Ex$)
    
    Case ".xlsb"    'Binärarbeitsmappe 
        File_Format = 50
        datname1$ = datname1$ & ".xlsb"
    
    Case ".xlsx"    'Arbeitsmappe ohne Makros 
        File_Format = 51
        datname1$ = datname1$ & ".xlsx"
    
    Case ".xlsm"    'Arbeitsmappe mit Makros 
        File_Format = 52
        datname1$ = datname1$ & ".xlsm"
    
    Case ".xls"     'Excel 97-2003 Arbeitsmappe 
        If Val(Application.Version) < 12 Then
            File_Format = xlNormal
        Else
            File_Format = 56
        End If
        datname1$ = datname1$ & ".xls"

End Select

folder$ = IIf(Right$(folder$, 1) = "\", folder$, folder$ & "\")

ActiveWorkbook.SaveAs Filename:=folder$ & datname1$, FileFormat:=File_Format, _
Password:="", ReadOnlyRecommended:=False, CreateBackup:=False

End Sub
PS: klicke mit der Maus an einer beliebigen Stelle in der Sub und gehe mit F8 den Code in einzelschritten durch, damit kannst Du genauer nachvollziehen was geschieht und was der Code anstellt.
Kann oft Hilfreich sein.
Gruß Tino
Anzeige
AW: Korrektur ...
01.04.2010 14:24:42
Deister
Hi Tino,
Richtig, soweit war ich schon in Zwischenzeit, jedoch ohne den Punkt vor Range.
'hier Ordner angeben
folder$ = Range("BB5") 'ThisWorkbook.Path
'hier Dateinamen angeben
datname1$ = Range("BB7") 'ThisWorkbook.Name
So oder so bekomme ich aber immer den Laufzeitfehler 5 in der Zeile
datname1$ = Left(datname1$, InStrRev(datname1$, ".") - 1)
(an meinem Rechner arbeite ich mit XL2003)
Dim folder$, datname1$, File_Ex$
Dim File_Format%
With Sheets("Saisie") 'Tabelle anpassen !!!!!!!!!!!!!!
'hier Ordner angeben
folder$ = .Range("BB5")
'hier Dateinamen angeben
datname1$ = .Range("BB7")
End With
'Datei Extension
File_Ex$ = Right$(datname1$, Len(datname1$) - InStrRev(datname1$, ".") + 1)
'Dateiname ohne Extension
datname1$ = Left(datname1$, InStrRev(datname1$, ".") - 1)
Select Case LCase(File_Ex$)
....
Anzeige
was steht in Range("BB7")...
01.04.2010 14:31:15
Tino
Hallo,
oder lade mal ein Beispiel hoch.
Gruß Tino
AW: was steht in Range("BB7")...
01.04.2010 14:44:54
Deister
BB5 W:\Überstundenanträge\Gespeicherte Anträge
BB7 =TEXT("PWF ";)&Z14&" "&BB10&" "&BC9&" - "&C3&" "&C5&" "&C9&" "&C7
AW: was steht in Range("BB7")...
01.04.2010 14:45:37
Deister
BB5
W:\Überstundenanträge\Gespeicherte Anträge
BB7
=TEXT("PWF ";)&Z14&" "&BB10&" "&BC9&" - "&C3&" "&C5&" "&C9&" "&C7
nicht die Formel der Wert, lade ein Bsp.! oT.
01.04.2010 14:49:12
Tino
AW: nicht die Formel der Wert, lade ein Bsp.! oT.
01.04.2010 15:01:06
Deister
PWF 2010 3 31 - TESTEST 123456 Personal Deister Ant
da fehlt die Extension .xls o. .xlsm uws. oT.
01.04.2010 15:47:58
Tino
AW: da fehlt die Extension .xls o. .xlsm uws. oT.
01.04.2010 15:52:45
Deister
Richtig,
Die Extension wird ja im save.as code festgelegt
zum besseren Verständnis
01.04.2010 14:54:42
Deister
Tino,
Der normale code ...
Dim folder As String
folder = Range("BB5")
Dim datname1 As String
datname1 = Range("BB7")
ActiveWorkbook.SaveAs FileName:=folder & "\" & datname1 & ".xls", FileFormat:=xlNormal, _
Password:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
... läuft auf allen Rechnern, ob XL2003 oder XL2007, hier wird auch mit .xls abgespeichert.
Nur da der Rechner dieses Kollegen mit .xlsx abspeichert, bekomme ich hier, wie Anfangs beschrieben, den Laufzeitfehler 14.
Anzeige
also die Dateienden der aktuelle Datei
01.04.2010 15:55:57
Tino
Hallo,
also müsste zuvor festgestellt werden welche Dateienden die aktuelle Datei hat.
Sub test()
Dim folder$, datname1$, File_Ex$
Dim File_Format%


With Sheets("Tabelle1") 'Tabelle anpassen !!!!!!!!!!!!!! 
    'hier Ordner angeben 
    folder$ = .Range("BB5")
    'hier Dateinamen angeben 
    datname1$ = .Range("BB7")
End With

'Datei Extension 
With ThisWorkbook
    File_Ex$ = Right$(.Name, Len(.Name) - InStrRev(.Name, ".") + 1)
End With

Select Case LCase(File_Ex$)
    
    Case ".xlsb"    'Binärarbeitsmappe 
        File_Format = 50
        datname1$ = datname1$ & ".xlsb"
    
    Case ".xlsx"    'Arbeitsmappe ohne Makros 
        File_Format = 51
        datname1$ = datname1$ & ".xlsx"
    
    Case ".xlsm"    'Arbeitsmappe mit Makros 
        File_Format = 52
        datname1$ = datname1$ & ".xlsm"
    
    Case ".xls"     'Excel 97-2003 Arbeitsmappe 
        If Val(Application.Version) < 12 Then
            File_Format = xlNormal
        Else
            File_Format = 56
        End If
        datname1$ = datname1$ & ".xls"

End Select

folder$ = IIf(Right$(folder$, 1) = "\", folder$, folder$ & "\")

ActiveWorkbook.SaveAs Filename:=folder$ & datname1$, FileFormat:=File_Format, _
Password:="", ReadOnlyRecommended:=False, CreateBackup:=False

End Sub
Gruß Tino
Anzeige
jetzt verstehe ich, hoffe ich ;-) ...
01.04.2010 16:11:54
Tino
Hallo,
jetzt denke ich, dass ich verstehe was Du vorhast.
Sub test()
Dim folder$, datname1$, File_Ex$
Dim File_Format%


With Sheets("Tabelle1") 'Tabelle anpassen !!!!!!!!!!!!!! 
    'hier Ordner angeben 
    folder$ = .Range("BB5")
    'hier Dateinamen angeben 
    datname1$ = .Range("BB7")
End With

File_Format = ThisWorkbook.FileFormat

Select Case File_Format
    
    Case 50    'Binärarbeitsmappe 
        datname1$ = datname1$ & ".xlsb"
    Case 51    'Arbeitsmappe ohne Makros 
        datname1$ = datname1$ & ".xlsx"
    Case 52    'Arbeitsmappe mit Makros 
        datname1$ = datname1$ & ".xlsm"
    Case xlNormal, 56     'Excel 97-2003 Arbeitsmappe 
        datname1$ = datname1$ & ".xls"
        
End Select

folder$ = IIf(Right$(folder$, 1) = "\", folder$, folder$ & "\")

ActiveWorkbook.SaveAs Filename:=folder$ & datname1$, FileFormat:=File_Format, _
Password:="", ReadOnlyRecommended:=False, CreateBackup:=False

End Sub
Gruß Tino
Yep, jetzt klappt es...
02.04.2010 07:15:52
Deister
... besten Dank für deine riesen Mühe.
Gruss aus Luxemburg
Ant

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige