Excel VBA Dateien zusammenführen und neue Spalte mit Dateipfad einfügen

3 Antworten

also richtig verstanden habe ich den code nicht. bei mir bringt er einen fehler bei Range("1:1048576").ClearContents

wahrscheinlich meintest du rows(...).  wenn du das ganze sheet löschen willst:

dann

Cells.Select  
Selection.ClearContents

dann ist das objekt tabelle4 nicht definiert:

dim tabelle4 as worksheet
set tabelle4 = worksheets(4) 

und: erklär mal in worten, was du mit der formel bezweckst. sie führt bei mir zum fehlercode 2036 (= #ZAHL = ungültiger numerischer wert)

und: beim nächsten paste bitte sinniger einrücken

code bitte in privatepaste.com o.ä. posten

Hallo zusammen! Wie benenne ich Tabellenblätter automatisch nach einem Zelleninhalt mit einem Makro um welche ich aus einer anderen Datei kopiert habe?

Folgender Sachverhalt:

ich bekomme von verschiedenen Personen eine gleich formatierte Tabelle als Datei mit jeweils unterschiedlichen Werten. Diese Dateien werden per Makro in meine Datei als neues Tabellenblatt kopiert. Die Inhalte werden dann addiert und in einer Tabelle zusammengefasst. Dies alles funktioniert schon.

Mein Anliegen beschränkt sich lediglich auf die Umbenennung der kopierten Tabellenblätter auf den Inhalt der Zelle C 2. Sobald eine Datei als neues Tabellenblatt eingefügt wird soll dieses automatisch nach dem Inhalt der Zelle C2 umbenannt werden.

Mit folgendem Makro werden die Dateien eingefügt

Sub AlleSheetsAusAllenGewaehltenMappenInEineMappeZusammenfuegen()

Application.ScreenUpdating = False

Dim vntPathAndFileNames As Variant Dim strPathAndFile As String Dim lngI As Long Dim wbkMappe As Workbook Dim wksT As Worksheet Dim wbkZiel As Workbook

Set wbkZiel = ThisWorkbook

vntPathAndFileNames = Application.GetOpenFilename( _ Title:="Meine Dateien Mit gedrückter Strg Taste markieren!", _ MultiSelect:=True) If VarType(vntPathAndFileNames) = vbBoolean Then MsgBox "Keine Dateien ausgewählt! Einlesen wurde abgebrochen!" Else For lngI = LBound(vntPathAndFileNames) To UBound(vntPathAndFileNames) strPathAndFile = vntPathAndFileNames(lngI) Set wbkMappe = Application.Workbooks.Open(strPathAndFile) For Each wksT In wbkMappe.Worksheets wksT.Copy wbkZiel.Worksheets(wbkZiel.Worksheets.Count) Next wbkMappe.Close False Range("A1").Select

Next End If

Application.ScreenUpdating = True

End Sub

Bisher bin ich immer gescheitert und habe auch in diversen Foren nichts passendes gefunden.

Kann mir wer helfen?

Vielen Dank schonmal!

...zur Frage

For Steuervariabel wird bereits verwendet! was bedeutet das?

Hallo nochmals,

ich habe mit hilfe con einigen "gutefrage.net" usern einen code geschrieben und versuche jzt durch "Copy-Paste" es für jede Zelle anzuwenden.

Beim For-Befehl kommt immer folgende Meldung "For Steuervariabel wird bereits verwendet"

was bedeutet das ? heißt es, das man das "For" nur einmal in einem code gebrauchen kann ? wäre vielleicht ein "GoTo" befehl angebrachter? ( sprich: go to next cell, wenn die bedingung erfüllt ist )

hier ist der code:

sub kopieren( )

Dim Zelle As Range Dim Wert As Variant

Wert = ActiveSheet.Range("J16:j29")

With Sheets("Tabelle2") For Each Zelle In .Range("F6:G6")

If ((Range("J16").EntireRow.Hidden = True)

Or (Range("J16").EntireColumn.Hidden = True))

Or (Range("J16").Font.Strikethrough = True) Then

Zelle.Value = ActiveSheet.Range("J17")

Else

Zelle.Value = ActiveSheet.Range("J16")

With Sheets("tabelle2")

For Each Zelle In .Range("H6:I6")

If ((Range("J17").EntireRow.Hidden = True)

Or (Range("J17").EntireColumn.Hidden = True))

Or (Range("J17").Font.Strikethrough = True) Then

Zelle.Value = ActiveSheet.Range("J18")

Else

Zelle.Value = ActiveSheet.Range("J17")

End If End With End If Next Zelle End With End Sub

Danke schonmal für eure Tatkräftigen Hilfen :)))

Gruß Newb

...zur Frage

Makro automatisch ausführen bei Zellenänderung VBA

Hi,

ich habe ein Makro, dass mir automatisch die Zeilenhöhe mit Zeilenumbruch anpasst, wenn der Text zu lang ist (es wirkt auf das ganze Tabellenblatt aber mir geht es hauptsächlich um die verbundenen Zellen "D31:M31"). Dies passt auch soweit wenn ich das Makro nach Eingabe des geänderten Textes ausführe.

Nun benötige ich noch, dass das Makro automatisch ausgeführt wird, sobald sich der Text in der Zelle ändert. "Nehmen wir an da steht "hallo" und ich schreibe nun "hallo hans" hinein (natürlich viel länger, damit der Umbruch stattfindet).

Leider funktioniert es nicht mittels VBA, wenn ich den Text ändere.. Weiß jemand rat was ich falsch mache?

Danke für jeden Hinweis !!!

VBA in Tabelle1:

Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("$D$31:$M$31")) Is Nothing Then Zellenanpassen End Sub

Und hier das Makro:

Sub Zellenanpassen() Dim CurrentRowHeight As Single, MergedCellRgWidth As Single Dim CurrCell As Range Dim ActiveCellWidth As Single, PossNewRowHeight As Single If ActiveCell.MergeCells Then With ActiveCell.MergeArea If .Rows.Count = 1 And .WrapText = True Then Application.ScreenUpdating = False CurrentRowHeight = .RowHeight ActiveCellWidth = ActiveCell.ColumnWidth For Each CurrCell In Selection MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth Next .MergeCells = False .Cells(1).ColumnWidth = MergedCellRgWidth .EntireRow.AutoFit PossNewRowHeight = .RowHeight .Cells(1).ColumnWidth = ActiveCellWidth .MergeCells = True .RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, _ CurrentRowHeight, PossNewRowHeight) End If End With End If End Sub

VG fireless91

P.S.: Meine VBA Kenntnisse sind eher mau.. von daher nicht böse sein face-wink

...zur Frage

Was möchtest Du wissen?