Excel-VBA-Arbeitsmappe Öffnen, Aktionen ausführen, speichern, schließen
Diese Frage bearbeitet wurde, durch lange Kommentare und updates von vorgeschlagenen Antworten.
Verlangt wie hier ist das Modul 13;
Sub SaveInFormat()
Application.DisplayAlerts = False
Workbooks.Application.ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\jammil\Desktop\AutoFinance\ProjectControl\Data\" & Format(Date, "yyyymm") & "DB" & ".xlsx", leFormat:=51
Application.DisplayAlerts = True
End Sub
Außerdem gibt es Probleme mit dem errorhandling, ich weiß, ich habe mich falsch mit ihm, aber ich bin mehr daran interessiert, bei der Festsetzung der schließen-Funktion in dem moment, bevor ich in Sie. Hier ist die code für die Fehlerbehandlung, die braucht etwas Arbeit
Sub test()
Dim wk As String, yr As String, fname As String, fpath As String
Dim owb As Workbook
wk = ComboBox1.Value
yr = ComboBox2.Value
fname = yr & "W" & wk
fpath = "C:\Documents and Settings\jammil\Desktop\AutoFinance\ProjectControl\Data"
owb = Application.Workbooks.Open(fpath & "\" & fname)
On Error GoTo ErrorHandler:
ErrorHandler:
If MsgBox("This File Does Not Exist!", vbRetryCancel) = vbCancel Then Exit Sub Else Call Clear
'Do Some Stuff
Call Module13.SaveInFormat
owb.Close
dies ist Ihr test-code sowie meinem ändern der Datei-Pfad und name
- gut, ich sah nur noch diese als Ihre Frage: "Insgesamt möchte ich eine Funktion für einen button in meiner userform öffnen bestimmter Arbeitsmappen und entweder führen Sie einige Aktionen, speichern, in ein format, und schließen Sie oder öffnen Sie eine Arbeitsmappe und anzeigen von Informationen." - das sind alle serperate Aufgaben, die sehr leicht zu erhalten, Lösungen für die in der excel-Hilfe oder dem Netz - deine Fragen hier kommt quer ein wenig wie "pretty bitte, meine Arbeit zu tun" - es brechen, mehr-code-Fragen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach der Diskussion die Veröffentlichung aktualisierter Antwort:
Fehlerbehandlung:
Könnten Sie versuchen, etwas wie diese zu fangen, die eine bestimmte Fehlermeldung:
owb.close
wenn Sie es nicht mehr öffnen sowieso. Fügen Sie eine weitere Zeile finden Sie den Namen der neuen Arbeitsmappe, wenn Sie wollen, um es zu schließen nach dem speichern..SaveAs mypath & "\" & yr & mnth
oWB
als Arbeitsmappe und Legen Sie es auf die Arbeitsmappe, die geöffnet wird, basierend auf den Werten, die sich aus der comboboxes? Wenn ich das richtig verstehe, dann führen Sie einige weitere Aktionen auf diese Arbeitsmappe, die geöffnet wurde, und Speichern Sie es als einen anderen Dateinamen (YYYYMMDB.xlsx)? Wenn dem so ist, dann sollten Sie noch in der Lage sein zu verwenden, dieoWB
variable, die Arbeitsmappe zu schließen.Set
vorowb = Application...
Das Problem beheben sollte.Err.Desc
um herauszufinden, was das problem ist und Schritt für Schritt durch den code mit Breakpoints zu identifizieren, die die Zeile die den Fehler verursacht.Exit Sub
VOR dem error-handler. Siehe ganz unten in meiner Antwort nachlesen können.Ich werde versuchen und beantworten Sie einige verschiedene Dinge, aber mein Beitrag kann nicht decken alle Ihre Fragen. Vielleicht mehrere von uns kann auf unterschiedliche Stücke aus dieser. Aber diese info sollte für Sie hilfreich sein. Hier gehen wir..
Eröffnung Einer Separaten Datei:
Öffnen Einer Datei Mit Dem Angegebenen Datum, Falls Es Vorhanden Ist:
Ich bin mir nicht sicher, wie Sie Sie suchen Ihr Verzeichnis, um zu sehen, ob eine Datei vorhanden ist, aber in meinem Fall würde ich nicht die Mühe, danach zu suchen, würde ich nur versuchen, es zu öffnen, und in einige Fehler zu überprüfen, so dass, wenn es nicht existiert, dann anzeigen diese Nachricht oder tun xyz.
Einige häufige Fehler überprüfen Aussagen:
Oder (die bessere option):
würden Sie wahrscheinlich wollen, verwenden Sie die
GoTo ErrorHandler
unten gezeigt um dies zu erreichenViel mehr info auf Error-handling hier: http://www.cpearson.com/excel/errorhandling.htm
Auch wenn Sie mehr erfahren möchten oder wissen müssen generell in VBA würde ich empfehlen, Siddharth Rout ' s Website, er hat viele tutorials und Beispiel-code hier:
http://www.siddharthrout.com/vb-dot-net-and-excel/
Hoffe, das hilft!
Beispiel, wie sichergestellt werden kann Fehler-code wird nicht ausgeführt, EVERYtime:
wenn Sie Debuggen, den code ohne die
Exit Sub
VOR dem error-handler werden Sie bald feststellen den Fehler-handler wird ausgeführt, jedes mal wenn regarldess, wenn es ein Fehler ist oder nicht. Der link unter dem code-Beispiel zeigt eine Antwort auf diese Frage.Betrachten Sie auch diese andere Frage in benötigen Sie mehr Bezug auf, wie das funktioniert:
goto-block nicht funktioniert VBA