AW: Automatisch Variable setzen im Script
27.05.2014 09:35:33
Chantal
Hi Hansueli
Anbei findest du die Arbeitsmappe (anonymisiert und sehr viel kleiner)
https://www.herber.de/bbs/user/90865.xlsm
ich generiere auf unseren Servern die ca 70 Auszüge aus dem Active Directory und lass diese bei mir auf C:\temp\test speichern. (Aufbau in der Kurzform nur Vorname, Nachname und SIP). Das Makro liest mir dann die Files in die Excel Tabelle ein und anschliessend alle Tabellenblätter.
Damit du den Code direkt siehst ohne die Mappe öffnen zu müssen hier:
Sub ImportiereCSVDateien()
Const CSVPFAD = "C:\temp\lyncrollout"
Dim wbTarget As Workbook, wbSource As Workbook, ws As Worksheet
Set fso = CreateObject("Scripting.Filesystemobject")
Set wbTarget = ActiveWorkbook
Application.DisplayAlerts = False
'Lösche alle Worksheets bevor wir alle neu anlegen
If wbTarget.Worksheets.Count > 1 Then
For i = 1 To wbTarget.Worksheets.Count - 1
wbTarget.Worksheets(i).Delete
Next
End If
For Each f In fso.GetFolder(CSVPFAD).Files
If LCase(Right(f.Name, 3)) = "csv" Then
Workbooks.OpenText Filename:=f.Path
Set wbSource = ActiveWorkbook
On Error Resume Next
Set ws = wbTarget.Worksheets(f.Name)
If Err 0 Then
Set ws = wbTarget.Worksheets.Add
ws.Name = f.Name
ws.Range("A:ZZ").Clear
End If
wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=Range("A1"), _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Semicolon:=True, TrailingMinusNumbers:=True
wbSource.Worksheets(1).Range("A:AE").Copy Destination:=ws.Range("A1")
wbSource.Close False
End If
Next
Application.DisplayAlerts = True
Set fso = Nothing
Dim tbl As ListObject
For i = 1 To ActiveWorkbook.Sheets.Count
Sheets(i).Select
Range("A1:Z" & Cells(Rows.Count, 1).End(xlUp).Row).Select
Set tbl = ActiveSheet.ListObjects.Add(xlSrcRange, Selection, , xlYes)
tbl.TableStyle = "TableStyleLight1"
Next i
Dim Tabelle As Worksheet
Dim t As Integer
Worksheets.Add.Move before:=Worksheets(1)
ActiveSheet.Name = "Overview"
Cells(1, 1).Value = "Enthaltene Blätter"
t = 3
For Each Tabelle In ActiveWorkbook.Worksheets
If Tabelle.Name "Overview" Then
Cells(i, 2).Value = Tabelle.Name
Tabelle.Hyperlinks.Add Anchor:=Cells(i, 2), Address:="", SubAddress:= _
Tabelle.Name & "!A1", _
TextToDisplay:=Tabelle.Name
i = i + 1
End If
Next Tabelle
End Sub
und dazu müsste ich nun dieses weitere Makro einbauen, das mir diese Count Formel einsetzt der Reihe nach.
Gruss
Chantal