特定のフォルダー内のすべての Excel ファイルのレコードを作成し、さまざまなセルからの情報をフィールドに入力するフォームを Access 2010 で作成しています。このマクロは、Excel ワークブックのすべてのファイル名 (さまざまな英数字シーケンス) を配列に入力し、それらのファイルを調べて、Excel シートごとに新しいレコードを作成します。
Private Sub PopulateArray_Click()
Dim strListOfFiles() As String
Dim intCount As Integer
intCount = 0
Dim sFile As String
sFile = Dir$("P:\Share\Manufacturing\Propeller\Finalized" & "\*.*", vbDirectory Or vbHidden Or vbSystem Or vbReadOnly Or vbArchive)
Do Until sFile = vbNullString
If sFile <> "." Then ' relative path meaning this directory
If sFile <> ".." Then ' relative path meaning parent directory
ReDim Preserve strListOfFiles(0 To (intCount + 1)) As String
strListOfFiles(intCount) = sFile
intCount = intCount + 1
End If
End If
sFile = Dir$()
Loop
Dim MyDB As DAO.Database
Dim MyRS As DAO.Recordset
Set MyDB = CurrentDb()
Set MyRS = MyDB.OpenRecordset("Record", dbOpenDynaset)
For Index = 0 To UBound(strListOfFiles)
MyRS.AddNew
MyRS![SerialNumber] = "'P:\Share\Manufacturing\Propeller\Finalized\[" & strListOfFiles(Index) & "]Order Input'!B15"
MyRS.Update
Next
End Sub
ほとんどの作業は完了しましたが、最後のステップで行き詰まりました。問題は、For ループの「MyRS![SerialNumber]」ビットで発生します。現時点では、セル自体の値ではなく、セルへの(正しい)ファイルパスを出力するだけです。