Sub RandomiseFields(TableName As String, Fields As String)
Dim cnn As Connection, rs As Recordset, CurrentField As Variant, i As Integer
Set cnn = CurrentProject.AccessConnection
Set rs = New Recordset
rs.Open "SELECT " & Fields & " FROM " & TableName, cnn, adOpenStatic, adLockPessimistic
While Not rs.EOF
i = 0
For Each CurrentField In rs.Fields
If Defined(CurrentField) Then: rs.Fields(i) = RandomString(CurrentField)
i = i + 1
Next CurrentField
rs.MoveNext
Wend
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
Function RandomString(SourceString As Variant) As String
Dim x As Integer, y As Integer, ReturnString() As String
y = Len(SourceString)
ReDim ReturnString(1 To y) As String
For x = 1 To y
ReturnString(x) = RandomLetter(Mid(SourceString, x, 1))
Next x
RandomString = Join(ReturnString, "")
End Function
Function RandomLetter(SourceLetter As String) As String
If SourceLetter = " " Then: RandomLetter = SourceLetter: Exit Function
Dim Asc As Long
Randomize
Asc = vbKeyA + CLng(Rnd * (vbKeyZ - vbKeyA))
Randomize
If Rnd > 0.5 Then
RandomLetter = LCase$(Chr$(Asc))
Else
RandomLetter = UCase$(Chr$(Asc))
End If
End Function
Function Defined(Optional Variable As Variant) As Boolean
On Error GoTo Fail
If Not Len(Variable) = 0 Then: Defined = True: Exit Function
Fail:
Defined = False
End Function