Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Benötige Hilfe bei Makrozusammenfassung | Herbers Excel-Forum


Betrifft: Benötige Hilfe bei Makrozusammenfassung von: Mike
Geschrieben am: 12.02.2012 13:28:17

Hallo Zusammen,

bin absoluter VBA Neuling und bekomme einfach ein Makro nicht hin.

Das war mein Ziel:

1. Eine fortlaufende Auftragsnummer generieren - erledigt
2. Werte in eine separate Journaldatei übernehme - erledigt, wenn diese vorher geöffnet wurde
3. Datei drucken und speichern - erledigt

4. Alles in ein Makro zusammenfügen - offen

Für die Punkte 1 - 3 habe ich mir bereits Lösungen zusammengestellt, die einzeln reibungslos funktionieren. Auch die Kombinationen vom 1+2 bzw. 1+3 laufen reibungslos.

Nur alles drei zusammen hakt und ich weiß nicht genau woran es liegt.

Hier mal das was ich bisher zusammengebracht habe:


Sub komplett()

'setzt die Rechnungsnummer hoch
With Worksheets("Rechnung").Range("D17")
.Value = .Value + 1
End With

'übeträgt Rechnungsdaten ins Journal
Dim lgRow As Long
Dim wks As Worksheet
Dim wksQuell As Worksheet
'eventuell den Namen des Quellblattes anpassen!!
Set wksQuell = Sheets("Rechnung")
'den Namen der Zieldatei und des Blattes jährlich anpassen
Set wks = Workbooks("Journal.xls").Sheets("Tabelle1")
With wks
lgRow = .Range("A65536").End(xlUp).Row + 1
  .Cells(lgRow, 1) = wksQuell.Cells(9, 1)
  .Cells(lgRow, 2) = wksQuell.Cells(10, 1)
  .Cells(lgRow, 3) = wksQuell.Cells(11, 1)
  .Cells(lgRow, 4) = wksQuell.Cells(12, 1)
  .Cells(lgRow, 5) = wksQuell.Cells(29, 7)
  .Cells(lgRow, 6) = wksQuell.Cells(31, 7)
  .Cells(lgRow, 7) = wksQuell.Cells(32, 7)
  End With

'druckt Rechnung aus und speichert 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 pfad, name1, name2 As String

pfad = "\\Kati\user\Ausgangsrechnungen\2012"
name1 = Cells(17, 1)
name2 = Cells(17, 3)
name3 = Cells(17, 4)

Dim i As Long
With Application.FileSearch
.LookIn = pfad
If .Execute > 0 Then i = .FoundFiles.Count
i = i + 1
ActiveWorkbook.SaveAs Filename:=pfad & "\" & name1 & " " & name2 & " " & name3 & ".xls"
End With

End Sub


Der Fehler lautet: Die Methode ´SaveAs´ für das Objekt ´_Workbook´ ist fehlgeschlagen.

Ich vermute, dass durch das Schreiben der Werte in die Journaldatei diese zur aktiven Arbeitsmappe wird und sich deshalb die eigentlich aktive Mappe nicht speichern lässt, oder?

Kann mir jemand bei diesem Problem helfen? Vielleicht ist es nur eine Kleinigkeit.

Im Optimalfall gibt mir auch noch jemand ein Tip, ob man 2) Journaldatei schreiben auch so umsetzen kann, dass diese Datei automatsich geöffnet wird, falls sie noch geschlossen ist.

Vielen Dank im Voraus.

Gruß
Mike

  

Betrifft: AW: Benötige Hilfe bei Makrozusammenfassung von: Martin MJ
Geschrieben am: 12.02.2012 13:40:41

Hi Mike,
wenn jedes Makro für sich funktioniert, dann probiere es mal hiermit...

Sub komplett()

Application.Run ("Makro1")
Application.Run ("Makro2")
Application.Run ("Makro3")

End Sub
Anstelle "Makro1" und ect. estzt Du einfach deine richtigen Namen ein

Mit Application.Run("xxx") startest Du ein anderes Programm, kann man als Unterprogramm verwenden.


Gruß Martin MJ


  

Betrifft: AW: Benötige Hilfe bei Makrozusammenfassung von: Mike
Geschrieben am: 12.02.2012 18:34:50

Hallo Martin MJ,

ich weiß zwar nicht woran es gelegen hat, aber jetzt funktioniert auch meine Ursprungsversion plötzlich einwandfrei. Trotzdem vielen Dank für den schnellen Rat.

Dann bleibt mir als i-Tüpfelchen nur noch das automatische Öffnen, speichern und schließen der Journaldatei.
Ich habe das hier probiert:

Sub komplett()

LW = "\\Kati\user"
Pfad = "\\Kati\user\Ausgangsrechnungen\2012"
Datei = "Journal.xls"

ChDrive LW
ChDir Pfad

Dim lgRow As Long
Dim wks As Worksheet
Dim wksQuell As Worksheet
Set wksQuell = Sheets("Rechnung")

Workbooks.Open Datei

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)
End With

Workbooks("Journal.xls").Save
Workbooks("Journal.xls").Close
On Error GoTo 0


Wenn ich das auf einem lokalen Laufwerk gemacht habe, also z. B. unter

LW = "C:\"
Pfad = "C:\Kati\Testrechnungen"
Datei = "Journal.xls"


hat es funktioniert. Ich möchte es aber gerne im Netz laufen lassen

Die Fehlermeldung lautet: Ungültiger Prozeduraufruf oder ungültiges Argument.

Ich hoffe ich bekommen wieder so schnell Hilfe wie beim ersten Mal.

LG
Mike


  

Betrifft: AW: Benötige Hilfe bei Makrozusammenfassung von: Martin MJ
Geschrieben am: 12.02.2012 19:39:51

Hi Mike,

also ich mache das so....

Sub datei_öffnen()

Const pfad = "C:\Dokumente und Einstellungen\Martin\Eigene Dateien\"
Const datei = "Test.xls"

ChDir "" & pfad
Workbooks.Open Filename:="" & pfad & datei
End Sub
Nach diesem Muster, funktioniert es auch mit speichern und schließen...

Gruß
Martin MJ


  

Betrifft: AW: Benötige Hilfe bei Makrozusammenfassung von: Mike
Geschrieben am: 12.02.2012 19:50:08

Hallo Martin,

ja, ich habe einfach das Laufwerk rausgenommen und schon gings.

Pfad = "\\Kati\user\Ausgangsrechnungen\2012"
Datei = "Journal.xls"

ChDir Pfad


Danke
Mike