Zunächst bin ich ein Anfänger. Jeder Rat ist willkommen! Ich habe einfach versucht, bei der Arbeit zu programmieren, um später beim Verwalten von 100-er Dateien Zeit zu sparen.Mit GetObject bearbeiten andere Arbeitsmappen funktioniert 1 Mal aus x
ich ein Excel-Makro bin Gebäude und, ebenso wie viele andere Benutzer, Ich versuche, die folgendes zu tun:
- Haben Sie das Makro „residieren“ in einer Arbeitsmappe „A“.
- Auslöser der Makro-Tastenkombination aus einer Arbeitsmappe „B“
- Haben Sie das Makro tun, um seine Magie in der Arbeitsmappe „B“ (welches ein Blatt aus einer Arbeitsmappe „C“ Kopieren)
Dies beinhaltet , zu einem bestimmten Zeitpunkt den Benutzer zur Arbeitsmappe "C" auffordern, eine Variable definieren und Arbeitsmappe C darin einfügen.
Der folgende Code ist ein Teil des Makros und funktioniert nur einmal aus x und "stürzt" scheinbar ohne Warnung oder Fehlercode ab oder lässt mich sogar wissen, dass es abgestürzt ist.
'All the following code is in workbook "A"
Dim fd As FileDialog
Dim ffs As FileDialogFilters
Dim DestWkb As Workbook
Dim SourceWkb As Workbook
Dim SourceWkbPath As String
'Set active workbook as destination workbook (this is workbook "B")
Set DestWkb = ActiveWorkbook
'Prompt user for source workbook (this will be workbook "C")
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
Set ffs = .Filters
With ffs
.Clear
.Add "Excel", "*.xlsx"
End With
.AllowMultiSelect = False
If .Show = False Then Exit Sub
SourceWkbPath = fd.SelectedItems(1)
End With
'Here is where it starts to go wrong..
'This message box will show up with correct data in it :
MsgBox SourceWkbPath
'This line seems to work, as I can see in VB the workbook specified by the user
Set SourceWkb = GetObject(SourceWkbPath)
'From here... it's like there was an Exit Sub. I will rarely see the following msgbox :
MsgBox "Success"
Hat schon jemand solche Probleme gehabt? Vielen Dank!
-Code funktioniert gut für mich. Können Sie es abstürzen, während Sie durch den Code gehen? oder nur wenn Sie geradeaus laufen. Gibt es eine Fehlerbehandlung? – gtwebb
Ich würde 'Workbooks.Open (SourceWkbPath)' stattdessen verwenden. –
Guter Vorschlag von Doug. Arbeite direkt mit dem Buch – brettdj