Dieser Tipp ist eine Abwandlung des vor kurzem erschienenen Tipps: Exceldatei im Format "TabStop-getrennt" einlesen Diesmal werden die Daten jedoch zunächst in ein ADO-Recordset eingelesen und dieses dann über die DataSource-Eigenschaft an das MSHFlexGrid-Control gebunden. ' AutomatisierungsCode für Excel_Dateien ' Autor : Norbert Grimm ' ' Einlesen einer Excel_Datei, die im Format [TabStopp getrennt] vorliegt. ' ' Die Datei wird als Text_Datei geöffnet u. der Inhalt ' in ein RecordSet-Object eingelesen. ' optional in einem MSHFlexGrid-Control angezeigt. ' ' Parameter : ' xlPath : Dateipfad ' adoObj : ADODB.Recordset ' Flex : MSHFlexGrid [optional]' ' ' Rückgabe : <>0, wenn Fehler Function Text_XLS_Ex(ByVal xlPath As String, _ ByRef adoObj As Object, _ Optional ByRef Flex As Object) As Long Dim A As Integer Dim B As Integer Dim C As Integer Dim D As Integer Dim F As Integer Dim I As Integer Dim intFF As Integer Dim L As Integer Dim P As Integer Dim S As Integer Dim Ret As Long Dim aDaten() As Variant Dim vDaten As Variant Dim errMsg As String Dim sTZ As String ' Trennzeichen On Error GoTo Err_TXLS intFF = FreeFile Open xlPath For Input Shared As intFF ' lies ganze Zeile Line Input #intFF, vDaten A = A + 1 C = -1 S = 1 sTZ = vbTab ' Chr(9) ' Anzahl Spalten ermitteln Do P = InStr(S, vDaten, sTZ) If P Then L = P - S C = C + 1 ReDim Preserve aDaten(C) aDaten(C) = Mid(vDaten, S, L) S = P + 1 End If Loop Until P = 0 ' Anzahl Spalten festlegen u. 1.AddNew With adoObj For F = 0 To C .Fields.Append "F" & F, adVariant, , adFldIsNullable Next F .CursorType = adOpenStatic .LockType = adLockOptimistic .Open adoFlag = .State .AddNew For I = 0 To C .Fields(I).Value = aDaten(I) Next I .Update ' Daten_Schleife Do While Not EOF(intFF) Line Input #intFF, vDaten ' Inhalte löschen For I = 0 To C aDaten(I) = "" Next I S = 1 D = -1 Do P = InStr(S, vDaten, sTZ) If P Then L = P - S D = D + 1 aDaten(D) = Mid(vDaten, S, L) S = P + 1 End If Loop Until P = 0 ' optionaler Zähler A = A + 1 ' Recordset füllen .AddNew For I = 0 To C .Fields(I).Value = aDaten(I) Next I .Update Loop End With Close intFF intFF = 0 ' Optionales Argument ' prüfe ob Flex übergeben wurde (intialisiert ist) If Not Flex Is Nothing Then With Flex Set .DataSource = adoObj End With End If Exit_TXLS: Text_XLS_Ex = Ret ' Datei noch offen If intFF Then Close intFF Exit Function Err_TXLS: With Err Ret = .Number errMsg = .Description .Clear End With MsgBox Ret & vbCr & errMsg, vbCritical, "Text_XLS_Ex" Resume Exit_TXLS End Function Aufrufbeispiel: Dim oRs As New ADODB.Recordset Text_XLS_Ex "D:\Mappe1.txt", oRs, MSHFlexGrid1 Dieser Tipp wurde bereits 13.840 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |