ProgressBar

mb1981

Grünschnabel
Hallo,

ich muß eine Fortschrittsanzeige in meinen Programm einfügen (Visual Basic), habe aber keinen Plan wie das geht.
Das Programm ladet eine .dot Vorlage von MS Word, wenn ich auf einen Cmd-Button klicke. Da dies manchmal lange dauert, soll der Benutzer sehen, dass das Programm läuft und sich die Vorlage ladet. Das Programm ist komlett fertig, nur die Fortschrittsanzeige fehlt.
Kann mir da jemand helfen?
 
Hi,

schau dir mal das hier an. Vieleicht hilft es dir weiter.
Code:
Private Sub Command1_Click()
  Dim filenum As Integer
  Dim filesize As Long
  Dim number As Byte
  
  ProgressBar1.Min = 1
  filenum = FreeFile
  Open "D:\Aktueller Brief.dot" For Binary As filenum
  filesize = LOF(filenum)
  ProgressBar1.max = filesize
	
  Do
	DoEvents
	Get #1, , number
	If ProgressBar1.Value < filesize Then
	  ProgressBar1.Value = ProgressBar1.Value + 1
	End If
  Loop Until Loc(filenum) >= filesize
  Close
End Sub
 
Hallo,
erstmals vielen Dank für die Antwort.
Ich habe den Code in mein Programm eingebaut und diesen dann versucht laufen zu lassen -> mit Erfolg!
Aber da gab es einige Probleme:
1) Es kommt die Fehlermeldung: 'Ungültiger Eigenschaftswert'
und die Zeile
Code:
ProgressBar1.Value = ProgressBar.Value+1
 
Ooo,
habe vorhin den Beitrag irgendwie zu schnell gesendet und dann auch noch mit falschem Code :-(...
der Code lautet natürlich
Code:
ProgressBar1.Value = ProgressBar1.Value + 1
 
Hi mb1981,

kannst du mir evtl. mal den kompletten Codeteil mit der ProgressBar posten?
 
Klar,
Code:
'Variablen für Word-Dokument
    	Dim objWord As New Word.Application
    	Dim oDoc As Word.Document
    	Dim namestring As String
    	Dim zeit As Variant
    	Dim zeitangabe As Variant
    			
    	'Öffnen der Word-Applikation
    	Set objWord = New Word.Application
    	objWord.Visible = True
    	
    	Dim filenum As Integer
    	Dim filesize As Long
    	Dim number As Byte
      
    	ProgressBar1.Min = 1
    	filenum = FreeFile
    	'Öffnet Vorlage in Word
    	Set oDoc = objWord.Documents.Open(g_pfad + g_dotDatei)
    	Open oDoc For Binary As filenum
    	filesize = LOF(filenum)
    	ProgressBar1.Max = filesize
    	
    	 Do
    	  DoEvents
    	  Get #1, , number
    	  If ProgressBar1.Value < filesize Then
    		ProgressBar1.Value = ProgressBar1.Value + 1
    	  End If
    	 Loop Until Loc(filenum) >= filesize
    	Close
Ach ja, wie kann ich die Leiste zurücksetzen? (Wenn ich z.B. auf den Button klicke füllt sich die Leiste und wenn ich nochmal klicke tut sich nichts..)
 
1) Es kommt die Fehlermeldung: 'Ungültiger Eigenschaftswert'
und die Zeile
Code:
ProgressBar1.Value = ProgressBar1.Value+1​
Warscheinlich ist der neue Wert zu groß, also höher als ProgressBar1.Max. Überprüfe das mal mit dem Debugger oder so.
Zurücksetzen kannst du die ProgressBar logischerweise auch über die Value-Eigenschaft:
Code:
ProgressBar1.Value = 0
 
Hi,

also der Fehler liegt beim öffnen der Datei: Open oDoc For Binary As filenum
Dies müßte bei dir so aussehen: Open g_pfad + g_dotDatei For Binary As filenum

Ist nur leider so, daß die ProgressBar hinterhereiert. Die Datei wird also von Word viel schneller geladen, als in VB.
 
Hi,
mein Code sieht nun so aus
Code:
	'Variablen für Word-Dokument
              	Dim objWord As New Word.Application
              	Dim oDoc As Word.Document
              	Dim namestring As String
              	Dim zeit As Variant
              	Dim zeitangabe As Variant
              	Dim filenum As Integer
              	Dim filesize As Long
              	Dim number As Byte
              	
              	MousePointer = 11
              	
             	ProgressBar1.Value = 0 
                ' mit dieser Eigenschaft am Anfang läuft die 
        ' ProgressBar manchmal, aber nicht immer, etwas schneller
              	
              	ProgressBar1.Min = 1
              	filenum = FreeFile
                 
                 'Öffnen der Word-Applikation
              	Set objWord = New Word.Application
              	objWord.Visible = True
              	
              	Set oDoc = objWord.Documents.Open(g_pfad + g_dotDatei)
              	
              	Open g_pfad + g_dotDatei For Binary As filenum
              	filesize = LOF(filenum)
              	ProgressBar1.Max = filesize
              	 
              	Do
              		DoEvents
              		Get #1, , number
              		If ProgressBar1.Value < filesize Then
              			ProgressBar1.Value = ProgressBar1.Value + 1
              		ElseIf ProgressBar1.Value > ProgressBar1.Max Then
              			   Loc (filenum) >= filesize
              		End If
              	Loop Until Loc(filenum) >= filesize
              	Close
              	'ProgressBar1.Value = 0 (gibt immer einen Fehler)
              	MousePointer = 0
Aber wenn ich nach dieser Schleife versuche die Value auf 0 zu setzen, bekomme ich wieder die gleiche Fehlermeldung 'ungültige Eigenschaft'.

Inzwischen habe ich es auch anders versucht:
Code:
'Variablen für Word-Dokument
       	Dim objWord As New Word.Application
       	Dim oDoc As Word.Document
       	Dim namestring As String
       	Dim zeit As Variant
       	Dim zeitangabe As Variant
       	Dim zaehler As Integer
       	
       	MousePointer = 11
       	
       	Fortschritt.Show
       	   
       	For zaehler = 1 To 100
       		Fortschritt.ProgressBar1.Value = zaehler
       		Fortschritt.Label1 = zaehler & " %"
       		Fortschritt.Timer1.Interval = 100
       		Do
       		   DoEvents
       		Loop Until Fortschritt.Timer1.Interval = 0
       	Next
       	Fortschritt.ProgressBar1.Value = 0
       	Fortschritt.Label1 = ""
       	
       	'Öffnen der Word-Applikation
       	Set objWord = New Word.Application
       	objWord.Visible = True
       		   
       	Set oDoc = objWord.Documents.Open(g_pfad + g_dotDatei)
          
       	MousePointer = 0
(Form:Fortschritt)
Code:
Private Sub Timer1_Timer()
          Timer1.Interval = 0
       End Sub
Das klappt und die Word Datei wird erst fertig geladen angezeigt, wenn die ProgressBar voll ist. Anschließend leert sie sich wieder.

P.S. Ihr seid echt klasse, vielen Dank schon im voraus. :)
 

Neue Beiträge

Zurück