Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1252to1256
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

An Sepp, oder jemand der mir helfen kann

An Sepp, oder jemand der mir helfen kann
Steve
Hallo Sepp,
Ich habe deinen code ein wenig benutzt und habe probiert die leerstelle in der zweiten reihe zu löschen so das alle daten nacheinander im blatt aufgereit werden aber ich habe es leider nicht hinbekommen.
Der code schreibt mir den namen mit den daten (A2:B) in die tabelle, das funktioniert super. Das problem ist das er mir auch die leeren zellen überträgt in A den namen aber in B eine leere zelle.
https://www.herber.de/forum/archiv/1248to1252/t1251391.htm#1251433
Könntest du mir einen tipp geben?
Wäre es einfacher die leeren zeilen nach dem übertragen zu löschen?
Besten Dank
Steve

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: An Sepp, oder jemand der mir helfen kann
01.03.2012 22:37:35
Josef

Hallo Steve,
Leerzeilen werden von meinem Code schon eliminiert, wahrscheinlich sind Leerzeichen und/oder unsichtbare Steuerzeichen im Spiel.
Versuch es mal so.
Sub importData()
  Dim objADO As Object
  Dim strPath As String, strFile As String, strName As String
  Dim vntSheets As Variant, rng As Range, rngDel As Range
  Dim lngIndex As Long, lngRow As Long, lngCount As Long
  Dim lngCalc As Long
  
  On Error GoTo ErrExit
  
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
    lngCalc = .Calculation
    .Calculation = xlCalculationManual
    .DisplayAlerts = False
  End With
  
  vntSheets = Array("Gennaio", "Febbraio", "Marzo", "Aprile", "Maggio", "Giugno", "Luglio", "Agosto", "Settembre", "Ottobre", "Novembre", "Dicembre")
  
  With ThisWorkbook.Sheets("Liste")
    .Range("A2:B" & .Rows.Count).ClearContents
    strPath = ThisWorkbook.Path & "\Test\"
    strFile = Dir(strPath & "*.xls*", vbNormal)
    Do While strFile <> ""
      strName = Trim$(Split(Split(strFile, "-")(1), ".")(0))
      For lngIndex = 0 To UBound(vntSheets)
        lngRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        Set objADO = ExcelTable(strPath & strFile, CStr(vntSheets(lngIndex)), "AK3:AK34")
        lngCount = objADO.RecordCount
        .Cells(lngRow, 2).CopyFromRecordset objADO
        .Range(.Cells(lngRow, 1), .Cells(lngRow + lngCount, 1)) = strName
        objADO.Close
      Next
      strFile = Dir
    Loop
    For Each rng In .Range("B1:B" & lngRow + lngCount)
      If Len(Trim(Application.Clean(rng))) = 0 Then
        If rngDel Is Nothing Then
          Set rngDel = rng.EntireRow
        Else
          Set rngDel = Union(rngDel, rng.EntireRow)
        End If
      End If
    Next
    If Not rngDel Is Nothing Then rngDel.Delete
  End With
  
  ErrExit:
  
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "'importData'" & vbLf & String(60, "_") & _
        vbLf & vbLf & IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
        "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbTab & _
        .Description & vbLf, vbExclamation + vbMsgBoxSetForeground, _
        "VBA - Fehler in Modul - Modul1"
      .Clear
    End If
  End With
  
  On Error GoTo 0
  
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = lngCalc
    .DisplayAlerts = True
  End With
  
  Set objADO = Nothing
End Sub



Private Function ExcelTable(ByRef Path As String, ByRef Table As String, ByRef SourceRange As String, Optional WhereString As String = "") As Object
  Dim SQL As String
  Dim Con As String
  
  SQL = "select * from [" & Table & "$" & SourceRange & "] " & WhereString
  
  If Mid(Path, InStrRev(Path, ".") + 1) = "xls" Then
    Con = "Provider=Microsoft.Jet.OLEDB.4.0;" _
      & "Extended Properties=Excel 8.0;" _
      & "Data Source=" & Path & ";"
  ElseIf Mid(Path, InStrRev(Path, ".") + 1) Like "xls?" Then
    Con = "Provider=Microsoft.ACE.OLEDB.12.0;" _
      & "Extended Properties=""Excel 12.0;HDR=YES"";" _
      & "Data Source=" & Path & ";"
  Else
    Exit Function
  End If
  Set ExcelTable = CreateObject("ADODB.Recordset")
  ExcelTable.Open SQL, Con, 3, 1
End Function



« Gruß Sepp »

Anzeige
AW: An Sepp, oder jemand der mir helfen kann
02.03.2012 07:22:00
Steve
Funktioniert einwandfrei.
Danke
Steve

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige