ここでは下記のようなレコード操作を紹介します。
- テキストファイルのインポート・エクスポート
- テーブル・クエリ・フォームに対してフィルタ設定
- レコードの検索
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
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を使用します。
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
コメント