VBA/Excel/Access/Word/File Path/Random Access Files

Материал из VB Эксперт
Перейти к: навигация, поиск

Gets the desired record from the file and writes the fields to the worksheet.

   <source lang="vb">

Private Type Employee

    empID As String * 8
    empName As String * 20
    empAge As Integer
    empStatus As String * 10
    empSalaryClass As String * 1

End Type

Sub GetEmployeeInfo()

   Dim empData As Employee
   Dim filePath As String
   filePath = ActiveWorkbook.Path & "\Employees.txt"
   Open filePath For Random As #1 Len = Len(empData)
       Get #1, recNum, empData
       Cells(2, "A").Value = empData.empID
       Cells(2, "B").Value = empData.empName
       Cells(2, "C").Value = empData.empAge
       Cells(2, "D").Value = empData.empStatus
       Cells(2, "E").Value = empData.empSalaryClass
   Close #1

End Sub

</source>
   
  


Random Access Files

   <source lang="vb">

Private Type Employee

    empID As String*8
    empName As String*20
    empAge As Integer
    empStatus As String*10
    empSalaryClass As String*1

End Type Private recNum As Integer Sub WriteEmployeeInfo()

   Dim empData As Employee
   Dim filePath As String
   recNum = GetMaxRecNum     "Get the next available record number
   filePath = ActiveWorkbook.Path & "\Employees.txt"
   Open filePath For Random As #1 Len = Len(empData)    "Open file
       empData.empID = Cells(2, "A").Value
       empData.empName = Cells(2, "B").Value
       empData.empAge = Cells(2, "C").Value
       empData.empStatus = Cells(2, "D").Value
       empData.empSalaryClass = Cells(2, "E").Value
       Put #1, recNum, empData   "Write the data
   Close #1

End Sub "

</source>
   
  


Use Random Access Files to save a user defined data type

   <source lang="vb">

Private Type Employee

    empID As String * 8
    empName As String * 20
    empAge As Integer
    empStatus As String * 10
    empSalaryClass As String * 1

End Type Sub GetMaxRecNum()

   Dim empData As Employee
   Dim empDataLen As Long
   Dim filePath As String
   filePath = ActiveWorkbook.Path & "\Employees.txt"
   empDataLen = FileLen(filePath)
   Debug.Print empDataLen / Len(empData) + 1

End Sub

</source>