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

problem - hat jmd. eine idee?

problem - hat jmd. eine idee?
10.06.2004 12:21:37
micha
hallo zusammen,
hab den auftrag bekommen ein makro zu erstellen. es handelt sich um eine excel arbeitsmappe von der nur 1 tabellenblatt als email an eine andere person verschickt wird. diese person füllt das blatt aus und sendet es wieder zurück. soweit kein problem.
jetzt soll ich ein makro programmieren, dass das ausgefüllte blatt wieder in die ursprüngliche datei eingliedert, also durch das nicht ausgefüllte blatt ersetzt.
hat mir da jemand einen lösungsansatz. ich habe mir schon überlegt, ob es möglich ist wenn beide dateien im excel geöffnet sind über ein button das tebellenblatt "rüberzuziehen" und durch das andere zu erstetzen. hab aber nicht wirklich ein plan ob das so funktioniert bzw. wie...
für eine kleine einstiegshilfe wäre ich sehr verbunden.
viele grüße - micha

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: problem - hat jmd. eine idee?
Michael
Hallo Micha,

Sub Aktualisierte_Tabelle_uebernehmen()
' Zeiger auf Arbeitsmappe
Dim wb As Workbook, wbnew As Workbook
' Zeiger auf Sheets
Dim wks As Worksheet, wksnew As Worksheet
' Name der aktualisierten Arbeitsmappe
Dim str_UName As String
' Bei Laufzeitfehler trotzdem nächtste Zeile ausführen
On Error Resume Next
' Zeiger auf aktuelles Workbook setzen
Set wb = ThisWorkbook
' Namen des neuen Workbooks erzeugen
strUName = Left(wb.Name, Len(wb.Name) - 4) & " - " & wb.ActiveSheet.Name
' Workbook mit dem einzelnen Sheet oeffnen
Set wbnew = Workbooks.Open(strUName)
' Im Fehlerfalle Nachricht mit Fehlerbeschreibung ausgeben und beenden
If Err.Number <> 0 Then
MsgBox Err.Description
Exit Sub
End If
' Zeiger auf das aktualisierte Sheet setzen
Set wksnew = wbnew.Sheets(1)
' In der Sammelmappe Zeiger auf das zu aktualisierende Worksheet setzen
Set wks = wb.Sheets(wksnew.Name)
' Im Fehlerfalle Nachricht mit Fehlerbeschreibung ausgeben und beenden
If Err.Number <> 0 Then
MsgBox Err.Description
wbnew.Close savechanges:=False
Exit Sub
End If
' Zu aktualisierendes Worksheet umbenennen
wks.Name = wks.Name & "_bak"
' Aktualisiertes Blatt der Sammelmappe hinzufügen
wksnew.Copy Before:=Workbooks(wb.Name).Sheets(wks.Name)
' Aktualisierte Arbeitsmappe schließen
wbnew.Close savechanges:=False
' Sicherungskopie des zu aktualisierenden Blattes löschen
wks.Delete
' Sammelmappe speichern
wb.Save
End Sub

BITTE BEACHTEN:
Diese Vorgehensweise funktioniert natürlich nur, wenn auf das zu aktualisierende Blatt NIRGENDWO verwiesen wird ! Ansonsten zerschießt du dir deine Bezüge !!!
Gibt es Bezüge auf dieses Blatt und es ist garantiert, dass der Benutzer, der das Blatt aktualisiert hat, weder das Layout, noch Formeln geändert hat (Empfehlung: Blatt mit Passwort schützen), kann man den verwendeten Bereich kopieren und einfügen.
Ist auch dies nicht garantiert, hilft nur eine Zellenweise Übernahme von neu nach alt.
CIAO
Michael
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige