我试图将大量图像(~1000)附加到Microsoft Access中。 我认为使用VBA自动完成任务是明智的,而不是手动完成。
我不想将超链接或路径或OLE链接到文件的位置,这会使数据库的文件大小保持不变。 (编辑:据了解,Ms Ms的限制为2Gb,我希望在假设2Gb限制不会超过这种情况的情况下继续前进。)
我想要做的所有这些数据库名为" database1"。我要将图像导入的表格命名为" Table1"。 在此表中,到目前为止有3列:
1)自动生成的ID,我保留原样
2)标题为" file_name"的列,当前为" image1"," image2"," image3",或者,我可以将条目更改为此列中的文件路径(例如C:\ Users \ Username \ Documents \ image1.jpg)。我已经生成了所有图像的列表'我的计算机上使用.bat文件到.txt文件的路径,该文件名为" file_paths"。
3)标题为" attachment_column"的列。这是我希望将图像放入数据库的列。
如果可能的话,我希望将图像导入到相应的数据库条目中,如第2列中的file_name所示。
我一直在查看各种文档并试着没有任何运气。 https://msdn.microsoft.com/VBA/Access-VBA/articles/work-with-attachments-in-dao https://access-programmers.co.uk/forums/showthread.php?t=172939
我拥有的壁橱就像下面这样。但我无法弄清楚如何遍历file_paths.txt中的所有文件路径以附加所有图像。
Sub macrotest2()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb 'I guess I don't have to define as database1 ?
Set rsEMployees = db.OpenRecordset("Table1", dbOpenDynaset)
rsEMployees.Edit
Set rsPictures = rsEMployees.Fields("attachment_column").Value
rsPictures.AddNew
rsPictures.Fields("attachment_column").LoadFromFile "C:\Users\Username\Documents\image1.jpg"
'how to automate this to loop all the file paths in file_paths.txt?
rsPictures.Update
rsEMployees.Update
End Sub
先谢谢你。
答案 0 :(得分:0)
试试这个:
Dim fileName As String, textRow As String, fileNo As Integer
fileName = "C:\file_paths.txt"
fileNo = FreeFile 'Get first free file number
Dim i as Integer
Dim db As DAO.Database
Dim rsEmployees As DAO.Recordset, rsPictures AS DAO.Recordset
Set db = CurrentDb()
Open fileName For Input As #fileNo
Do While Not EOF(fileNo)
i = i + 1
Set rsEmployees = db.OpenRecordset("Table1", dbOpenDynaset)
rsEmployees.Edit
rsEmployees.AddNew
Line Input #fileNo, textRow
rsEmployees.Fields("file_name").Value = textRow
Set rsPictures = rsEmployees.Fields("attachment_column").Value
rsPictures.AddNew
rsPictures.Fields("FileData").LoadFromFile textRow
rsPictures.Update
rsPictures.Close
rsEmployees.Update
rsEmployees.Close
Loop
Close #fileNo
MsgBox i
有多种方法可以逐行浏览,但我喜欢这个。
请注意,文字文件中不能有空行。即使是最后一行也需要包含文件链接。