2016-04-27 7 views
0

Bitte kann jemand meinen aktuellen Code verbessern - öffnet eine Box für den Benutzer, um eine Datei auszuwählen, und wenn die richtige Datei ausgewählt ist, fügt sie die Daten zur richtigen Registerkarte. Ich bin mir jedoch nicht sicher, wie ich es wie folgt verbessern könnte:Wie verbessere ich meinen vorhandenen Code für GetOpenfile-Funktion

1) Kann ich den Namen der Zieldatei (Kalkulation) im Code angeben, damit er nur für diese Datei funktioniert? Im Moment kann der Benutzer jede Datei auswählen und er sucht nach dem Blattnamen "SAP" und wenn er nicht finden kann, dass es nicht funktioniert - geht in den Debug-Modus - möchte ich ihm die Nachricht "Makro wird jetzt beenden geben weil Sie die korrekte Datei nicht ausgewählt haben ".

2) Wie 1 oben, aber die Nachricht ist jetzt "Makro wird jetzt beendet, da kein SAP-Blatt in der Datei vorhanden ist". Diese Nachricht wird angezeigt, nachdem die richtige Datei ausgewählt wurde, aber kein SAP-Blatt darin enthalten ist.

2) Löschen Sie die vorhandenen Daten im Ziel „SAP“ Blatt im angegebenen Bereich (do i im Moment den richtigen Code habe?)

3) Wenn der Benutzer auf Abbrechen klickt (weil sie nicht tun möchte fortfahren) eine Meldung erscheint und Sub endet - "Das Makro wird jetzt beendet, weil Sie die Datei nicht ausgewählt haben"

Vielen Dank!

'Set source workbook 
Set wb = ActiveWorkbook 
'Open the target workbook 
vFile = Application.GetOpenFilename("Excel-files,*.xlsm", 1, "Please select file", , False) 
Set wb2 = ActiveWorkbook 
'clear existing values form target book 
wb2.Worksheets("SAP").Range("A:N").ClearContents 
'Copy/paste the visible data to the new workbook 
wb.Worksheets("sheet1").Cells.SpecialCells(xlCellTypeVisible).Copy 
wb2.Worksheets("SAP").Range("A1").PasteSpecial Paste:=xlPasteValues 
ActiveSheet.Range("A1").Select 
Application.CutCopyMode = False 
Windows("Format MCP6 Final.xlsm").Close 

Antwort

1

Ich glaube, Sie die meisten Fragen für sich selbst gelöst haben könnten durch das spezifische Problem der Suche, aber ich Gonna versuchen Sie trotzdem zu helfen.

1 Wenn Sie den Namen der Datei kennen, warum lassen Sie ihn wählen? Auf jeden Fall können Sie den Namen mit „workbook.name“ überprüfen und zu testen, was Sie

2 wollen, die einfach durch das getan hat:

If (Worksheets("SAP").Name = "") Then 
     MsgBox "Macro will end now because there is no SAP sheet in the file" 
     Exit Sub 
    End If 

2,2? Hängt davon ab, was Sie löschen möchten. ClearContents löscht keine Formatierungen.

3 Sie haben vFile als Variant zu definieren und es für falsch überprüfen:

vFile = Application.GetOpenFilename("Excel-files,*.xlsm", 1, "Please select file", , False) 

if vFile = false then 
    MsgBox "The macro will end now because you did not select the file" 
    Exit Sub 
End If 

Aber für die Zukunft, spaltete die Frage 4 in 4 Posts, und versuchen Sie beschreiben, was Sie versucht haben, und wo Sie habe Probleme. Und Fragen wie: "Ist es richtig, was ich getan habe?" sind nicht für SO geeignet. Versuchen Sie es und wenn Sie Probleme haben, fragen Sie, warum diese Probleme auftreten.

+0

Vielen Dank, sehr geschätzt! – Zakky

Verwandte Themen