VBA Makro von Excel nach OO3
Verfasst: Mo, 16.03.2009 11:28
Hallo,
ich bin ziemlich neu hier im Forum und brauche Hilfe. Ich hatte mir für unsere Firma ein wenig Quellcode mit einigen Makros geschrieben bzw. schreiben lassen. Das geschah in Excel. Jetzt wollen wir das ganze unter Linux (Suse Ent. Desktor 10) zum laufen bekommen. Habe es dort zum einen zuerst mit OO2.4 und nun mit OO3.0.1 versucht. Es scheint, das OO Probleme damit hat.
Gibt es für dieses Problem eine einfache Lösung? Wenn jemand noch mehr Infos braucht, dann versuche ich die bei Wunsch gut zu beschreiben. Wie gesagt, das Hauptproblem ist wohl die Person die am Rechner sitzt.
Hier mal zum anschauen der Quellcode:
ich bin ziemlich neu hier im Forum und brauche Hilfe. Ich hatte mir für unsere Firma ein wenig Quellcode mit einigen Makros geschrieben bzw. schreiben lassen. Das geschah in Excel. Jetzt wollen wir das ganze unter Linux (Suse Ent. Desktor 10) zum laufen bekommen. Habe es dort zum einen zuerst mit OO2.4 und nun mit OO3.0.1 versucht. Es scheint, das OO Probleme damit hat.
Gibt es für dieses Problem eine einfache Lösung? Wenn jemand noch mehr Infos braucht, dann versuche ich die bei Wunsch gut zu beschreiben. Wie gesagt, das Hauptproblem ist wohl die Person die am Rechner sitzt.
Hier mal zum anschauen der Quellcode:
Code: Alles auswählen
Private Sub Workbook_Open()
Call TextImport
Call Diagramme
End Sub
Sub TextImport()
Dim arr As Variant, arrData As Variant, vSplit As Variant, arrSource As Variant
Dim dValue As Double
Dim iFile As Integer, iArr As Integer, iLine As Integer, iSource As Integer, iCol As Integer
Dim sFile As String, sTxt As String, sDate As String, sTime As String, sTmp As String, sText As String
Cells.ClearContents
arr = Array("DATE ", "TIME ", "COMPANY: ", "SETTINGS: ", "Count Objects: ", "USER: ")
Range("A1") = "Datum:"
Range("A2") = "Zeit:"
Range("A3") = "Company:"
Range("A4") = "User:"
Range("A5") = "Settings:"
Range("A6") = "Count Objects:"
Range("A8") = "Fraction"
Range("B8") = "Density"
Range("C8") = "Qty"
Range("D8") = "Sphericity"
Range("E8") = "Cubicity"
Range("F8") = "Concavity"
Range("A9") = "[mm]"
Range("B9") = "[%]"
Range("C9") = "[%]"
Range("B1").NumberFormat = "dd.mm.yyyy"
Range("B2").NumberFormat = "hh:mm:ss"
Range("B6").NumberFormat = "00"
Rows("8:9").HorizontalAlignment = xlRight
sFile = ThisWorkbook.Path & "\P1-_1.txt"
' sFile = "C:\logfile.txt" 'mein Test
sTxt = DoParse(sFile)
arrData = Split(sTxt, vbLf)
For iLine = LBound(arrData) To UBound(arrData)
Select Case iLine
Case 1:
sTmp = arr(0)
vSplit = Split(arrData(iLine), sTmp)
sDate = vSplit(1)
sDate = Left(sDate, 10)
Cells(1, 2).Value = CDate(sDate)
sTmp = arr(1)
vSplit = Split(arrData(iLine), sTmp)
sDate = vSplit(1)
sDate = Left(sDate, 8)
sDate = Replace(sDate, ".", ":")
Cells(2, 2).Value = CDate(sDate)
Case 4:
sTmp = arr(2)
vSplit = Split(arrData(iLine), sTmp)
sText = vSplit(1)
sText = Left(sText, 20)
Cells(3, 2).Value = Trim(sText)
sTmp = arr(5)
vSplit = Split(arrData(iLine), sTmp)
sText = vSplit(1)
sText = Split(sText, "T")(0)
Cells(4, 2).Value = Trim(sText)
Case 5:
sTmp = arr(3)
vSplit = Split(arrData(iLine), sTmp)
sText = vSplit(1)
sText = Left(sText, 10)
Cells(5, 2).Value = Trim(sText)
Case 8:
sText = Split(arrData(iLine), " ")(3)
Cells(6, 2).Value = Trim(sText)
Case Is > 12
If InStr(arrData(iLine), "-----------") Then Call GetFormat: End
arrSource = Split(arrData(iLine), " ")
iCol = 1
For iSource = LBound(arrSource) To UBound(arrSource)
dValue = Replace(arrSource(iSource), ".", ",")
Cells(iLine - 3, iCol).Value = dValue
iCol = iCol + 1
Next iSource
End Select
Next iLine
End Sub
Private Sub GetFormat()
With Range("A10").CurrentRegion
.Columns(1).NumberFormat = "00.000"
.Columns(2).NumberFormat = "000.00"
.Columns(3).NumberFormat = "000.00"
.Columns(4).NumberFormat = "0.0000"
.Columns(5).NumberFormat = "0.0000"
.Columns(6).NumberFormat = "0.0000"
End With
End Sub
Private Function DoParse(sFile As String) As String
Dim strImport As String
Dim lngChars As Long
Dim intFile As Integer
intFile = FreeFile
Open sFile For Input As intFile
lngChars = LOF(intFile)
strImport = Input(lngChars, intFile)
Close intFile
DoParse = strImport
End Function
Sub a()
Dim arr As Variant
Dim sTxt As String, sText As String
sTxt = "DATE "
sText = "Mein DATE ist nicht vorhanden"
arr = Split(sText, sTxt)
MsgBox arr(0)
End Sub
Sub Diagramme()
Dim dia$, i%, LL%
LL = Cells(Rows.Count, 1).End(xlUp).Row
For i = ActiveSheet.Shapes.Count To 1 Step -1
If Left(ActiveSheet.Shapes(i).Name, 5) = "Chart" Then ActiveSheet.Shapes(i).Delete
Next i
Range("H5").Select
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range("J11")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=Tabelle1!R10C1:R" & LL & "C1"
ActiveChart.SeriesCollection(1).Values = "=Tabelle1!R10C2:R" & LL & "C2"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = _
"Durchmesser x [mm]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = _
"Dichteverteilung [%]"
.HasLegend = False
dia = Split(.Parent.Name, " ")(1)
End With
ActiveSheet.Shapes("Diagramm " & dia).IncrementLeft 114.75
ActiveSheet.Shapes("Diagramm " & dia).IncrementTop -111.75
Range("H35").Select
Charts.Add
ActiveChart.ChartType = xlXYScatterLines
ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range("H35")
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).XValues = "=Tabelle1!R10C1:R" & LL & "C1"
ActiveChart.SeriesCollection(1).Values = "=Tabelle1!R10C3:R" & LL & "C3"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
With ActiveChart
.HasTitle = False
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = _
"Durchmesser x [mm]"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Summendurchgang [%]"
.HasLegend = False
dia = Split(.Parent.Name, " ")(1)
End With
ActiveSheet.Shapes("Diagramm " & dia).IncrementLeft 114.75
ActiveSheet.Shapes("Diagramm " & dia).IncrementTop 218.25
Range("A5").Select
End Sub