0

背景情報: 私は VBA や Access にあまり詳しくありませんが、ユーザーのコンピューター上にファイル (具体的には KML ですが、これは私の質問にはあまり関係ありません) を作成する VBA スクリプトを持っています。データベース内のレコードにリンクする変数を使用して書き込みます。そのような:

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 データベースに追加し、その内容を変数にコピーして上記のスクリプトで使用することを望んでいました。

私の質問: VBA スクリプトで使用できるように、添付テキスト ファイル (MS Access データベースのフィールド内の添付データ型として添付) のデータにアクセスして変数にコピーする方法はありますか?

私が見つけたもの: このトピックに関する情報を見つけるのに苦労しています。主に、検索するキーワードがわからないためだと思いますが、フォーラム「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 

ここで何か助けていただければ幸いです。ありがとう。

4

1 に答える 1

1

純粋なテキストを格納している場合や、整理されたテキストのテーブルを格納している場合でも、なぜメモ データ型が適していないのか、少し当惑しています。そうは言っても、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

于 2013-01-09T12:59:18.097 に答える