VB6: Kleine Probleme beim erstellen einer Excel-Datei aus VB6

  • VB6

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Swift79.

    VB6: Kleine Probleme beim erstellen einer Excel-Datei aus VB6

    Einen wunderschönen guten Morgen zusammen.

    Ich habe mir ein kleines Programm geschrieben das mir Daten, die ich aus einem anderen Programm einlese und Rechenergebnisse, in eine Ecxel-Tabelle schreiben soll.

    Visual Basic-Quellcode

    1. Private Sub excel_export()
    2. Dim S As Byte
    3. On Error Resume Next
    4. xlAnw.Workbooks.Open "c:\temp\Test.xls"
    5. If Err > 0 Then
    6. On Error GoTo Error:
    7. xlAnw.Workbooks.Add
    8. xlAnw.ActiveWorkbook.ActiveSheet.Cells(1, 1).Value = "ME_ID"
    9. xlAnw.ActiveWorkbook.ActiveSheet.Cells(1, 2).Value = "Gewicht"
    10. xlAnw.ActiveWorkbook.ActiveSheet.Cells(1, 3).Value = "Länge"
    11. xlAnw.ActiveWorkbook.ActiveSheet.Cells(1, 4).Value = "Breite"
    12. xlAnw.ActiveWorkbook.ActiveSheet.Cells(1, 5).Value = "Dicke"
    13. xlAnw.ActiveWorkbook.ActiveSheet.Cells(1, 6).Value = "Messwert"
    14. xlAnw.ActiveWorkbook.ActiveSheet.Cells(1, 7).Value = "Anzahl der Windungen"
    15. xlAnw.ActiveWorkbook.ActiveSheet.Cells(1, 8).Value = "R_FE"
    16. xlAnw.ActiveWorkbook.ActiveSheet.Cells(1, 9).Value = "R_iso"
    17. xlAnw.ActiveWorkbook.ActiveSheet.Cells(1, 10).Value = "rho_A"
    18. xlAnw.ActiveWorkbook.ActiveSheet.Cells(2, 1).Value = ME_ID
    19. xlAnw.ActiveWorkbook.ActiveSheet.Cells(2, 2).Value = gewicht
    20. xlAnw.ActiveWorkbook.ActiveSheet.Cells(2, 3).Value = Text9
    21. xlAnw.ActiveWorkbook.ActiveSheet.Cells(2, 4).Value = breite
    22. xlAnw.ActiveWorkbook.ActiveSheet.Cells(2, 5).Value = dicke
    23. xlAnw.ActiveWorkbook.ActiveSheet.Cells(2, 6).Value = Text6
    24. xlAnw.ActiveWorkbook.ActiveSheet.Cells(2, 7).Value = Text1
    25. xlAnw.ActiveWorkbook.ActiveSheet.Cells(2, 8).Value = Text7
    26. xlAnw.ActiveWorkbook.ActiveSheet.Cells(2, 9).Value = Text8
    27. xlAnw.ActiveWorkbook.ActiveSheet.Cells(2, 10).Value = Text10
    28. xlAnw.ActiveWorkbook.SaveAs FileName:="c:\temp\Test.xls"
    29. Else
    30. On Error GoTo Error:
    31. ' nächste freie Reihe ermiteln
    32. S = xlAnw.ActiveWorkbook.ActiveSheet.Cells(65536, 1).End(xlUp).Row + 1
    33. ' Zellen schreiben
    34. xlAnw.ActiveWorkbook.ActiveSheet.Cells(S, 1).Value = ME_ID
    35. xlAnw.ActiveWorkbook.ActiveSheet.Cells(S, 2).Value = gewicht
    36. xlAnw.ActiveWorkbook.ActiveSheet.Cells(S, 3).Value = Text9
    37. xlAnw.ActiveWorkbook.ActiveSheet.Cells(S, 4).Value = breite
    38. xlAnw.ActiveWorkbook.ActiveSheet.Cells(S, 5).Value = dicke
    39. xlAnw.ActiveWorkbook.ActiveSheet.Cells(S, 6).Value = Text6
    40. xlAnw.ActiveWorkbook.ActiveSheet.Cells(S, 7).Value = Text1
    41. xlAnw.ActiveWorkbook.ActiveSheet.Cells(S, 8).Value = Text7
    42. xlAnw.ActiveWorkbook.ActiveSheet.Cells(S, 9).Value = Text8
    43. xlAnw.ActiveWorkbook.ActiveSheet.Cells(S, 10).Value = Text10
    44. End If
    45. xlAnw.ActiveWorkbook.Close SaveChanges:=True
    46. xlAnw.Quit
    47. Set xlAnw = Nothing
    48. Exit Sub
    49. Error:
    50. MsgBox Err.Description
    51. End Sub



    Funktioniert soweit auch wunderbar. Es gibt da allerdings noch Kleinigkeiten die mir fehlen bzw. stören.

    1. Ich hätte gern das Excel die Spaltenbreite automatisch anpasst damit der komplette Text einer Zelle auch sichtbar ist. Dies wäre z.B. für die Zelle "Anzahl der Windungen" der Fall. Hier ist nämlich nicht alles direkt lesbar sondern "abgeschnitten".

    2. Ich möchte noch eine weitere Spalte in der, jedesmal wenn VB einen neuen Datensatz nach Excell rüberschiebt, das aktuelle Datum und die Uhrzeit geschrieben wird. Habe aber keien Ahnung wie ich das unter VB Programmiere.

    3. Als letztes noch ein Problem mit den Werten die in die Excel-Tabelle geschrieben werden. Dort bekomme ich folgendes gesagt.
    "Die Zahl in dieser Zelle ist als Text formatiert oder es ist ein Apostroph vorangestellt"
    Wie schaffe ich es das VB den Wert direkt als Zahl in die Tabelle schreibt?

    Schonmal ein riesen Dankeschön im voraus!!!

    MfG
    Swift
    Du kannst die Breite eines Strings herausfinden, indem du ein Label mit autosize nutzt, den String als Caption setzen und dann die Breite des Labels auslesen.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Ich habe das mit der Spaltenbreite jetzt folgendermaßen gelöst.

    Visual Basic-Quellcode

    1. xlAnw.ActiveWorkbook.ActiveSheet.Columns("A:L").Select
    2. xlAnw.ActiveWorkbook.ActiveSheet.Columns("A:L").EntireColumn.AutoFit


    Fehlt nur noch eine Lösung zu Punkt 3.