Help and Support

文書番号: 155512 - 最終更新日: 2004年2月11日 - リビジョン: 4.0

[AC97]VBAから Schema.ini ファイルを作成する方法

この記事は、以前は次の ID で公開されていました: JP155512

目次

すべて展開する | すべて折りたたむ

概要


VBA を使用して、データベース内の既存のテーブルを基にして Schema.ini ファイルを作成する方法を紹介します。

詳細

Access 97 あるいは、Access 95 では、区切り記号付きテキストファイルまたは、固定長テキスト ファイルをリンクしたり、直接開いたりすることができます。これらのテキストファイルのデータの読み取り、インポート、およびエクスポートを行うには、Schema.ini ファイルを作成して、その中に Text ISAM 情報を追加する必要があります。
Schema.ini には、テキスト ファイルの書式化方法、インポート時の読み取り方法、既定値のファイルへのエクスポート書式などの、テキスト データ ソースの仕様が記述されています。また、Schema.ini ファイルは、テキスト ファイルと同じフォルダに保存する必要があります。

サンプルをご覧いただく前に

この文書は Access 97 Access 95 のプログラミングツールを使用して Access 97 Access 95 のアプリケーションを作成でき、かつ Microsoft(R) VisualBasic(R) Programming System Applications Edition (以下 VBA) を十分に理解している方を対象とします。
VBA に関する詳細な情報はオンラインヘルプをご覧ください。

サンプル

以下のサンプルは、プロシージャ CreateSchemaFile の引数 sTblQryName で指定したカレントデータベースのテーブルやクエリーをテキスト形式 (区切り記号付き) でエクスポートし、引数 sPath で指定したフォルダに Schema.ini を作成します。
  プロシージャ名:CreateSchemaFile
  引数:bIncFldNames - True/Falseでテキスト ファイルの最初の行に列名の有無を
                       指定します。
               sPath - Schema.ini が保存されるフォルダへの完全なパス。
        sSectionName - Schema.ini セクション名。(テキスト ファイルの名前と
                       同じ)
         sTblQryName - Schema.ini ファイルを作成するテーブルまたはクエリーの
                       名前。
  -----------------------------------------------------------------------------
  Public Function CreateSchemaFile(bIncFldNames As Boolean, sPath As String, _
                    sSectionName As String, sTblQryName As String) As Boolean
      Dim Msg As String
      Dim ws As Workspace, db As Database
      Dim tblDef As TableDef, fldDef As Field
      Dim i As Integer, Handle As Integer
      Dim fldName As String, fldDataInfo As String
      
      On Error GoTo CreateSchemaFile_Err
      'テキスト形式(区切り記号付き)でエクスポートします。
      DoCmd.TransferText acExportDelim, , sTblQryName, sPath & "\" & _
              sSectionName, bIncFldNames
      ' スキーマ ファイルを開きます。
      Handle = FreeFile
      Open sPath & "\schema.ini" For Output Access Write As #Handle
      ' スキーマ ファイルのヘッダーを書き込みます。
      Print #Handle, "[" & sSectionName & "]"
      Print #Handle, "ColNameHeader=" & IIf(bIncFldNames, "True", "False")
      Print #Handle, "CharacterSet=ANSI"
      Print #Handle, "Format=CSVDelimited"
      ' スキーマ ファイルに情報を設定します。
      Set db = CurrentDb()
      Set tblDef = db.TableDefs(sTblQryName)
      With tblDef
          For i = 0 To .Fields.Count - 1
              Set fldDef = .Fields(i)
              With fldDef
                  fldName = .Name
                  Select Case .Type
                      Case dbBoolean
                          fldDataInfo = "Bit"
                      Case dbByte
                          fldDataInfo = "Byte"
                      Case dbInteger
                          fldDataInfo = "Short"
                      Case dbLong
                          fldDataInfo = "Long"
                      Case dbCurrency
                          fldDataInfo = "Currency"
                      Case dbSingle
                          fldDataInfo = "Single"
                      Case dbDouble
                          fldDataInfo = "Double"
                      Case dbDate
                          fldDataInfo = "DateTime"
                      Case dbText
                          fldDataInfo = "Char Width " & Format$(.Size)
                      Case dbLongBinary
                          fldDataInfo = "Memo"
                      Case dbMemo
                          fldDataInfo = "Memo"
                      Case dbGUID
                          fldDataInfo = "Char Width 16"
                  End Select
                  Print #Handle, "Col" & Format$(i + 1) & "=" & fldName & _
                           Space$(1) & fldDataInfo
              End With
          Next i
      End With
      MsgBox sPath & "SCHEMA.INI を作成しました。"
      CreateSchemaFile = True
  CreateSchemaFile_End:
      Close Handle
      Exit Function
  CreateSchemaFile_Err:
      Msg = "エラー番号 " & Format$(Err.Number) & vbCrLf
      Msg = Msg & Err.Description
      MsgBox Msg
      Resume CreateSchemaFile_End
  End Function
  -----------------------------------------------------------------------------

操作手順

サンプル データベース Northwind.mdb の [運送会社] テーブルをテキスト形式 (区切り記号付き) で、c:\My Documents フォルダに UNSO.TXT というファイル名でエクスポートし、同じフォルダに Schema.iniファイル を作成します。その後、プロシージャ名 AddRecToText で作成した Schema.ini を使用してテキストファイルにレコードを追加します。
  1. サンプル データベース Northwind.mdb を開きます。
  2. データベース ウィンドウの [モジュール] タブをクリックして、モジュールを新規に作成します。
  3. モジュール ウィンドウから、上記のサンプル プロシージャを入力します。
  4. [デバッグ] メニューの [ロード済みモジュールのコンパイル] をクリックするか、ツール バーの [ロード済みモジュールのコンパイル] ボタンをクリックします。
  5. エラーが表示された場合は、入力ミスがないかどうかを再度チェックしてください。
  6. [表示] メニューの [デバッグ ウィンドウ] をクリックするか、ツール バーの [デバッグ ウィンドウ] ボタンをクリックして、デバッグ ウィンドウを表示します。
  7. プロシージャを実行します。デバッグ ウィンドウに以下のように入力して、Enter キーを押します。
    ?CreateSchemaFile(False, "C:\My Documents", "UNSO.TXT", "運送会社")
  8. メモ帳またはワードパッドなどのテキスト エディタで、作成した Schema.ini ファイルを開きます。ファイルには以下の情報が含まれています。
          ------------------------------
          [UNSO.TXT]
          ColNameHeader=False
          CharacterSet=ANSI
          Format=CSVDelimited
          Col1=運送コード Long
          Col2=運送会社 Char Width 40
          Col3=電話番号 Char Width 24
          ------------------------------
    
  9. 上記の手順で作成した [UNSO.TXT] テキストファイルにレコードを追加するプロシージャを作成します。
  10. データベース ウィンドウの [モジュール] タブをクリックして、モジュールを新規に作成します。
  11. モジュール ウィンドウから、以下のサンプル プロシージャを入力します。
      -------------------------------------------------------------------------
      Sub AddRecToText()
         Dim db As Database
         Dim rs As Recordset
         Dim i As Integer
         Set db = DBEngine(0).OpenDatabase("C:\my documents", True, False, "Text;")
         Set rs = db.OpenRecordset("unso")
         rs.AddNew
         rs!運送コード = 5
         rs!運送会社 = "MS 宅配"
         rs!電話番号 = "(03) 1111-xxxx"
         rs.Update
      End Sub
      ------------------------------------------------------------------------
    
  12. [デバッグ] メニューの [ロード済みモジュールのコンパイル] をクリックするか、ツール バーの [ロード済みモジュールのコンパイル] ボタンをクリックします。
  13. エラーが表示された場合は、入力ミスがないかどうかを再度チェックしてください。
  14. [表示] メニューの [デバッグ ウィンドウ] をクリックするか、ツール バーの [デバッグ ウィンドウ] ボタンをクリックして、デバッグ ウィンドウを表示します。
  15. プロシージャを実行します。デバッグ ウィンドウに以下のように入力して、Enter キーを押します。
    AddRecToText
  16. メモ帳またはワードパッドなどのテキスト エディタで UNSO.TXT を開きます。1 レコード追加されていることが確認できます。

参照

以下は、Access 97 のヘルプで検索するときのキーワードです。
  • フォームのタブ オーダーの設定の詳細
    「ドライバの初期化」で検索し、「テキスト データ ソース ドライバの初期化」

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 155512? (http://support.microsoft.com/kb/155512/EN-US/ ) (最終更新日 1997-04-14) をもとに作成したものです。


この資料は以下の製品について記述したものです。
  • Microsoft Access 97 Standard Edition
  • Microsoft Access 95 Standard Edition
キーワード:?
7.00 8.00 ini kbhowto registry schema vbaac vbaall 設定 KB155512
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
Retired KB Articleサポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

サポート技術情報の翻訳