背景资讯 我对VBA或Access不是很了解,但是我有一个VBA脚本可以在用户计算机上创建一个文件(一个特定的KML,但这对我的问题无关紧要)并写入它使用链接到数据库中记录的变量。就这样:
Dim MyDB As Database
Dim MyRS As Recordset
Dim QryOrTblDef As String
Dim TestFile As Integer
QryOrTblDef = "Table1"
Set MyDB = CurrentDb
Set MyRS = MyDB.OpenRecordset(QryOrTblDef)
TestFile = FreeFile
Open "C:\Testing.txt"
Print #TestFile, "Generic Stuff"
Print #TestFile, MyRS.Fields(0)
等。
我的情况: 我有一个非常大的字符串(带有大量多边形顶点坐标列表的文本文档),我想将其添加到要打印到另一个文件的变量(KML文件,在上面的例子中注明)。我希望将包含坐标的文本文件作为附件数据类型添加到Access数据库,并将其内容复制到要在上述脚本中使用的变量中。
我的问题: 有没有办法可以访问并将附加的文本文件(作为MS Access数据库的字段中的附件数据类型附加)中的数据复制到变量中,以便我可以在VBA脚本中使用它?
我找到了什么: 我很难找到关于这个主题的信息我认为主要是因为我不知道要搜索哪些关键字,但我能够在论坛上找到某些代码,“ozgrid”,这似乎接近于什么我想要做。虽然它只是从磁盘上的文本文件而不是附加到数据库的文本文件中提取。
上述论坛中的代码,用于创建访问文本文件中数据的功能:
Sub Test()
Dim strText As String
strText = GetFileContent("C:\temp\x.txt")
MsgBox strText
End Sub
Function GetFileContent(Name As String) As String
Dim intUnit As Integer
On Error Goto ErrGetFileContent
intUnit = FreeFile
Open Name For Input As intUnit
GetFileContent = Input(LOF(intUnit), intUnit)
ErrGetFileContent:
Close intUnit
Exit Function
End Function
此处的任何帮助表示赞赏。谢谢。
答案 0 :(得分:1)
如果您要存储纯文本,甚至是有组织文本的表格,那么为什么备忘录数据类型不适合我有点困惑。话虽这么说,一种方法是输出到磁盘并读入一个字符串。
''Ref: Windows Script Host Object Model
Dim fs As New FileSystemObject
Dim ts As TextStream
Dim rs As DAO.Recordset, rsA As DAO.Recordset
Dim sFilePath As String
Dim sFileText As String
sFilePath = "z:\docs\"
Set rs = CurrentDb.OpenRecordset("maintable")
Set rsA = rs.Fields("aAttachment").Value
''File exists
If Not fs.FileExists(sFilePath & rsA.Fields("FileName").Value) Then
''It will save with the existing FileName, but you can assign a new name
rsA.Fields("FileData").SaveToFile sFilePath
End If
Set ts = fs.OpenTextFile(sFilePath _
& rsA.Fields("FileName").Value, ForReading)
sFileText = ts.ReadAll
另请参阅:http://msdn.microsoft.com/en-us/library/office/ff835669.aspx