Hallo Forum,
ich bastel hier gerade ein Prüfprotokoll das automatisch den Min, Max, Mittelwert usw. erzeugen soll. Später dann auch noch ein Diagramm aus den Daten ermitteln. Eigentlich bin ich ganz gut vorangekommen mit der Umsetzung in VB (ich bin Anfänger). Nun habe ich aber das Problem, dass der Zugriff auf meine Felder via Textmarke ewig dauert! Ich bin mir nicht sicher woran das liegen kann. Es sind aktuell 21 Felder im Dokument. Es sollen natürlich noch viel mehr werden. Ich kann nicht glauben, dass ich jetzt schon an die Grenzen komme.
Im Debugmode sehe ich deutlich, dass die Zeilen
ActiveDocument.FormFields(strFieldNameX).Result = strElementX
ActiveDocument.FormFields(strFieldNameY).Result = strElementY
ActiveDocument.FormFields(strFieldNameZ).Result = strElementZ
ewig dauern. Eine CPU Belastung oder Speicherauslastung kann ich jedoch nicht feststellen. es sind ca. 70MB RAM und 13% CPU Last zu sehen. Das ist nix!
Meine Felder haben die Namen
X_1_
Y_1_
Z_1_
X_2_
Y_2_
Z_2_
jeweils mit 1-7 hinten dran.
Wäre super wenn da jemand eine Idee hat.
Grüße und Danke
excelite
Inhalt der txt Datei
ich bastel hier gerade ein Prüfprotokoll das automatisch den Min, Max, Mittelwert usw. erzeugen soll. Später dann auch noch ein Diagramm aus den Daten ermitteln. Eigentlich bin ich ganz gut vorangekommen mit der Umsetzung in VB (ich bin Anfänger). Nun habe ich aber das Problem, dass der Zugriff auf meine Felder via Textmarke ewig dauert! Ich bin mir nicht sicher woran das liegen kann. Es sind aktuell 21 Felder im Dokument. Es sollen natürlich noch viel mehr werden. Ich kann nicht glauben, dass ich jetzt schon an die Grenzen komme.
Im Debugmode sehe ich deutlich, dass die Zeilen
ActiveDocument.FormFields(strFieldNameX).Result = strElementX
ActiveDocument.FormFields(strFieldNameY).Result = strElementY
ActiveDocument.FormFields(strFieldNameZ).Result = strElementZ
ewig dauern. Eine CPU Belastung oder Speicherauslastung kann ich jedoch nicht feststellen. es sind ca. 70MB RAM und 13% CPU Last zu sehen. Das ist nix!
Meine Felder haben die Namen
X_1_
Y_1_
Z_1_
X_2_
Y_2_
Z_2_
jeweils mit 1-7 hinten dran.
Wäre super wenn da jemand eine Idee hat.
Grüße und Danke
excelite
Code:
Private Sub CommandButton1_Click()
Dim PosSemikolon, nIdentNumber, i, bla As Integer
Dim LengthString As Integer
Dim strElementX, strElementY, strElementZ As String
Dim strFieldNameX, strFieldNameY, strFieldNameZ As String
Dim strIdentifier, strIdentNumber As String
Dim aryRealValuesX(14), aryRealValuesY(14), aryRealValuesZ(14) As Double
Open ".\ínputdatei.txt" For Input As #1
i = 0
Do While Not EOF(1)
Line Input #1, temp
If InStr(1, temp, ";") And Left(temp, 7) = "M_PUNKT" Then
i = i + 1
If i > 13 Then
Exit Do
End If
' strElementX mit X - Wert erzeugen
PosSemikolon = InStr(1, temp, ";")
strElementX = Right(temp, Len(temp) - PosSemikolon)
PosSemikolon = InStr(1, strElementX, ";")
strElementX = Left(strElementX, PosSemikolon - 1)
' strElementX mit Y - Wert erzeugen
PosSemikolon = InStr(1, temp, ";")
PosSemikolon = InStr(PosSemikolon + 1, temp, ";")
strElementY = Right(temp, Len(temp) - PosSemikolon)
PosSemikolon = InStr(1, strElementY, ";")
strElementY = Left(strElementY, PosSemikolon - 1)
' strElementX mit Z - Wert erzeugen
PosSemikolon = InStr(1, temp, ";")
PosSemikolon = InStr(PosSemikolon + 1, temp, ";")
PosSemikolon = InStr(PosSemikolon + 1, temp, ";")
strElementZ = Right(temp, Len(temp) - PosSemikolon)
PosSemikolon = InStr(1, strElementZ, ";")
strElementZ = Left(strElementZ, PosSemikolon - 1)
If i < 10 Then
strIdentifier = "M_PUNKT00" + CStr(i)
Else
strIdentifier = "M_PUNKT0" + CStr(i)
End If
strIdentNumber = Right(Left(temp, 10), 3)
nIdentNumber = Val(strIdentNumber)
If nIdentNumber < 8 Then
strFieldNameX = "X_1_" + CStr(nIdentNumber)
strFieldNameY = "Y_1_" + CStr(nIdentNumber)
strFieldNameZ = "Z_1_" + CStr(nIdentNumber)
ElseIf nIdentNumber > 7 Then
strFieldNameX = "X_2_" + CStr(nIdentNumber - 7)
strFieldNameY = "Y_2_" + CStr(nIdentNumber - 7)
strFieldNameZ = "Z_2_" + CStr(nIdentNumber - 7)
End If
ActiveDocument.FormFields(strFieldNameX).Result = strElementX
ActiveDocument.FormFields(strFieldNameY).Result = strElementY
ActiveDocument.FormFields(strFieldNameZ).Result = strElementZ
aryRealValuesX(i - 1) = CDbl(strElementX)
aryRealValuesY(i - 1) = CDbl(strElementY)
aryRealValuesZ(i - 1) = CDbl(strElementZ)
End If
Loop
Close #1
End Sub
Inhalt der txt Datei
Code:
Bauteilname: T1_M2
Seriennummer: 1
Gerät: 1
Geräteversion: 1,07
Gerätezertifikationsdatum:
Tagesdatum: 29.11.2010
Einheiten: Millimeter
Etikett;TatsächlichX;TatsächlichY;TatsächlichZ;I;J;K;TatsächlichX2;TatsächlichY2;TatsächlichZ2;I2;J2;K2;TatsächlichRFS;TatsächlichMMC;MaxFehler;MinFehler;Punktanzahl;Temperatur;AbweichungX;AbweichungY;AbweichungZ;AbweichungDurchm;AbweichungRad;AbweichungLänge;AbweichungWinkel;AbweichungForm;AbweichungRFS;AbweichungMMC;AußerhTolX;AußerhTolY;AußerhTolZ;AußerhTolDurchm;AußerhTolRad;AußerhTolLän;AußerhTolWink;AußerhTolForm;AußerhTolRFS;AußerhTolMMC;TatsächlichWinkel;TatsächlichDurchm;TatsächlichLän;TatsächlichRad;TatsächlichForm;SollwertX;SollwertY;SollwertZ;SollwertDurchm;SollwertRad;SollwertLän;SollwertWink;ObereTolX;ObereTolY;ObereTolZ;ObereTolWink;ObereTolForm;ObereTolLän;ObereTolRad;ObereTolDurchm;ObereTolRFS;ObereTolMMC;UntereTolX;UntereTolY;UntereTolZ;UntereTolWink;UntereTolLän;UntereTolRad;UntereTolDurchm;Bezugsgröße;Bezugsgröße1;Bezugsgröße2;Bezugsgröße3;Bezugsgröße4;Bezugsgröße5;Bezugsgröße6;Bezugsgröße7;StdAbw;Spanne;DURCHSCHN;ObereTolAbwPos;AbweichungGerät;AußerhTolGerät;MerkmalTyp
_KOORDSYS001;+0000,0000;-0000,0000;+0000,0000;-000,0000;+000,0000;-001,0000;;;;;;;;;;;;0,000°C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ALIGN
C_AUSRICHTUNG001;;;;;;;;;;;;;;;+000,0000;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+000,0000;+000,0000;+000,0000;+001,2700;+000,0000;**********;ARMPOS
C_KOORDSYS002;+0000,0000;+0000,0000;+0000,0000;+000,0000;+000,0000;+001,0000;;;;;;;;;;;;0,000°C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ALIGN
M_PUNKT001;+0296,9123;-0030,4655;+0736,2765;+000,0000;
M_PUNKT002;+0121,7234;-0205,3282;+0872,3462;+000,0000;
M_PUNKT003;+0121,7358;-0205,3344;+0897,3386;+000,0000;
M_PUNKT004;+0121,7652;-0205,3216;+0922,3805;+000,0000;
M_PUNKT005;+0121,8143;-0205,3488;+0947,4028;+000,0000;
M_PUNKT006;+0121,8703;-0205,3218;+0972,4327;+000,0000;
M_PUNKT007;+0121,8904;-0030,3355;+0872,3274;+000,0000;
M_PUNKT008;+0121,9007;-0030,3381;+0897,3518;+000,0000;
M_PUNKT009;+0121,9428;-0030,2975;+0922,3647;+000,0000;
M_PUNKT010;+0121,9353;-0030,3377;+0947,3974;+000,0000;
M_PUNKT011;+0121,9404;-0030,3254;+0972,3937;+000,0000;
M_PUNKT012;+0122,0863;+0144,6256;+0872,3867;+000,0000;
M_PUNKT013;+0122,1026;+0144,6516;+0897,3832;+000,0000;
M_PUNKT014;+0122,0775;+0144,6854;+0922,3771;+000,0000;
M_PUNKT015;+0122,0801;+0144,6666;+0947,4117;+000,0000;
M_PUNKT016;+0121,9949;+0144,6361;+0972,3894;+000,0000;
M_PUNKT017;+0296,5674;-0205,4371;+0872,3354;+000,0000;
M_PUNKT018;+0296,6057;-0205,4568;+0897,3449;+000,0000;
M_PUNKT019;+0296,6497;-0205,4804;+0922,3572;+000,0000;
M_PUNKT020;+0296,6883;-0205,4817;+0947,3772;+000,0000;
M_PUNKT021;+0296,7052;-0205,4519;+0972,4003;+000,0000;
M_PUNKT022;+0296,8664;-0030,5710;+0872,3370;+000,0000;