Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1248to1252
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

Makro geht unter 2003 aber nicht unter 2007

Makro geht unter 2003 aber nicht unter 2007
Mike
Hallo Zusammen,
ich habe folgendes Problem:
Meine Frau und ich haben unterschiedliche Excel Versionen (2003 und 2007), müssen aber auf die gleiche Datei im Netz zugreifen und mit folgendem Makro arbeiten:
Sub komplett()
'setzt die Rechnungsnummer hoch
With Worksheets("Rechnung").Range("D17")
.Value = .Value + 1
End With
'übeträgt Rechnungsdaten ins Journal
Pfad = "\\Kati\user\Ausgangsrechnungen\2012\"
Datei = "Journal.xls"
ChDir "" & Pfad
Dim lgRow As Long
Dim wks As Worksheet
Dim wksQuell As Worksheet
Set wksQuell = Sheets("Rechnung")
'öffnet die Journaldatei
Workbooks.Open Filename:="" & Pfad & Datei
'den Namen der Zieldatei und des Blattes jährlich anpassen
Set wks = Workbooks("Journal.xls").Sheets("2012")
With wks
lgRow = .Range("A65536").End(xlUp).Row + 1
.Cells(lgRow, 1) = wksQuell.Cells(17, 3)
.Cells(lgRow, 2) = wksQuell.Cells(17, 4)
.Cells(lgRow, 3) = wksQuell.Cells(3, 3)
.Cells(lgRow, 4) = wksQuell.Cells(9, 1)
.Cells(lgRow, 5) = wksQuell.Cells(29, 7)
.Cells(lgRow, 6) = wksQuell.Cells(31, 7)
.Cells(lgRow, 7) = wksQuell.Cells(32, 7)
End With
'speichert und schließt die Journaldatei
Workbooks("Journal.xls").Save
Workbooks("Journal.xls").Close
On Error GoTo 0
'druckt Rechnung aus und speichert aktuelle Rechnung als Datei ab
Dim Kopien As Variant
If MsgBox("Rechnung ausdrucken?", vbYesNo, "Drucken") = vbYes Then
Do
Kopien = InputBox("Anzahl Kopien", "Drucken", 1)
If StrPtr(Kopien) = 0 Then Exit Sub
If IsNumeric(Kopien) Then Exit Do
MsgBox "Bitte eine Zahl eingeben!", vbExclamation, "Hinweis"
Loop
ActiveSheet.PrintOut From:=1, To:=1, Copies:=CLng(Kopien)
End If
Dim name1, name2, name3 As String
'den Pfad der Zieldatei jährlich anpassen
Pfad = "\\Kati\user\Ausgangsrechnungen\2012\"
name1 = Cells(17, 1)
name2 = Cells(17, 3)
name3 = Cells(17, 4)
ActiveWorkbook.SaveAs Filename:=Pfad & name1 & " " & name2 & " " & name3 & ".xls"
End Sub

Bei mir (2003) funktioniert das Makro einwandfrei, auf dem Rechner meiner Frau (2007) treten folgende Abweichungen auf:
1. Beim Speichern der Journaldatei kommt immer der Hinweis, dass die Datei bereits existiert und ob man diese ersetzen möchte. Ja, das wollen wir. IMMER! Warum kommt der Hinweis in der 2007er Version? Kann man diese Abfrage unterdrücken?
Die Klärung dieser 1. Frage wäre zwar schön aber viel brennender ist für uns das zweite Problem:
2. Leider speichert die 2007er Version die aktive Arbeitsmappe nicht unter dem neuen Namen ab. Der Debugger meckert die oben fett markierte Zeile an. Ich habe schon so ziemlich alles probiert (anderer Pfadname etc.) und bin auch über die Suchen Funktion im Forum und im Netz nicht weiter gekommen.
Die Fehlermeldung lautet: Laufzeitfehler 1004 - Die Methode ´SaveAs´ für das Objekt ´_Workbook´ ist fehlgeschlagen.
Kann mir bitte jemand weiterhelfen?
Gruß
Mike
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 12:08:49
Josef

Hallo Mike,
ab xl2007 ist die Angabe des Dateiformates zwingend.
Sub komplett()
  Dim lgRow As Long
  Dim wks As Worksheet, wksQuell As Worksheet
  Dim Pfad As String, Name1 As String, Name2 As String, Name3 As String, Datei As String
  
  'setzt die Rechnungsnummer hoch
  With Worksheets("Rechnung").Range("D17")
    .Value = .Value + 1
  End With
  
  'übeträgt Rechnungsdaten ins Journal
  Pfad = "\\Kati\user\Ausgangsrechnungen\2012\"
  Datei = "Journal.xls"
  ChDir "" & Pfad 'unnötig!
  
  
  Set wksQuell = Sheets("Rechnung")
  
  'öffnet die Journaldatei
  Workbooks.Open Filename:="" & Pfad & Datei
  
  'den Namen der Zieldatei und des Blattes jährlich anpassen
  Set wks = Workbooks("Journal.xls").Sheets("2012")
  With wks
    lgRow = .Range("A65536").End(xlUp).Row + 1
    .Cells(lgRow, 1) = wksQuell.Cells(17, 3)
    .Cells(lgRow, 2) = wksQuell.Cells(17, 4)
    .Cells(lgRow, 3) = wksQuell.Cells(3, 3)
    .Cells(lgRow, 4) = wksQuell.Cells(9, 1)
    .Cells(lgRow, 5) = wksQuell.Cells(29, 7)
    .Cells(lgRow, 6) = wksQuell.Cells(31, 7)
    .Cells(lgRow, 7) = wksQuell.Cells(32, 7)
  End With
  
  'speichert und schließt die Journaldatei
  Workbooks("Journal.xls").Save
  Workbooks("Journal.xls").Close
  On Error GoTo 0
  
  'druckt Rechnung aus und speichert aktuelle Rechnung als Datei ab
  Dim Kopien As Variant
  If MsgBox("Rechnung ausdrucken?", vbYesNo, "Drucken") = vbYes Then
    Do
      Kopien = InputBox("Anzahl Kopien", "Drucken", 1)
      If StrPtr(Kopien) = 0 Then Exit Sub
      If IsNumeric(Kopien) Then Exit Do
      MsgBox "Bitte eine Zahl eingeben!", vbExclamation, "Hinweis"
    Loop
    ActiveSheet.PrintOut From:=1, To:=1, Copies:=CLng(Kopien)
  End If
  
  'den Pfad der Zieldatei jährlich anpassen
  Pfad = "\\Kati\user\Ausgangsrechnungen\2012\"
  Name1 = Cells(17, 1)
  Name2 = Cells(17, 3)
  Name3 = Cells(17, 4)
  
  On Error GoTo ErrExit
  Application.DisplayAlerts = False
  ActiveWorkbook.SaveAs Filename:=Pfad & Name1 & " " & Name2 & " " & Name3 & ".xls", FileFormat:=-4143
  
  ErrExit:
  Application.DisplayAlerts = True
End Sub



« Gruß Sepp »

Anzeige
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 12:22:47
Mike
Hallo Sepp,
vielen Dank für die rasche Antwort.
Das Makro läuft zwar durch, aber es wird keine Datei in den Zielpfad gespeichert (bei mir ja, bei meiner Frau nicht).
Gruß
Mike
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 12:26:23
Josef

Hallo Mike,
schau mal, ob eine Fehlermeldung ausgegeben wird und wenn ja, welche.
Sub komplett()
  Dim lgRow As Long
  Dim wks As Worksheet, wksQuell As Worksheet
  Dim Pfad As String, Name1 As String, Name2 As String, Name3 As String, Datei As String
  
  'setzt die Rechnungsnummer hoch
  With Worksheets("Rechnung").Range("D17")
    .Value = .Value + 1
  End With
  
  'übeträgt Rechnungsdaten ins Journal
  Pfad = "\\Kati\user\Ausgangsrechnungen\2012\"
  Datei = "Journal.xls"
  ChDir "" & Pfad 'unnötig!
  
  
  Set wksQuell = Sheets("Rechnung")
  
  'öffnet die Journaldatei
  Workbooks.Open Filename:="" & Pfad & Datei
  
  'den Namen der Zieldatei und des Blattes jährlich anpassen
  Set wks = Workbooks("Journal.xls").Sheets("2012")
  With wks
    lgRow = .Range("A65536").End(xlUp).Row + 1
    .Cells(lgRow, 1) = wksQuell.Cells(17, 3)
    .Cells(lgRow, 2) = wksQuell.Cells(17, 4)
    .Cells(lgRow, 3) = wksQuell.Cells(3, 3)
    .Cells(lgRow, 4) = wksQuell.Cells(9, 1)
    .Cells(lgRow, 5) = wksQuell.Cells(29, 7)
    .Cells(lgRow, 6) = wksQuell.Cells(31, 7)
    .Cells(lgRow, 7) = wksQuell.Cells(32, 7)
  End With
  
  'speichert und schließt die Journaldatei
  Workbooks("Journal.xls").Save
  Workbooks("Journal.xls").Close
  On Error GoTo 0
  
  'druckt Rechnung aus und speichert aktuelle Rechnung als Datei ab
  Dim Kopien As Variant
  If MsgBox("Rechnung ausdrucken?", vbYesNo, "Drucken") = vbYes Then
    Do
      Kopien = InputBox("Anzahl Kopien", "Drucken", 1)
      If StrPtr(Kopien) = 0 Then Exit Sub
      If IsNumeric(Kopien) Then Exit Do
      MsgBox "Bitte eine Zahl eingeben!", vbExclamation, "Hinweis"
    Loop
    ActiveSheet.PrintOut From:=1, To:=1, Copies:=CLng(Kopien)
  End If
  
  'den Pfad der Zieldatei jährlich anpassen
  Pfad = "\\Kati\user\Ausgangsrechnungen\2012\"
  Name1 = Cells(17, 1)
  Name2 = Cells(17, 3)
  Name3 = Cells(17, 4)
  
  On Error GoTo ErrExit
  Application.DisplayAlerts = False
  ActiveWorkbook.SaveAs Filename:=Pfad & Name1 & " " & Name2 & " " & Name3 & ".xls", FileFormat:=-4143
  
  ErrExit:
  Application.DisplayAlerts = True
  
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "'komplett'" & vbLf & String(60, "_") & _
        vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
        "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
        .Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
        "VBA - Fehler in Modul - Modul1"
      .Clear
    End If
  End With
  
End Sub



« Gruß Sepp »

Anzeige
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 12:44:38
Mike
Hallo Sepp,
Die Fehlermeldung lautet: Laufzeitfehler 1004 - Die Methode ´SaveAs´ für das Objekt ´_Workbook´ ist fehlgeschlagen.
Gruß
Mike
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 12:50:26
Josef

Hallo Mike,
Sub komplett()
  Dim lgRow As Long
  Dim wks As Worksheet, wksQuell As Worksheet
  Dim Pfad As String, Name1 As String, Name2 As String, Name3 As String, Datei As String
  
  'setzt die Rechnungsnummer hoch
  With Worksheets("Rechnung").Range("D17")
    .Value = .Value + 1
  End With
  
  'übeträgt Rechnungsdaten ins Journal
  Pfad = "\\Kati\user\Ausgangsrechnungen\2012\"
  Datei = "Journal.xls"
  ChDir "" & Pfad 'unnötig!
  
  
  Set wksQuell = Sheets("Rechnung")
  
  'öffnet die Journaldatei
  Workbooks.Open Filename:="" & Pfad & Datei
  
  'den Namen der Zieldatei und des Blattes jährlich anpassen
  Set wks = Workbooks("Journal.xls").Sheets("2012")
  With wks
    lgRow = .Range("A65536").End(xlUp).Row + 1
    .Cells(lgRow, 1) = wksQuell.Cells(17, 3)
    .Cells(lgRow, 2) = wksQuell.Cells(17, 4)
    .Cells(lgRow, 3) = wksQuell.Cells(3, 3)
    .Cells(lgRow, 4) = wksQuell.Cells(9, 1)
    .Cells(lgRow, 5) = wksQuell.Cells(29, 7)
    .Cells(lgRow, 6) = wksQuell.Cells(31, 7)
    .Cells(lgRow, 7) = wksQuell.Cells(32, 7)
  End With
  
  'speichert und schließt die Journaldatei
  Workbooks("Journal.xls").Save
  Workbooks("Journal.xls").Close
  On Error GoTo 0
  
  'druckt Rechnung aus und speichert aktuelle Rechnung als Datei ab
  Dim Kopien As Variant
  If MsgBox("Rechnung ausdrucken?", vbYesNo, "Drucken") = vbYes Then
    Do
      Kopien = InputBox("Anzahl Kopien", "Drucken", 1)
      If StrPtr(Kopien) = 0 Then Exit Sub
      If IsNumeric(Kopien) Then Exit Do
      MsgBox "Bitte eine Zahl eingeben!", vbExclamation, "Hinweis"
    Loop
    ActiveSheet.PrintOut From:=1, To:=1, Copies:=CLng(Kopien)
  End If
  
  'den Pfad der Zieldatei jährlich anpassen
  Pfad = "\\Kati\user\Ausgangsrechnungen\2012\"
  Name1 = Cells(17, 1)
  Name2 = Cells(17, 3)
  Name3 = Cells(17, 4)
  
  On Error GoTo ErrExit
  Application.DisplayAlerts = False
  ActiveWorkbook.SaveAs Filename:=Pfad & Name1 & " " & Name2 & " " & Name3 & ".xls", _
    FileFormat:=IIf(Val(Application.Version) < 12, -4143, 56)
  
  ErrExit:
  Application.DisplayAlerts = True
  
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "'komplett'" & vbLf & String(60, "_") & _
        vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
        "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
        .Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
        "VBA - Fehler in Modul - Modul1"
      .Clear
    End If
  End With
  
End Sub



« Gruß Sepp »

Anzeige
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 12:58:20
Mike
Hallo Sepp,
leider unverändert. Die Datei wird nicht gespeichert (gleiche Fehlermeldung).
Gruß
Mike
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 13:34:28
Mike
Hallo Sepp,
hier noch ein Nachtrag, der mir gerade aufgefallen ist: Die aktive Datei wird sogar umbenannt, nur das automatische speichern im Zielpfad funktioniert leider nicht.
Trotzdem zwischendurch schon mal vielen Dank für Deine Bemühungen.
Gruß
Mike
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 13:36:32
Hajo_Zi
Hallo Mike,
umbenannt wird die Datei nur wenn sie gespeichert wurde.
Gruß Hajo
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 13:52:18
Mike
Hallo Hajo,
ja, dachte ich auch, aber leider erscheint die Datei nicht im Zielordner (und auch nirgendwo anders). Stattdessen bekomme ich die Fehlermeldung. Ich bin inzwischen echt ratlos.
Gruß
Mike
Anzeige
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 13:55:20
Hajo_Zi
Hallo Mike,
ich vermute Du schaust in den falschen Ordner. Den Namen bekommst Du nur duurch speichern geänderrt.
Gruß Hajo
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 14:06:40
Mike
Hallo Hajo,
ich zweifle inzwischen ja auch schon an mir selber, aber es gibt die Datei wirklich nicht.
Wenn ich beispielsweise die Rechnungsnummern 0001 bis 0003 auf meinem Computer erstelle, finde ich auch alle Dateien im Zielordner. Öffnet dann meine Frau die letzte gespeicherte Datei (0003) und will Nummer 0004 erstellen kommt es zur Fehlermeldung. Die aktive Datei heißt dann zwar wie beschrieben 0004 aber ich finde sie nirgendes (habe das komplette Netzwerk durchsucht). Ich sehe dann also im Zielordner nur Nummer 0003, öffne diese und kann Rechnung 0004 erstellen und speichern. Die erscheint dann auch wieder im Zielordner. (In der Journaldatei ist die Rechnungsnummer 0004 dann natürlich doppelt vergeben. )
Liebe Grüße
Mike
Anzeige
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 14:10:55
Hajo_Zi
Hallo Mike,
die Datei hat den Namen, also schließe Sie. Falls es Sie nicht gibt könntest Du sie nicht öffnen. Schließe Excel.
Ich habe mir Excel in die Taskleiste gezogen, da mache ich ein rechst klick drauf und sehe die letzten geöffneten, da öffne nun diese nicht vorhandene Datei und Du wirst sehen Excel macht Sie auf. Also muß Sie irgendwo sein. Mache Speichern unter und er zeigt Dir den Ordner an.
Gruß Hajo
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 14:35:55
Mike
Hallo Hajo,
die Datei wird in den zuletzt verwendeten Dokumenten nicht angezeigt.
Beim Schließen von Excel wird auch nicht gefragt, ob die Datei gespeichert werden soll.
Gruß
Mike
Anzeige
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 14:43:13
Mike
Hallo Hajo,
noch ein Nachtrag: Die Datei wird nach dem ausführen des Makros zwar in der Bildschirmanzeige umbenannt, aber wenn ich dann manuell auf ´Speichern unter`gehe ist im Normalfall ja der Dateiname vorausgefüllt. Dies ist aber auch nicht der Fall.
Gruß
Mike
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 19:24:21
Mike
Hallo Sepp, hallo Hajo,
ich bin jetzt hinter folgenden Zusammenhang gekommen:
Es hat was mit dem Netzwerkpfad zu tun!
Nehme ich: Pfad = "\\Kati\Users\user\Ausgangsrechnungen\2012" funktioniert es bei meiner Frau.
Nehme ich: Pfad = "\\Kati\user\Ausgangsrechnungen\2012" funktioniert es bei mir.
Ich weiß nicht genau woran es liegt, ich habe alle Berechtigungen etc., aber je nachdem was ich einstelle geht es auf dem einen oder anderen Rechner.
Danke für Eure Mühen.
Gruß
Mike
Anzeige
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 19:28:10
Hajo_Zi
Hallo Mike,
dann wird Dir wohl nichhts übrig bleiben als den Benutzer abzufrage. Ich sehe ertmal keinemn Grund.
Gruß Hajo
Neuer Ansatz zum ermitteln der fld Nummer
19.02.2012 19:59:06
Mike
Hallo Hajo und alle anderen,
ich hätte da evt. noch einen anderen Ansatz, aber mit meinen minimalst VBA Kenntnissen bräuchte ich auch dabei Hilfe.
Ich würde gerne die lfd. Rechnungsnummer nicht durch öffnen der letzten gespeicherten Datei und das Ausführung von
With Worksheets("Rechnung").Range("D17")
.Value = .Value + 1
End With
ermitteln, (ist ohnehin fehlerbehaftet, wenn z. B. nicht die zuletzt gespeicherte Datei verwendet wird) sondern die letzte Nummer einfach aus der Journaldatei auslesen (also öffnen, Wert ermitteln und wieder schließen), im aktiven Dokument den Wert um 1 erhöhen und dann wieder in die Journaldatei schreiben.
Wäre das nicht der bessere Ansatz? Dann hätte ich einfach eine Vorlage auf dem Rechner meiner Frau und eine auf meinem und würde dadurch z. B. auch die Benutzerabfrage umgehen.
Gruß
Mike
Anzeige
Such doch mal im Archiv...
20.02.2012 10:06:43
robert
Hi,
da gibts schon fertige Lösungen, musst nur suchen...
zB. Daten aus geschlosseber Datei, oder Rechnungsnummer weiterzählenm usw....
Gruß
robert
AW: Makro geht unter 2003 aber nicht unter 2007
20.02.2012 10:40:49
Tino
Hallo,
gib auf dem Rechner mal den Ordner Ausgangsrechnungen für die beiden User frei und verwende den Pfad
\\Rechnername oder IP-Adresse\Ausgangsrechnungen\....
Gruß Tino
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 12:10:21
Hajo_Zi
Hallo Mike,
schalte die Bildschirmmitteilungen aus.
Application.DisplayAlerts = False ‚ Mitteilungen
Ab 2007 muss der Typ angegeben werden, das braucht in 2003 nicht , FileFormat :=xlExcel8

Anzeige
AW: Makro geht unter 2003 aber nicht unter 2007
19.02.2012 13:09:15
Mike
Hallo Hajo,
das mit dem FileFormat hat leider nicht den gewünschten Erfolg gebracht.
Gruß
Mike
AW: Compatibility Pack vorhanden?
19.02.2012 19:21:34
Franz
Hallo Mike,
ohne Gewähr und Pistole!
Grüße
Franz D.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige