レコード操作(DoCmd)【Access】

Docmdオブジェクト【Access】 06.Docmdオブジェクト

ここでは下記のようなレコード操作を紹介します。

  • テキストファイルのインポート・エクスポート
  • テーブル・クエリ・フォームに対してフィルタ設定
  • レコードの検索

TransferTextメソッド/TransferSpreadsheetメソッド

TransferTextメソッドはテキストファイルをインポート・エクスポートします。TransferSpreadsheetメソッドはExcelファイルをインポート・エクスポートします。
【書式】
DoCmd.TransferText [変換種類],[定義名],テーブル名,ファイル名,[フィールド名設定]
DoCmd.TransferSpreadsheet [変換種類],[定義名],テーブル名,ファイル名
              ,[フィールド名設定],[Range]

メソッド引数定数説明
TransferText変換種類
(省略可)
acImportDelim(規定)
acImportFixed
acExportDelim
acExportFixed
acExportMerge
acImportHTML
acExportHTML
カンマ区切りのテキストをインポートする。
固定長のテキストをインポートする。
カンマ区切りのテキストをエクスポートする。
固定長のテキストをエクスポートする。
Word差し込みデータをエクスポートする。
HTML形式でインポートする。
HTML形式でエクスポートする。
定義名
(省略可)
インポート・エクスポートの定義名を指定する。
テーブル名対象となるテーブルを指定する。
ファイル名対象となるファイルのパスとファイル名を指定する。
フィールド名設定
(省略可)     
True
False(規定)
1行目をフィールド名とする。
1行目をフィールド名としない。
TransferSpreadsheet 変換種類
(省略可)
acImport(規定)
acExport
acLink
データをインポートする。
データをエクスポートする。
データにリンクする。
ファイル形式acSpreadsheetExcelType3
acSpreadsheetExcelType4
acSpreadsheetExcelType5
acSpreadsheetExcelType7
acSpreadsheetExcelType8
acSpreadsheetExcelType9
acSpreadsheetExcelType12
acSpreadsheetTypeExcel12Xml

(規定)
Excel3.0形式
Excel4.0形式
Excel5.0形式
Excel95形式
Excel97形式
Excel2000形式
Excel2010形式
Excel2010/2013/2016/XLM形式
(xlsx・xlsm・xlsb)
テーブル名対象となるテーブル名を指定する。
ファイル名対象となるファイルのパスとファイル名を指定する。
フィール名設定
(省略可)
True
False(規定)
1行目をフィールド名とする。
1行目をフィールド名としない。
Range
(省略可)
対象となるセル範囲を指定する。
Sub TransferText_TransferSpreadsheet()
    '実行前にCドライブにtempフォルダを作成する。
    DoCmd.TransferText acExportDelim, , "T_会員名簿", "c:\temp\会員名簿.txt", True
    DoCmd.TransferText acImportDelim, , "T_会員名簿im", "c:\temp\会員名簿.txt", True 'エクスポートしたファイルをインポート。
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "T_会員名簿", "c:\temp\会員名簿.xlsx", True
End Sub
テキストファイルとExcelファイルが出力される。
出力されたテキストファイルを開いたと状態
出力されたExcelファイルを開いた状態
テキストファイルをインポートした状態

OutputToメソッド

データベースオブジェクトを様々な形式で出力します。
【書式】
DoCmd.OutputTo オブジェクトの種類,[オブジェクト名],[出力形式],[ファイル名],[ファイルを開く]
それぞれの引数に対する主な指定は次の通りです。

引数定数説明
オブジェクトの種類acOutputTable
acOutputQuery
acOutputForm
acOutputReport
acOutputModule
テーブルを対象にする。
クエリを対象にする。
フォームを対象にする。
レポートを対象にする。
モジュールを対象にする。
オブジェクト名
(省略可)
出力の対象となるオブジェクト名を指定する。
出力形式
(省略可)
acFormatHTML
acFormatPDF
acFormatRTF
acFormatTXT
acFormatXLS
acFromatXlsb
acFormatXlsx
HTML形式で出力する。
PDF形式で出力する。
リッチテキスト形式で出力する。
テキスト形式で出力する。
Excel97-2003形式で出力する。
Excelバイナリ形式で出力する。
Excel形式で出力する。
ファイル名
(省略可)
出力するパスとファイル名を指定する。
ファイルを開く
(省略可)
True
False(規定)
出力後にファイルを開く。
出力後にファイルを開かない。
Sub OutputTo_1()
    '※事前にCドライブにTempフォルダを作成します。
    DoCmd.OutputTo acOutputTable, "T_会員名簿", acFormatHTML, "C:\Temp\T_会員名簿.html", True
End Sub

サンプルコードを実行するとブラウザが表示されます。

オブジェクト名を省略するとアクティブオブジェクトを対象とします。
引数を省略したい場合は都度ダイアログボックスが表示され選択します。
※大量のデータを出力する場合はTransferText又はTransferSpreadsheetを使用します。

OutputToダイアログ
出力形式の選択
OutputToダイアログ
出力パス・ファイル名の指定と自動起動の指定。

ApplyFilterメソッド/ShowAllRecordメソッド

ApplyFilterメソッドはアクティブなテーブル・クエリ・フォームに対してフィルタを設定します。ShowAllRecordメソッドはフィルタの設定を解除します。
【書式】
DoCmd.ApplyFilter [フィルタ名],[抽出条件]
DoCmd.ShowAllRecords
ApplyFilter のフィルタ名はカレントデータベースのフィルタ又はクエリ名を、抽出条件はSQL文字列で指定します。ApplyFilterの引数はフィルタ名・抽出条件のいずれかを指定します。

Sub ApplyFilter_ShowAllRecord_1()
    DoCmd.OpenTable "T_会員名簿"
    DoCmd.ApplyFilter , "年齢>=30"
    MsgBox "フィルタで年齢が30以上の名簿を抽出しています。"
    DoCmd.ShowAllRecords
    MsgBox "フィルタを解除して全レコードを表示しています。"
End Sub

FindRecordメソッド/FindNextメソッド

FindRecordメソッドは指定した条件を満たす最初のレコードを検索します。FindNextメソッドはその条件を満たす次のレコードを検索します。
【書式】
DoCmd.FindRecord 検索するデータ,[検索条件],[文字の区別],[検索方向],[表示形式による検索]
           ,[検索対象],[最初から検索]
DoCmd.FindNext

引数定数説明
検索するデータ検索するデータを指定します。
検索条件
(省略可)
acAnywhere
acEntire(規定)
acStart
フィールドの一部分を検索します。
フィールドの全体を検索します。
フィールドの先頭を検索します。
文字の区別
(省略可)
True
false(規定)
大文字小文字を区別します。
大文字小文字を区別しません。
検索方向
(省略可)
acUP
acDown
acSearchAll(規定)
カレントレコードより前のレコードを検索します。
カレントレコードより後のレコードを検索します。
全てのレコードを検索します。
表示形式による検索
(省略可)
True
Fales(規定)
表示されている文字列で検索します。
実際のフィールドの値で検索します。
検索対象
(省略可)
acAll
acCurrent(規定)
全てのカレントフィールドを検索します。
カレントフィールドを検索します。
最初から検索
(省略可)
True(規定)
False
最初のレコードから検索します。
カレントレコードから検索します。
Sub FindRecord_FindNext_1()
    DoCmd.OpenForm "F_会員名簿"
    DoCmd.GoToControl "年齢"
    DoCmd.FindRecord "30"
    MsgBox "年齢が30歳の会員を表示します。"
    DoCmd.FindNext
    MsgBox "次の年齢が30歳の会員を表示します。"
    DoCmd.Close acForm, "F_会員名簿"
End Sub

次はその他の操作(DoCmd)【Access】です。

コメント

タイトルとURLをコピーしました