Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1176to1180
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
Inhaltsverzeichnis

Makrofehler

Makrofehler
Werner
Hallo zusammen,
das nachfolgende Makro fuktioniert soweit ganz gut bis auf einen Fehler auf den ich aber leiter nicht komme.
1. Die Datei wirt kopiert
2. Das Tabellenblatt wird kopiert
3. Die gewünschten Daten werden zwar kopiert, aber nicht in das Blatt 200 der kopierten Datei in der ich
mich befinde sondern in das Blatt 200 der Ursprüngliche Datei.
Wo liegt da der Fehler ?
über eine Lösung würde ich mich sehr freuen!
Gruß Werner
Sub CopyActiveFile()
Dim wbAktiv As Workbook, vNewName As Variant, sInitialName As String
Set wbAktiv = ActiveWorkbook
'Vorgabe für neuen Namen generieren
sInitialName = "Neu " & Left(wbAktiv.Name, InStrRev(wbAktiv.Name, ".") - 1)
'Dialog zur Eingabe/Auswahl des Dateinamens anzeigen
vNewName = Application.GetSaveAsFilename(InitialFileName:=sInitialName, _
Filefilter:="Excel (*.xls;*.xlsx;*.xlsm;*.xlsb),*.xls;*.xlsx;*.xlsm;*.xlsb", _
Title:="Bitte neuen Dateinamen eingeben/auswählen")
If vNewName = False Then GoTo Beenden 'Dialog wurde abgebrochen
'Neuen Namen mit Name der aktiven Datei vergleichen
If UCase(wbAktiv.FullName) = UCase(vNewName) Then
MsgBox "Als neuer Name wurde der Name der aktiven Datei gewählt. " & vbLf _
& "Das ist nicht zulässig!", vbInformation + vbOKOnly
GoTo Beenden
End If
If Dir(vNewName)  "" Then
If MsgBox("Eine Datei mit dem ausgewählten Namen existiert bereits. " & vbLf _
& "Datei """ & vNewName & """ überschreiben?", _
vbQuestion + vbOKCancel + vbDefaultButton2) = vbCancel Then
GoTo Beenden
End If
End If
'Kopie der Datei unter dem neuen Namen speichern
wbAktiv.SaveCopyAs Filename:=vNewName
'Kopie öffnen
Set wbAktiv = Workbooks.Open(Filename:=vNewName)
'Blatt 1 aktivieren und Namen in B1 eintragen
With wbAktiv
.Worksheets(200).Activate
Dim einGabe
einGabe = Application.InputBox("Bitte Zahl eingeben", "Eingabe", , , , , , 1)
If Not VarType(einGabe) = vbBoolean Then Range("A1") = einGabe
'End Sub

' .Worksheets(1).Range("B1") = .FullName 'name inkl. Pfad
' .Worksheets(1).Range("B1") = .Name 'nur Dateiname
'.Save
End With
Beenden:
End Sub
Sub BlattKopieren()
Dim NeuerName As String, liSuche As Integer, lboShName As Boolean
Do Until lboShName = True
NeuerName = InputBox("Bitte geben Sie den neuen Namen des Blattes ein!")
If NeuerName = "" Then Exit Sub
lboShName = True
For liSuche = 1 To Sheets.Count
If LCase(NeuerName) = LCase(Sheets(liSuche).Name) Then
MsgBox "Blattname schon vorhanden"
lboShName = False
Exit For
End If
Next
Loop
ActiveWorkbook.ActiveSheet.Copy after:=Sheets(Sheets.Count)
'Sheets ("Eingabe") .Copy After:=Sheets(i)
ActiveSheet.Name = NeuerName
With ActiveSheet.UsedRange
.Value = .Value
End With
End Sub
Sub DatenKopieren()
Dim lngCol As Long
For lngCol = Columns("B:B").Column To Columns("N:N").Column Step 4
Tabelle200.Range(Tabelle200.Cells(1, lngCol), Tabelle200.Cells(49, lngCol)).Value = ActiveSheet. _
Range( _
ActiveSheet.Cells(1, lngCol + 1), ActiveSheet.Cells(49, lngCol + 1)).Value
Next
End Sub

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makrofehler
26.09.2010 07:47:38
BoskoBiati
Hallo,
soweit ich das kenne, ist die aktive Datei immer diejenige, in welcher sich der laufende Code befindet.
Möge mich jemand eines Besseren belehren.
Gruß
Bosko
AW: Makrofehler
26.09.2010 10:06:22
JogyB
Hallo Bosko,
das stimmt nicht.
Wenn man die Tabellen mit dem Objektnamen anspricht, dann bezieht sich das auf die Datei, in der der Code steht. Wenn man sie mit Worksheets(...) oder Sheets(...) anspricht, dann bezieht es sich auf die gerade aktive Arbeitsmappe.
Und das genau ist hier der Fehler. Die Referenzierung erfolgt über den Objektnamen. Entweder muss da noch die Arbeitsmappe mit Workbooks(DATEINAME) oder wenn es aktiv ist ActiveWorkbook davor bzw. es muss über Worksheets("Tabelle200") angesprochen werden.
Gruß, Jogy
Anzeige
AW: Makrofehler
26.09.2010 11:20:32
Daniel
Hi Bosko
nein, das ist nicht richtig.
die aktive Datei ist immer diejenige, die gerade aktiv ist (kanns halt nicht besser beschreiben)
wenn du z.B. per Makro eine neue Datei anlegst (Workbooks.Add) oder öffnest (Workbooks.Open) oder selbst den Fokus wechsels (Workbooks("xxx").activate) dann wechselt der Fokus und die neu erstelle/geöffnete Datei ist die aktive.
Ebenso ist es ja möglich, über die Makro-Liste die Makros aller geöffneten Datein zu starten, auch die derjenigen, die gerade nicht aktiv sind. Auch in diesem Fall ist die aktive Datei diejenige, die beim Start des Makros aktiv war und nicht diejenige, in der das Makro steht.
deswegen sollte man bei Makros, die mit mehreren Dateien operieren, immer THISWORKBOOK verwenden, wenn man sich auf die Datei beziehen will, in der das Makro steht.
Gruß, Daniel
Anzeige
AW: Makrofehler
26.09.2010 11:49:49
BoskoBiati
Hallo,
Danke für die Erläuterungen.
Gruß
Bosko
AW: Makrofehler
26.09.2010 11:54:29
Gerd
Hallo Werner,
vielleicht so:
Sub DatenKopieren()
Dim lngCol As Long
For lngCol = Columns("B:B").Column To Columns("N:N").Column Step 4
With Worksheets("Tabelle200")
.Range(.Cells(1, lngCol), .Cells(49, lngCol)).Value = ActiveSheet. _
Range(ActiveSheet.Cells(1, lngCol + 1), ActiveSheet.Cells(49, lngCol + 1)).Value
End With
Next
End Sub
Gruß Gerd
AW: Makrofehler
26.09.2010 19:26:49
Werner
Hallo zusammen,
Danke für die vielen Antworten, aber irgendwie komme ich nicht weiter. Den Vorschlag von Gerd habe ich übernommen, bekomme aber die Fehlemeldung : Index außerhalb des gültigen Bereichs.
Wer kann mir sagen , wie ich das Makro umschreiben müsste ?
Viele Grüße Werner
Anzeige
AW: Makrofehler
27.09.2010 09:48:39
Yusuf
Moin,
ich vermute die Schreibweise deiner Tabelle "Tabelle200" is anders geschrieben als die Schreibweise im Makro.
Leerzeichen oder Unterstrich.
mfg
Yusuf
AW: Makrofehler
28.09.2010 20:16:00
Werner
Hallo nochmal,
das Problem bleibt mir treu! es liegt nicht an den Namen, denn es wird die Datei kopiert und dan auch in der kopierten Datei das Tabellenblatt 200 kopiert jedoch beim kopieren der Daten werden die Daten in die ursprüngliche Datei kopiert( und nicht in die kopierte) versteh ich nicht!!?
wer kann HELFEN?
Gruß Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige