Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1720to1724
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

Tabellenblatt kopieren

Tabellenblatt kopieren
31.10.2019 08:32:37
Anja
Hallo zusammen,
ich habe folgendes Problem: Ich möchte gerne ein Tabellenblatt aus einer Datei, die auf einem USB-Stick gespeichert ist, in eine Datei auf dem Rechner kopieren, die ein Tabellenblatt gleichen Namens beinhaltet.
Das heißt zunächst soll der Inhalt des Tabellenblattes, der auf dem Rechner gespeicherten Datei gelöscht werden und dann durch den Inhalt des Tabellenblattes, der auf dem Stick gespeicherten Datei , ersetzt werden.
Hat jemand eine Idee dazu? Vielen Dank.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblatt kopieren
31.10.2019 10:14:27
Nepumuk
Hallo Anja,
sind beide Mappen geöffnet? In welcher der Mappen soll sich der Code befinden?
Gruß
Nepumuk
AW: Tabellenblatt kopieren
31.10.2019 11:36:07
Anja
Hallo Nepumuk,
die Arbeitsmappe auf dem Rechner ist geöffnet. Per Userform möchte ich dann ein Tabellenblatt auf dem Rechner, durch das Tabellenblatt auf dem Stick ersetzten.
Der Code befindet sich in der Datei auf dem Rechner.
(Im Prinzip ist die Datei auf dem Stick identisch mit der Datei auf dem Rechner, d.h. alle Tabellenblätter usw. sind erst einmal gleich. Ich bearbeite aber die Datei an einem externen Rechner und möchte dann nur ganz bestimmte Tabellenblätter der Datei, per Kopie auf einen USB-Stick, an einem anderen Rechner ersetzen.)
Danke schon mal.
Anja
Anzeige
AW: Tabellenblatt kopieren
31.10.2019 14:42:03
Nepumuk
Hallo Anja,
teste mal:
Option Explicit

Public Sub MoveWorksheet()
    
    Const WORKBOOK_NAME As String = "Mappe1.xlsm" 'Mappennamen auf dem Stick
    Const WORKSHEET_NAME As String = "Tabelle1" ' Tabellenname die verschoben werden soll
    
    Const DRIVETYPE_REMOVEABLE As Long = 1
    
    Dim objFileSystemObject As Object, objDrive As Object
    Dim objWorksheet As Worksheet, objWorkbook As Workbook
    Dim objTempWorksheet As Worksheet
    Dim strFileName As String, strTempWorksheetName As String
    Dim blnWorkbookFound As Boolean
    
    strTempWorksheetName = String$(Number:=31, Character:="x")
    
    Set objFileSystemObject = CreateObject(Class:="Scripting.FileSystemObject")
    
    For Each objDrive In objFileSystemObject.Drives
        
        With objDrive
            
            If .DriveType = DRIVETYPE_REMOVEABLE Then
                
                If .IsReady Then
                    
                    strFileName = Dir$(.Path & "\" & WORKBOOK_NAME)
                    If strFileName <> vbNullString Then
                        
                        blnWorkbookFound = True
                        
                        ThisWorkbook.Worksheets(WORKSHEET_NAME).Name = strTempWorksheetName
                        
                        Set objWorkbook = Workbooks.Open(Filename:=.Path & "\" & WORKBOOK_NAME)
                        
                        With objWorkbook
                            
                            If .Worksheets.Count = 1 And .Worksheets(1).Name = WORKSHEET_NAME Then
                                
                                Call ThisWorkbook.Worksheets(strTempWorksheetName).Copy(After:=.Worksheets(1))
                                Application.DisplayAlerts = False
                                Call .Worksheets(1).Delete
                                Application.DisplayAlerts = True
                                .Worksheets(strTempWorksheetName).Name = WORKSHEET_NAME
                                
                            Else
                                
                                For Each objWorksheet In .Worksheets
                                    
                                    If objWorksheet.Name = WORKSHEET_NAME Then
                                        
                                        Application.DisplayAlerts = False
                                        Call .Worksheets(WORKSHEET_NAME).Delete
                                        Application.DisplayAlerts = True
                                        Exit For
                                        
                                    End If
                                Next
                                
                                Call ThisWorkbook.Worksheets(strTempWorksheetName).Copy(Before:=.Worksheets(.Worksheets(1)))
                                
                                .Worksheets(strTempWorksheetName).Name = WORKSHEET_NAME
                                
                            End If
                        End With
                        Call objWorkbook.Close(SaveChanges:=True)
                        ThisWorkbook.Worksheets(strTempWorksheetName).Name = WORKSHEET_NAME
                        Exit For
                    End If
                End If
            End If
        End With
    Next
    If Not blnWorkbookFound Then _
        Call MsgBox("Mappe nicht gefunden.", vbExclamation, "Hinweis")
    Set objFileSystemObject = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Tabellenblatt kopieren
31.10.2019 19:24:12
Anja
Hallo Nepumuk,
vielen Dank für deine Arbeit!
Leider bekommen ich in der folgenden Zeile einen Fehler:
Call ThisWorkbook.Worksheets(strTempWorksheetName).Copy(Before:=.Worksheets(.Worksheets(1)))
Laufzeitfehler '13'
Typen unverträglich
LG
Anja
AW: Tabellenblatt kopieren
01.11.2019 12:45:47
Nepumuk
Hallo Anja,
die einzige Erklärung für diesen Fehler ist, du hast nur ein Diagrammblatt in der Mappe. Wenn nicht, dann lade bitte die zwei Mappen als Muster hoch. Es müssen nur ein paar Spieldaten darin sein.
Gruß
Nepumuk
AW: Tabellenblatt kopieren
01.11.2019 13:28:14
Anja
Hallo Nepumuk,
vielen Dank. Ich habe jetzt unten stehendes Makro zusammengebastelt, welches auch funktioniert. Zusätzlich hatte ich nämlich das Problem, dass die Shapes vom Stick nicht übernommen wurden und wenn doch, dann die Makros an die Datei auf dem Stick gebunden waren. Nun werden nur die reinen Werte (es geht hier hauptsächlich um die Ergebnisse aus der Waage) vom Stick auf das Tabellenblatt überschrieben. Die Daten auf dem Stick bleiben auch erhalten, da an mehreren Rechnern die Daten übergeben werden müssen. Mein Tabellenblatt bleibt mit den ursprünglichen Shapes(mit hinterlegten Makros) erhalten, so dass ich das Blatt weiter bearbeiten kann.
Sicher findest du in dem Makro auch einzelne Elemente wieder, die du mir in der Vergangenheit schon geschrieben hattest, um ähnliche Probleme in meinem Programm zu lösen.
Also vielen lieben Dank nochmal!
Anja
Sub Import_BeispielDatei()
' Tabellenblatt 'Waage Verbandsliga Frauen' von USB-Stick auf "Subrechner" in Datei übernehmen
Dim objExcel As New Excel.Application
Dim Quelltab As Worksheet
Dim Zieltab As Worksheet
Dim WaageFrauen As String
Dim FsyObjekt As Object, DrvObject As Object
Dim DrvType As Object, USBPfad As String, strPath As String
Set FsyObjekt = CreateObject("Scripting.FileSystemObject")
Set DrvObject = FsyObjekt.Drives
For Each DrvType In DrvObject
If DrvType.DriveType = 1 Then
USBPfad = DrvType.Path
Exit For
End If
Next DrvType
Set DrvType = Nothing
Set DrvObject = Nothing
Set FsyObjekt = Nothing
If USBPfad = vbNullString Then
Call MsgBox("Kein USB-Stick gefunden", vbExclamation, "Hinweis")
Exit Sub
End If
WaageFrauen = USBPfad & "\Waage Verbandsliga Frauen.xlsm"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
objExcel.Workbooks.Open WaageFrauen
Set Quelltab = objExcel.Sheets("Waage Verbandsliga Frauen")
Set Zieltab = ThisWorkbook.Worksheets("Waage Verbandsliga Frauen")
'vorher gesetzte Markierungen werden gelöscht
'die shapes denen Makros zugeordnet wurden, bleiben dabei erhalten, es werden reine Werte ü _
bergeben
With Zieltab
.Cells.Interior.ColorIndex = 0
End With
Zieltab.Range(Zieltab.Cells(1, 1), Zieltab.Cells(50, 50)).Value = _
Quelltab.Range(Quelltab.Cells(1, 1), Quelltab.Cells(50, 50)).Value
objExcel.ActiveWorkbook.Close 'SaveChanges:=False
objExcel.Quit
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige