AW: hier die defekte Datei ...
28.05.2005 18:33:23
=Peter=
Hallo Michael,
hilft dir das weiter:
https://www.herber.de/bbs/user/23329.xls
Folgender Code in Sheet1:
Option Explicit
Private Declare Sub Sleep Lib "kernel32.dll" ( _
ByVal dwMilliseconds As Long)
Private Sub CommandButton1_Click()
Dim sngStart As Single
Dim n As Integer 'Timerschleife'Integer bis 32.767 oder Long bis 2.147.483.647
Dim m As Integer 'Startschleife
Dim o As Integer 'Stopschleife
Dim Wb1 As String
Dim Sh1 As String
Dim Wb1Sh1 As String
'Dim Wb1Sh1 As Worksheet
Dim Wb2 As String
Dim Sh2 As String
Dim Wb2Sh1 As Worksheet
Dim gcf As Single
Dim dde1 As Integer
Dim dde2 As Integer
Dim channelNumber1, channelNumber2
Wb1 = ActiveWorkbook.name
Sh1 = ActiveSheet.name
Wb1Sh1 = "Workbooks(" & Wb1 & ").Worksheets(" & Sh1 & ")"
'Set Wb1Sh1 = "Workbooks(" & Wb1 & ").Worksheets(" & Sh1 & ")"
gcf = Range("M1")
dde1 = Range("B1")
dde2 = Range("B8")
Workbooks.Add
ActiveWorkbook.SaveAs FileName:="E:\_Log.xls"
Wb2 = ActiveWorkbook.name
Sh2 = ActiveSheet.name
Set Wb2Sh1 = Workbooks("_Log.xls").Worksheets("Tabelle1")
'Workbooks("_Log.xls").Worksheets("Tabelle1").Range("A1") = "Zeit"
Wb2Sh1.Range("A1") = "Zeit"
Wb2Sh1.Range("B1") = "Ch1 (Split)"
Wb2Sh1.Range("C1") = "Ch2 (Carbo)"
Wb2Sh1.Range("A1:C1").Select
Selection.Font.Bold = True
Selection.HorizontalAlignment = xlCenter
Windows(Wb1).Activate 'Flowdde and Excel_1&2-stop_loop_link_.xls
Windows.Arrange ArrangeStyle:=xlVertical
ActiveWindow.ScrollColumn = 2
'Open DDE-link
m = 0 'Schleifenzähler Start
Range("E28") = m
channelNumber1 = Application.DDEInitiate(app:="FLOWDDE", topic:="C(1)")
channelNumber2 = Application.DDEInitiate(app:="FLOWDDE2", topic:="C(1)")
'Write Setpoint Start
Do
If m = 10 Then Exit Do 'verhindert Endlosloop
m = m + 1
'DDE 1
DDEPoke channelNumber1, "P(9)", (Sheets(1).Cells(4, 2))
Sheets(1).Cells(4, 3) = DDERequest(channelNumber1, "P(9)")
'DDE 2
DDEPoke channelNumber2, "P(9)", (Sheets(1).Cells(11, 2))
Sheets(1).Cells(11, 3) = DDERequest(channelNumber2, "P(9)")
Loop While ((Sheets(1).Cells(4, 2).Value) <> (Sheets(1).Cells(4, 3).Value)) And ((Sheets(1).Cells(11, 2).Value) <> (Sheets(1).Cells(11, 3).Value))
Range("E28") = m
'Timerfunktion und Datalogging Start - Ende
Windows("_Log.xls").Activate
sngStart = Timer
n = 0 'Schleifenzähler
Do
n = n + 1
Sleep 197 '200 'Zeit in msec
With Cells(n + 1, 1)
.NumberFormat = "[hh]:mm:ss.000"
.Value = (Timer - sngStart) / 86400
End With
'DDE 1
Sheets(1).Cells(n + 1, 2) = DDERequest(channelNumber1, "P(8)") * dde1 * gcf / 320 * 100
'DDE 2
Sheets(1).Cells(n + 1, 3) = DDERequest(channelNumber2, "P(8)") * dde2 * gcf / 320 * 100
Loop While n <= 9000 '= 30 min bei einem 200ms Intervall
'Stop
Windows("name").Activate 'Flowdde and Excel_1&2-stop_loop_link_.xls
o = 0 'Schleifenzähler Stop
Range("E29") = o
'Write Setpoint Stop
Do
If m = 10 Then Exit Do 'verhindert Endlosloop
m = m + 1
'DDE 1
DDEPoke channelNumber1, "P(9)", (Sheets(1).Cells(33, 2))
Sheets(1).Cells(4, 3) = DDERequest(channelNumber1, "P(9)")
'DDE 2
DDEPoke channelNumber2, "P(9)", (Sheets(1).Cells(39, 2))
Sheets(1).Cells(11, 3) = DDERequest(channelNumber2, "P(9)")
Loop While ((Sheets(1).Cells(33, 2).Value) <> (Sheets(1).Cells(4, 3).Value)) And ((Sheets(1).Cells(39, 2).Value) <> (Sheets(1).Cells(11, 3).Value))
Range("E29") = o
'Timerfunktion und Datalogging Nachlauf
Windows("log.xls").Activate
Do
n = n + 1
Sleep 197 '200 'Zeit in msec
With Cells(n + 1, 1)
.NumberFormat = "[hh]:mm:ss.000"
.Value = (Timer - sngStart) / 86400
End With
'DDE 1
Sheets(1).Cells(n + 1, 2) = DDERequest(channelNumber1, "P(8)") * dde1 * gcf / 320 * 100
'DDE 2
Sheets(1).Cells(n + 1, 3) = DDERequest(channelNumber2, "P(8)") * dde2 * gcf / 320 * 100
Loop While n <= 300 '= 1 min bei einem 200ms Intervall
'ActiveWorkbook.Save
'Close DDE-channel
DDETerminate channelNumber1
DDETerminate channelNumber2
Windows("name").Activate 'Flowdde and Excel_1&2-stop_loop_link_.xls
End Sub
Private Sub CommandButton2_Click()
channelNumber1 = Application.DDEInitiate(app:="FLOWDDE", topic:="C(1)")
channelNumber2 = Application.DDEInitiate(app:="FLOWDDE2", topic:="C(1)")
' Read Measure
Sheets(1).Cells(4, 5) = DDERequest(channelNumber1, "P(8)")
Sheets(1).Cells(11, 5) = DDERequest(channelNumber2, "P(8)")
'Close DDE-channel
DDETerminate channelNumber1
DDETerminate channelNumber2
End Sub
Private Sub CommandButton3_Click()
'Open DDE-link
m = 0 'Schleifenzähler Stop
Range("E29") = m
channelNumber1 = Application.DDEInitiate(app:="FLOWDDE", topic:="C(1)")
channelNumber2 = Application.DDEInitiate(app:="FLOWDDE2", topic:="C(1)")
'Write Setpoint
Do
If m = 10 Then Exit Do 'verhindert Endlosloop
m = m + 1
'DDE 1
DDEPoke channelNumber1, "P(9)", (Sheets(1).Cells(33, 2))
Sheets(1).Cells(4, 3) = DDERequest(channelNumber1, "P(9)")
'DDE 2
DDEPoke channelNumber2, "P(9)", (Sheets(1).Cells(39, 2))
Sheets(1).Cells(11, 3) = DDERequest(channelNumber2, "P(9)")
Loop While ((Sheets(1).Cells(33, 2).Value) <> (Sheets(1).Cells(4, 3).Value)) And ((Sheets(1).Cells(39, 2).Value) <> (Sheets(1).Cells(11, 3).Value))
'Close DDE-channel
DDETerminate channelNumber1
DDETerminate channelNumber2
Range("E29") = m
End Sub
HTH
Gruss
Peter