Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Spalte A in andere Tabelle kopieren | Herbers Excel-Forum


Betrifft: Spalte A in andere Tabelle kopieren von: Ben
Geschrieben am: 22.01.2010 11:25:18

Hallo,

ich habe folgendes Problem:

zwei Tabellen mit dem gleichen Aufbau, in Spalte A stehen immer Bezeichnungen und in den weiteren Spalten folgen Werte.
Ich versuche nun die Spalte A aller Tabellenblätter der ersten Tabelle (besitzt 41 Tabellenblätter) in die andere Tabelle zu kopieren (in die gleichen entsprechenden Tabellenblätter).

Private Sub CommandButton1_Click()

ActiveWorkbook.RunAutoMacros xlAutoActivate
    
Dim i As Integer
Dim WorkbookIM As Variant
Dim WorkbookEX As Excel.Workbook
Dim n As Long
Dim rng As Range

Application.ScreenUpdating = False
WorkbookEX = Me.Application.Workbooks(1)

For n = 4 To 41
        
        Set rng = Worksheets(n).Range("A8:A46")

i = 0
WorkbookIM = Application.GetOpenFilename("Excel-dateien(*.xlsm),*xls,CSV(*.csv),*csv", _
MultiSelect:=True)
If IsArray(WorkbookIM) Then
For i = LBound(WorkbookIM) To UBound(WorkbookIM)
Workbooks.Open WorkbookIM(i)
Next i
End If
   
        rng.Value = Range("A8:A46").Value
        ActiveWorkbook.Close savechanges:=False

Next n

   Application.ScreenUpdating = True
    
End Sub

Allerdings ich bekomme es nicht beschrieben, dass die Spalten in die neu geöffnete Tabelle eingefügt werden!? Wie mache ich dies? Vielen Dank für eure Hilfe!

  

Betrifft: AW: Spalte A in andere Tabelle kopieren von: Gerd L
Geschrieben am: 22.01.2010 20:13:26

Hallo Ben,

die Container die du wie ein Buch öffnen kannst heißen Dateien oder Arbeitsmappen.

Die einseitigen Blätter in diesen Dateien heißen Tabellenblätter.

Damit etwas Verwirrung reinkommt, kann man in xl2007 in Tabellen unter Einfügen - Tabellen
Listen in einen markierten Bereich einer Tabelle einfügen, wobei die Listen leider auch als Tabellen bezeichnet werden.

Kannst Du also nochmals kundtun, was und was woher wohin und wohin kopiert werden soll?
Konkrete Angaben tragen sicher zum Verständnis deiner Aufgabe bei.

Gruß Gerd





  

Betrifft: AW: Spalte A in andere Tabelle kopieren von: Ben
Geschrieben am: 23.01.2010 00:39:14


Hallo Gerd,

danke erstmal für den Versuch! Also, ich habe zwei identische Arbeitsmappen und diese haben beide 41 Tabellenblätter. Die Tabellenblätter 1-3 sind Zusammenfassungen und für die Frage irrelevant, es geht um die folgenden! Bei einer Arbeitsmappe sollen nun in der Spalte A der Tabellenblätter 4-41 Änderungen möglich sein. Diese Änderungen sollen in der anderen Arbeitsmappe dann auch vorhanden sein, daher das Makro über den Button die Spalten A der Tabellenblätter zu kopieren.

(Ich will mir also die Arbeit ersparen immer wieder die Bezeichnungen in Spalte A einzufügen, der Button soll sozusagen als Aktualisierung oder Export dienen um die andere Arbeitsmappe anzupassen)

Hoffe dass dies etwas verständlicher ist?!


  

Betrifft: AW: Spalte A in andere Tabelle kopieren von: Josef Ehrensberger
Geschrieben am: 23.01.2010 01:01:37

Hallo Ben,

ungetestet!

Die Tabellen dürfen nicht geschützt sein, sonst müsste man den
Schutz im Code aufheben und wieder setzten.

' **********************************************************************
' Modul: Modul3 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub copyColumnsToSheets()
  Dim objWb As Workbook
  Dim lngIndex As Long, lngCount As Long
  Dim vntArray(4 To 41) As Variant, vntFiles As Variant
  
  On Error GoTo ErrExit
  GMS
  
  vntFiles = Application.GetOpenFilename("Excel Dateien (*.xls; *.xlsx; *.xlsm)," & _
    "*.xls; *.xlsx; *.xlsm", MultiSelect:=True)
  
  If IsArray(vntFiles) Then
    For lngCount = 4 To 41
      vntArray(lngCount) = ThisWorkbook.Worksheets(lngCount).Range("A:A")
    Next
    For lngCount = 0 To UBound(vntFiles)
      Set objWb = Workbooks.Open(vntFiles(lngCount), UpdateLinks:=False)
      If objWb.Worksheets.Count >= 41 Then
        For lngIndex = 4 To 41
          objWb.Worksheets(lngIndex).Range("A:A") = vntArray(lngIndex)
        Next
      End If
      objWb.Close True
    Next
  End If
  
  ErrExit:
  With Err
    If .Number <> 0 Then MsgBox "Fehler " & .Number & vbLf & vbLf & _
      .Description & vbLf & vbLf & "In Prozedur (copyColumnsToSheets) in Modul Modul3", _
      vbExclamation, "Fehler in Modul3 / copyColumnsToSheets"
  End With
  
  GMS True
  
  Set objWb = Nothing
End Sub

Public Sub GMS(Optional ByVal Modus As Boolean = False)
  
  Static lngCalc As Long
  
  With Application
    .ScreenUpdating = Modus
    .EnableEvents = Modus
    .DisplayAlerts = Modus
    .EnableCancelKey = IIf(Modus, 1, 0)
    If Not Modus Then lngCalc = .Calculation
    If Modus And lngCalc = 0 Then lngCalc = -4105
    .Calculation = IIf(Modus, lngCalc, -4135)
    .Cursor = IIf(Modus, -4143, 2)
    
  End With
  
End Sub



Gruß Sepp



  

Betrifft: Korrektur! von: Josef Ehrensberger
Geschrieben am: 23.01.2010 01:52:11

Hallo Ben,

korrigiere bitte die Zeile

For lngCount = 0 To UBound(vntFiles)

ab in
For lngCount = 1 To UBound(vntFiles)

Gruß Sepp



  

Betrifft: AW: Spalte A in andere Tabelle kopieren von: Ben
Geschrieben am: 23.01.2010 11:20:19


Hallo Sepp,

Danke für die schnelle Hilfe!

Ich hab es versucht einzubauen und der Anfang funktioniert! Man kann die Datei aussuchen, diese öffnet sich dann und Excel fängt an zu kopieren. Allerdings wird die Arbeitsmappe dabei 30 mal so groß und der PC hängt sich auf! (Orginalgröße 3MB und nach kopieren 80MB)

Ich habe die zu kopierenden Tabellenblätter auf 5 beschränkt, so lässt es sich zumindest öffnen und man sieht, dass korrekt kopiert wurde. Es funktioniert also, aber auch hier steigt die Dateigröße auf 20MB!
Wie kommt das zustande, würde es helfen die Zeilen einzuschränken? Also nur Spalte A Zeile 9 bis 46?

Danke,
Ben


  

Betrifft: AW: Spalte A in andere Tabelle kopieren von: Josef Ehrensberger
Geschrieben am: 23.01.2010 11:24:51

Hallo Ben,

auf alle Fälle wäre das gut.


Gruß Sepp



  

Betrifft: AW: Spalte A in andere Tabelle kopieren von: Ben
Geschrieben am: 23.01.2010 11:55:41

Danke Sepp,

jetzt funktioniert es! Ich denke, es lag an den Comboboxen, Buttons und Gif-Dateien welche in den ersten Zeilen sind!

Schönes Wochenende,
Ben


Beiträge aus den Excel-Beispielen zum Thema "Spalte A in andere Tabelle kopieren"