我正在尝试在数据库中创建一个表,该表存储与“in”中的数据库相关的所有文档。我真正想做的是上传一个文件并使用vba代码将文件复制到网络位置,通过连接文档表格中的两个字段来重命名文件(消除了外部位置重复文件名的问题),然后将文件名和文件路径存储在表中的文件路径字段中。我很新,访问和vba所以我很难让一切工作。我目前的代码如下:
Option Compare Database
Private Sub Command15_Click()
Dim f As Object
Set f = Application.FileDialog(3)
f.AllowMultiSelect = False
If f.Show Then
For i = 1 To f.SelectedItems.Count
sFile = Filename(f.SelectedItems(i), sPath)
MsgBox sPath & "---" & sFile
Next
End If
End Sub
Public Function Filename(ByVal strPath As String, sPath) As String
sPath = Left(strPath, InStrRev(strPath, "\"))
Filename = Mid(strPath, InStrRev(strPath, "\") + 1)
End Function
我似乎无法掌握如何移动,通过连接表单中的两个字段进行重命名,或者将路径存储在表的路径字段中。我去过以下地点以获取我可以提供的信息
ms access browse for file and get file name and path
VBA to copy a file from one directory to another
我目前正在使用Microsoft Access 2010,由于数据库大小限制,我不希望使用文件附件字段类型。目前我按下一个按钮,文件浏览器似乎导航到正在上传的文件,路径和文件名输入到字符串中。在此之后我迷失了。如果需要任何其他信息,请告诉我。在此先感谢您的帮助。
答案 0 :(得分:2)
我相信你管理文件的方法是正确的。在大多数情况下,当文件系统更适合这项工作时,将文档存储在数据库本身没有多大意义。
您所做的事情相当简单,但主要的复杂性来自对各种路径和文件名的正确管理以及从中提取正确的信息。
如果您没有使用某些辅助函数来剖析和重构路径的各个部分,那么它会变得棘手。
我创建了一个具有一些功能的sample database。可能不完全符合您的需要,但您可以轻松地使用它来满足您的特定情况。
示例数据库包含一个Tools
VBA模块,它具有一些将路径拆分为其组成部分的有用功能。
基本上,数据库有两种形式。
主窗体允许您设置要保存文件的网络路径。
然后,您可以选择与文档关联的预定义帐号(在Account
表中列出),然后单击上传按钮。
这将在Document
表格中创建一条新记录,并打开一个表格,您可以在其中编辑文档标题,然后单击按钮将文件上传到服务器。
用户选择的文件在路径转换后将复制到服务器。
我假设文件将保留其原始扩展名,文件名将重命名为保存文件信息的ID
记录的Document
(如5845.pdf
),并且文件保存在服务器上的文件夹将是帐号,以便用户选择的源文件
C:\Users\user\Desktop\SuperSecretFile.pdf
将保存为,例如:
\\docserver\files\123-55547\5845.pdf
主窗体还允许您更新现有记录,从服务器打开文件,打开文件所在的服务器文件夹,甚至可以使用文件的原始名称将服务器文件复制回用户计算机。
我会让你玩弄它。如果您有任何问题,请告诉我。