Okay,Schleife aktualisiert Diagram auf Userform
So versuche ich, den folgenden Code zu integrieren:
`Private Sub UserForm_Initialize()
Dim Fname As String
Call SaveChart
Fname = ThisWorkbook.Path & "\temp1.gif"
Me.Image1.Picture = LoadPicture(Fname)
End Sub
Private Sub SaveChart()
Dim MyChart As Chart
Dim Fname As String
Set MyChart = Sheets("Data").ChartObjects(1).Chart
Fname = ThisWorkbook.Path & "\temp1.gif"
MyChart.Export Filename:=Fname, FilterName:="GIF"
End Sub`
von diesem Posten: Displaying "live" chart data in Excel Userform in eine bestehende Schleife, so dass die obige Codeabschnitt iteriert mit Die Schleife und das Bild werden jedes Mal aktualisiert, wenn die Schleife ausgeführt wird. Ich hätte dies als Kommentar zu der oben erwähnten Frage gepostet, aber ich habe nicht genug Rep.
'
' Get last logged data
'
Private Sub GetLastLoggedData()
Dim rangeToWrite
Dim lStartFileSize As Long
Dim lNextFileSize As Long
Dim dtStartTime As Date
Dim lElapsedTime As Long
Dim bDone As Boolean
Dim sLastHeader As String
Dim sLastData As String
Dim iCol As Integer
Dim sNextValue As String
Dim iLoop As Integer
Dim Fname As String
Dim MyChart As Chart
On Error GoTo ErrorHandler
' Initialize global_bHasScanCount flag
global_bHasScanCount = False
' Get the file size of the log file
lStartFileSize = FileLen(global_sLogFile)
' Initialize timer
dtStartTime = Now
' Wait for filesize to change
UpdateLogStatus Now & " : Data Monitor: waiting for file size to change..."
bDone = False
Do
' Get the file size of the log file and see if it's changed
lNextFileSize = FileLen(global_sLogFile)
If lNextFileSize <> lStartFileSize And lNextFileSize <> 0 Then
bDone = True
Else
lElapsedTime = DateDiff("s", dtStartTime, Now)
If (lElapsedTime >= global_lTimeout) Or (lElapsedTime < 0) Then
bDone = True
End If
End If
DoEvents
Loop Until bDone = True
' Backup the file
UpdateLogStatus Now & " : Data Monitor: backing up data file..."
'FileCopy global_sLogFile, global_sLogFileBackup
' Read the log file
UpdateLogStatus Now & " : Data Monitor: reading data file..."
sLastData = ""
sLastHeader = ""
If ReadLogFile(global_sLogFile, sLastData, sLastHeader) = False Then
' Delete the backup log file
'Kill global_sLogFileBackup
Exit Sub
End If
' Delete the backup log file
'Kill global_sLogFileBackup
UpdateLogStatus Now & " : Data Monitor: updating worksheet..."
' Clear previous Results in Excel Spreadsheet
ThisWorkbook.Worksheets("ACQUIRE DATA").Range("A2:IV2").ClearContents
' Parse comma delimeted header and place data into worksheet cells. If we have the scan count then
' start writing in column1, else starting writing in column2.
If global_bHasScanCount = True Then
iCol = 1
Else
iCol = 2
End If
If sLastHeader <> "" Then
' Clear previous Results in Excel Spreadsheet
ThisWorkbook.Worksheets("ACQUIRE DATA").Range("A1:IV1").ClearContents
Do
sNextValue = GetToken(sLastHeader, ",")
' Copy Results to Excel worksheet
ThisWorkbook.Worksheets("ACQUIRE DATA").Cells(1, iCol).Value = sNextValue
iCol = iCol + 1
Loop Until sLastHeader = ""
End If
' Parse comma delimeted results and place data into worksheet cells. If we have the scan count then
' start writing in column1, else starting writing in column2.
If global_bHasScanCount = True Then
iCol = 1
Else
iCol = 2
End If
Do
sNextValue = GetToken(sLastData, ",")
' Copy Results to Excel worksheet
ThisWorkbook.Worksheets("ACQUIRE DATA").Cells(2, iCol).Value = sNextValue
iCol = iCol + 1
'Copy Current Data to Control Panel
UserForm2.TextBox2.Text = Sheets("ACQUIRE DATA").Range("B12")
'Copy Time to Control Panel
UserForm2.TextBox3 = Format(Sheets("ACQUIRE DATA").Range("B13"), "hh:mm:ss")
'Copy Speed to Control Panel
UserForm2.TextBox4.Text = Sheets("ACQUIRE DATA").Range("B14")
'create .gif file of current PerfMap chart
Set MyChart = Sheets("PerfMap").ChartObjects(1).Chart
Fname = ThisWorkbook.Path & "\temp1.gif"
MyChart.Export Filename:=Fname, FilterName:="GIF"
Fname = ThisWorkbook.Path & "\temp1.gif"
'set live data chart image to most recent image
UserForm3.Image1.Picture = LoadPicture(Fname)
Loop Until sLastData = ""
UpdateLogStatus ""
Exit Sub
ErrorHandler:
BuildErrorMessage "GetLastLoggedData", "Failed to get last logged data."
UpdateLogStatus ""
End Sub'
Aber immer wenn ich das tue bekomme ich einen Laufzeitfehler 1004, der vom Fehlerhandler erstellt wird. Jede Hilfe, warum dies nicht funktioniert, wird sehr geschätzt.
BEARBEITEN: Nachdem ich 24 Stunden weggegangen bin, habe ich festgestellt, dass das fragliche Blatt ein Diagrammblatt ist und kein eingebettetes Diagramm, daher funktionierte die oben beschriebene Methode nicht.
Die Grafik ist auf einem Diagrammblatt genannt PerfMap, aber der Planname ist Tabelle 7.