Hallo,
ich habe folgenden VBA Code in einem Macro für Solidworks verwendet um Nummern zu vergeben. Jetzt würde ich gerne mit einer Anwendung die Unabhängig von Solidworks läuft auch Nummern vergeben, die letzte Nummer soll dabei in die gleiche Datei wie beim VBA Macro geschrieben werden. Jetzt habe ich das Programm so angepasst dass es weitestgehend in VB.net (4.5 Windows Forms Anwendung) läuft. Ich bekomme nur immer die selbe Fehlermeldung bei folgendem Teil des Programms der die Nummer in die Datei schreibt.
Fehler 5: Über das Ende des Datenstromes kann nicht hinaus gelesen werden.
Ich habe jetzt schon alles mögliche Probiert und Suche seit 2 Tagen im Internet aber ich habe bis jetzt einfach keine Lösung gefunden vielleicht kann mir ja von euch wer weiterhelfen und sagen woran es liegt?
VBA Macro:
Option Explicit
Function GetNextNumber(ByVal strFilePath As String) As Long
On Error GoTo Err_InsertText
Dim iFile As Integer
Dim lngLastNumber As Long
Dim lngNewNumber As Long
'// Freie Dateinummer ermitteln
iFile = FreeFile
'// Datei geschützt zum Lesen/Schreiben öffnen
Open strFilePath For Binary Access Read Write Lock Read Write As #iFile
Get #iFile, 1, lngLastNumber
lngNewNumber = lngLastNumber + 1
Put #iFile, 1, lngNewNumber
GetNextNumber = lngNewNumber
Exit_InsertText:
On Error Resume Next
Close #iFile
On Error GoTo 0
Exit Function
Err_InsertText:
Dim lNum As Long
Dim sErr As String
lNum = Err.Number
sErr = "Es ist ein Fehler aufgetreten!" & vbCrLf & _
lNum & ": " & Err.Description
MsgBox sErr, vbCritical, "Textdatei beschreiben"
GetNextNumber = -1
Resume Exit_InsertText
End Function VB.net:
Const strPathToNumberFile As String = "d:\part number generator"
Private Function GetNextNumber(ByVal strFilePath As String) As Long
On Error GoTo Err_InsertText
Dim iFile As Integer
Dim lngLastNumber As Long
Dim lngNewNumber As Long
'// Freie Dateinummer ermitteln
iFile = FreeFile
'// Datei geschützt zum Lesen/Schreiben öffnen
FileOpen(iFile, strFilePath, OpenMode.Binary, OpenAccess.ReadWrite, _
OpenShare.LockReadWrite)
FileGet(iFile, lngLastNumber, 1)
lngNewNumber = lngLastNumber + 1
FilePut(iFile, lngNewNumber, 1)
GetNextNumber = lngNewNumber
Exit_InsertText:
On Error Resume Next
FileClose(iFile)
On Error GoTo 0
Exit Function
Err_InsertText:
Dim lNum As Long
Dim sErr As String
lNum = Err.Number
sErr = "Es ist ein Fehler aufgetreten!" & vbCrLf & _
lNum & ": " & Err.Description
MsgBox(sErr, vbCritical, "Textdatei beschreiben")
GetNextNumber = -1
Resume Exit_InsertText
End Function Vielen Dan für eure Hilfe!
MfG Kluckey
Beitrag wurde zuletzt am 31.07.14 um 22:29:52 editiert. |