Live-Forum - Die aktuellen Beiträge
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

mit zwei Dateien arbeiten

mit zwei Dateien arbeiten
Werner
Hallo zusammen,
das nachfolgende Makro funktioniert am Anfang sehr gut, das Tabellenblatt200 wird auch kopiert und bekommt einen neuen Namen. Doch dan kommt das Problem:die Daten des Neuen Blattes sollen in das Tabellenblatt200 der kopierten Datei (und nicht in die ursprüngliche Datei kopiert werden!!!!) was leiter geschiet. Wo liegt da das Problem?
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)
With wbAktiv
.Worksheets(200).Activate
Dim einGabe
einGabe = Application.InputBox("Bitte das Jahr eingeben, für das die Berechnung durchgefürt  _
werden soll !!", "Eingabe", , , , , , 1)
If Not VarType(einGabe) = vbBoolean Then Range("A1") = einGabe
End With
Beenden:
Dim NeuerName As String, liSuche As Integer, lboShName As Boolean
Worksheets(200).Activate
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)
ActiveSheet.Name = NeuerName
With ActiveSheet.UsedRange
.Value = .Value
Dim lngCol As Long
For lngCol = Columns("B:B").Column To Columns("O:O").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 With
End Sub

Gruß Werner

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

Betreff
Benutzer
Anzeige
AW: mit zwei Dateien arbeiten
28.09.2010 23:08:59
Daniel
Hi
activeWorkbook ist in Makros zu verwenden, die mit mehreren Dateien jonglieren, gefährlich.
besser ist, ActiveWorkbook oder ActiveSheet möglichst zu vermeinden und folgendermassen vorzugehen:
1. alle Zellbezüge, die sich auf das Makro beziehen in dem der Code steht über THISWORKBOOK referenzieren.
2. neu erstelle oder geöffnete Dateien immer gleich einer Objektvariablen zuweisen und dann mit dieser arbeiten
Set wbNeu = Workbooks.Add
Set wbNeu = Workbooks.Open "..."
im Code siehts dann z.B. so aus:
  • set wbNeu = Workbooks.Add
    Thisworkbook.Sheets("Daten").Range("A1:C100").Copy Destination:=wbNeu.Sheets(1).Cells(1,1)

  • Gruß, Daniel
    Anzeige
    AW: mit zwei Dateien arbeiten
    29.09.2010 21:46:18
    Werner
    Hallo Daniel,
    Danke für Deine Antwort, aber leiter weis ich nicht wie ich es in das gesamtmakro mit einbauen muß :-(.
    Könntest Du mir anhand des Makros erklären wie ich es mit unterbringen müßte ?
    Viele Grüße Werner

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige