Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
492to496
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
492to496
492to496
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro über Button ansteuern / copy großer Mengen

Makro über Button ansteuern / copy großer Mengen
29.09.2004 12:01:41
Markus
Hallo,
ich habe ein Makro, das Dateien von einer anderen ECXEL Datei in ein spezielles Arbeitsblatt kopieren soll und dann nach noch einige Berechnungen anstellen soll.
Das Makro funktioniert auch in der aktuellen Version, wenn ich jedoch versuche das ganze mit einem Button zu verbinden, so klappt es auf einmal nicht mehr. Habe ich hier irgendetwas zu beachten? Ich denke mal dass es an dem PRIVATE liegt, doch wie gesagt wenn ich es über Tools -- Makro ansteuere funktioniert es. (ohne Private)
Hier kommt gleich "Bitte die Exceldatei mit den Quelldaten öffnen!" obwohl die Datei geöffnet ist.
([größer] steht für das größer Zeichen)
Private Sub CommandButton3_Click()
Dim wkb As Workbook
Dim wkb2 As Workbook
Dim wkb3 As Workbook
Dim wks As Worksheet
Dim wks2 As Worksheet

MyPath = ThisWorkbook.Path
myFile = ThisWorkbook.Name
sourceFile = Sheets("Root").Range("C21").Value
On Error Resume Next
'Referenzdatei wird aktiviert, bei nicht geöffnet kommt eine Fehlermeldung
Set wkb = Workbooks(sourceFile)
If Err [größer] o Or wkb Is Nothing Then
Beep
MsgBox _
prompt:="Bitte die Exceldatei mit den Quelldaten öffnen!"
Exit Sub
End If
Set wks = wkb.Worksheets(1)
If Err [größer] o Or wks Is Nothing Then
Beep
MsgBox _
prompt:="Die Testdatei enthält das Zielblatt nicht!"
Exit Sub
End If
...
-----------------------
im zweiten teil kopiere ich dann ein komplettes Blatt in das andere. Im moment sind das noch überschaubare 100 zeilen, doch ich denke irgendwann werden hier über 3000 Zeilen mit 8 Spalten stehen, ab wann fängt EXCEL an zu streiken, tut es das überhaupt und gibt es eine einfachere Möglichkeit als dann z.b. immer 50 zeilen zu kopieren?
'Springt zurück ins neue ExcelSheet
Set wkb3 = Workbooks(myFile)
wkb3.Sheets("Division CS TEST").Select
' Sheets("Sheet2").Select
Cells.Select
Selection.ClearContents
Windows(sourceFile).Activate
Cells.Select
Selection.Copy
Windows(myFile).Activate
ActiveSheet.Paste
.
.
Ich hoffe es ist nicht zu dreist hier das halbe Makro überprüfen zu lassen ;-)
Danke
Markus

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro über Button ansteuern / copy großer Mengen
29.09.2004 13:48:33
Axel
Hallo Markus,
statt eines ActiveX-Buttons aus der "Steuerelement-Toolbox" kannst du auch einen normalen Button aus der Symbolleiste "Formular" verwenden. Der lässt sich zwar nicht so komfortabel formatieren, erfüllt aber auch seinen Zweck.
Der Vorteil ist der, dass du eine normale Prozedur an den Button binden kannst, die dann in einem Standard-Modul steht. Du kannst ein und den selben Code dann wahlweise über "Extras | Makro", über Hotkeys oder eben über den Button starten.
Bei ActiveX-Elementen musst du schon die vorgegebenen Events mit den entsprechenden Namen in den jeweiligen Klassenmodulen verwenden.
Trotzdem sollte dein Code auch über einen ActiveX-Button einwandfrei laufen. In bestimmten Konstellationen gibt es Probleme wenn der Button durch den Click den Focus nicht verliert. Dann sollte die Eigenschaft "TakeFocusOnClick" auf False gestellt werden.
Die Fehlerabfragen sind doppelt gemoppelt. Es reicht, die Variablen auf Nothing zu prüfen.
Warum der Hinweis zum Öffnen der angeblich bereits geladenen Quelldatei kommt, kann ich nicht beurteilen. Der Code sieht eigentlich ganz ok aus. Den solltest du mal im Einzelschritt durchlaufen und die Variable sourceFile prüfen.
Insgesamt vermisse ich sowieso einige Deklarationen. Deine Objektvariablen sind deklariert, die übrigen (MyPath, MyFile, etc.) aber nicht.
Ein Tabellenblatt lässt sich einfach per Copy kopieren, also Worksheets("xyz").Copy. Es müssen nicht die Zellen (einzeln) kopiert werden. Schau dir mal den Hilfe-Eintrag zur Copy()-Methode an.
Und ein letzter Hinweis. Auf Select und Activate lässt sich meist verzichten.
Gruß
Axel
Anzeige
AW: Makro über Button ansteuern / copy großer Mengen
29.09.2004 14:22:36
Markus
Hallo Axel,
vielen Dank für die ausführliche Anleitung.
Das Problem mit dem Button hatte ich schon selber gelöst udn das auch gepostet aber irgendwie ging der Eintrag dann unter.
Mein zweites problem werde ich dann in der Tag so wie von dir beschrieben lösen, d.h. ich lösche das Blatt einfach raus und werde dann das neue Blatt reinkopieren, so löse ich auch noch einige andere Probleme.
Danke
Markus

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige