Posted at

復刻その2 アクセスVBA講座 基礎編


DoCmdオブジェクト(基礎編)


■Contents

01 Closeメソッド 02 OpenForm メソッド 03 OpenReport メソッド

04 OpenQuerメソッド 05 Maximize メソッド 06 Minimize メソッド

07 Restore メソッド 08 Hourglass メソッド 09 SetWarnings メソッド

10 ShowToolbar メソッド 11 GoToControlメソッド 12 GoToRecordメソッド

13 ShowAllRecordsメソッド 14 SelectObject メソッド 15 CopyObject メソッド

16 Rename メソッド 17 DeleteObject メソッド 18 CancelEvent メソッド

19 Requery メソッド 20 RunSQL メソッド 21 SendObject メソッド

22 TransferText メソッド 23 TransferSpreadsheet メソッド 24 Quit メソッド


01.Closeメソッド

【書式】 DoCmd.Close [objecttype, objectname], [save]

  指定した Accessウィンドウを閉じます。引数 objecttype および objectname を指定しないと、objecttype には acDefault (既定値) が使われ、アクティブ ウィンドウが閉じられます。

引数 内容

objecttype acDataAccessPage、acDefault (既定値)、acDiagram、acForm、acMacro、acModule

acQuery、acReport、acServerView、acStoredProcedure、acTable

objectname 引数 objecttype で選択した種類のオブジェクトの名前を文字列式で指定します。

save acSaveNo 保存せずに閉じます。

acSavePrompt (既定値) オブジェクトが保存されていない場合は、オブジェクトを保存するかどうかを確認するダイアログ ボックスが表示されます。

acSaveYes 保存してに閉じます。

 次の例は[F_初期設定] フォームを閉じ、プロンプトを表示せずに変更を保存します。

vb

Private Sub cmd閉じる_Click()

DoCmd.Close acForm, "F_初期設定", acSaveYes

End Sub


02.OpenForm メソッド

【書式】DoCmd.OpenForm formname[, view][, filtername][, wherecondition][, datamode][, windowmode]

 フォームをフォーム ビュー、デザイン ビュー、プレビュー、データシート ビューのいずれかで開きます。フォームを開くときのデータ入力モードやウィンドウモードの設定や、フォームで表示するレコードを制限することができます。

引数 内容

formname フォーム名を文字列式で指定します。

view acDesign、acFormDS、acNormal (既定値:フォームビューで開きます)、acPreview

filtername クエリの名前を文字列式で指定します。

wherecondition SQL の WHERE 句を文字列式で指定します。 WHEREを指定する必要はありません。

datamode acFormAdd、acFormEdit、acFormPropertySettings (既定値)、acFormReadOnly

windowmode acDialog、acHidden、acIcon、acWindowNormal (既定値)

 次の例は[F_名簿登録]をフォーム ビューで開き、フォームには山田 一郎のレコードが表示されます。

 Private Sub cmd開く_Click()

    DoCmd.OpenForm "F_名簿登録"", , ,"氏名 = '山田 一郎'"
End Sub


03.OpenReport メソッド

【書式】DoCmd.OpenReport reportname[, view][, filtername][, wherecondition]

 レポートをデザイン ビューまたはプレビューで開くか、またはレポートの印刷をします。

引数 内容

reportname レポートの名前を文字列式で指定します。

view acViewDesign,acViewNormal(既定値),acViewPreview

filtername クエリの名前を文字列式で指定します。

wherecondition SQL WHERE 句を文字列式で指定します。WHERE を指定する必要はありません。

 次の例は[R_名簿]レポートをプレビューで開きます。

```vb

Private Sub cmd開くClick()

  DoCmd.OpenReport "R
名簿", acViewPreview

End Sub

```


04.OpenQuerメソッド

【書式】 DoCmd.OpenQuery queryname[, view][, datamode]

  選択クエリやクロス集計クエリを、データシート ビュー、デザイン ビュー、印刷プレビューのいずれかで開きます。また、アクションクエリを実行できます。

引数 内容

queryname クエリの名前を文字列式で指定します。

view acViewDesign、acViewNormal (既定値)、acViewPreview

datamode acAdd、acEdit (既定値)、acReadOnly

 次の例は、[Q_更新]アクションクエリを実行しています。

vb

Private Sub 更新_Click()

DoCmd.SetWarnings False

DoCmd.OpenQuery "Q_更新" ’アクションクエリを実行しています

DoCmd.SetWarnings True

End Sub


05.Maximize メソッド

【書式】DoCmd.Maximize

 アクティブ ウィンドウを、Access のウィンドウと同じ大きさに拡大します。

 次の例は、フォームを最大で開きます。

vb

Private Sub Form_Open(Cancel As Integer)

DoCmd.Maximize

End Sub


06.Minimize メソッド

【書式】DoCmd.Maximize

 アクティブ ウィンドウをタイトル バーに変えて、Access ウィンドウの下部に表示します。このメソッドは、オブジェクトを開いたまま、ウィンドウを非表示にするときに使用します。

 次の例は、アクティブ ウィンドウをタイトル バーに変えて、Access ウィンドウの下部に表示します。

vb

Private Sub cmd最小化_Click()

  DoCmd.Minimize

End Sub


07.Restore メソッド

【書式】DoCmd.Restore

 最大化されたウィンドウや最小化されたウィンドウを元のサイズに戻します。オブジェクトが最小化されている場合は、SelectObject メソッドを使って選択してから、このメソッド を使って元のサイズに戻します。

 次の例は、フォームを元のサイズで表示しています。

vb

Private Sub Form_Open(Cancel As Integer)

DoCmd.Restore

End Sub


08.Hourglass メソッド

【書式】DoCmd.Hourglass hourglasson

 マウスポインタを砂時計の形に変えるます。このメソッドを使用すると、プログラムが実行中であることを視覚的に示すことができます。プログラムの実行に時間がかかる場合に使用すると便利です。

引数 内容

hourglasson 砂時計ポインタ を表示するには、True を使います。

 次の例は、マウスポインタを砂時計の形に変えて、処理を実行し、処理が終了した後マウスポインタを元の形に戻しています。

DoCmd.Hourglass True

' 時間のかかる処理

DoCmd.Hourglass False


09.SetWarnings メソッド

【書式】DoCmd.SetWarnings warningson

 システム メッセージのオン/オフを切り替えます。Visual Basic でシステム メッセージの表示をオフにした後は、オンに戻しておく必要があります。

引数 内容

warningson システムメッセージの表示をオンにするには True を使い、オフにするには False を使います。

 次の例は、システム メッセージをオフにして、[T_入力チェック]テーブルの全レコードを削除しています。

Private Sub cmd削除Click()

DoCmd.SetWarnings False

DoCmd.RunSQL "DELETE * FROM T
入力チェック"

DoCmd.SetWarnings True

End Sub


10.ShowToolbar メソッド

【書式】DoCmd.ShowToolbar toolbarname[, show]

 Access の組み込みツールバーまたはカスタムツールバーの表示と非表示を切り替えます。

引数 内容

toolbarname ツールバーの名前を文字列式で指定します。

show acToolbarNo, acToolbarWhereApprop, acToolbarYes (既定値)

 次の例は、レポートを開くときに[印刷]ツールバーを表示し、レポートを閉じるとき、このツールバーを非表示しています。

Private Sub Report_Open(Cancel As Integer)

DoCmd.ShowToolbar "印刷", acToolbarYes

End Sub

Private Sub Report_Close()

DoCmd.ShowToolbar "印刷", acToolbarNo

End Sub


11.GoToControl メソッド

【書式】DoCmd.GoToControl controlname

 指定したフィールドまたはコントロールにフォーカスを移動します。引数 controlname にはコントロール名だけを指定します。

引数 内容

controlname アクティブ フォームまたはデータシートのコントロールの名前を文字列式で指定します。

 次の例は、[cmd開く]コマンドボタンにフォーカスを移動しています。

Private Sub テキスト2_LostFocus()

DoCmd.GoToControl "cmd開く"

End Sub

※このアクションは「 Me.cmd開く.SetFocus」と同じ動作をします。


12.GoToRecordメソッド

【書式】DoCmd.GoToRecord [objecttype, objectname][, record][, offset]

  開いているテーブル、フォーム、クエリの結果セットで、指定したレコードをカレントレコードにします。

引数 内容

objecttype acActiveDataObject (既定値)、acDataForm、acDataQuery、acDataTable

objectname 引数 objecttype で選択した種類のオブジェクトの名前を文字列式で指定します。

record acFirst、acGoTo、acLast、acNewRec、acNext (既定値)、acPrevious

offset 引数 record にacNextまたは acPreviousを指定した場合は、前方または後方に移動するレコード数、引数 record にacGoToを指定した場合は移動する先のレコードを、数式で指定します。

 次の例は、[cmd次]ボタンをクリックすると、次のレコードをカレントレコードにしています。

Private Sub cmd次Click()

On Error GoTo Err
cmd次_Click

DoCmd.GoToRecord , , acNext

Exit_cmd次_Click:

Exit Sub

Err_cmd次Click:

MsgBox Err.Description

Resume Exit
cmd次_Click

End Sub


13.ShowAllRecords メソッド

【書式】DoCmd.ShowAllRecords

 テーブル、クエリの結果セット、フォームですべてのレコードが表示されます。このメソッドによってフォームやサブフォームのレコードの再クエリが行われ、結果にはレコードの変更や新しいレコードが反映されます。


14.SelectObject メソッド

【書式】DoCmd.SelectObject objecttype[, objectname,InDatabaseWindow]

 オブジェクトを選択します。フォーカスを持つことのできるオブジェクトに対してのみ実行できます。このメソッドを実行すると、指定したオブジェクトにフォーカスが移動し、オブジェクトが非表示になっている場合はオブジェクトが表示されます。次の例のように、これから操作するオブジェクトを選択するときに使うこともあります。

引数 内容

objecttype acDataAccessPage、acDiagram、acForm、acMacro、acModule、acQuery

acReport、acServerView、acStoredProcedure、acTable

objectname 引数 objecttype で選択した種類のオブジェクトの名前を文字列式で指定します。

InDatabaseWindow 省略可能です。データベース ウィンドウでオブジェクトを選択するには、True を使います。既に開いているオブジェクトを選択するには、False を使います。この引数を指定しないと、False (既定値) が使われます

 次の例は[F_印刷開始]フォームを選択して、このフォームを閉じています。

Private Sub コマンド1_Click()

DoCmd.Close acReport, Reportname

DoCmd.SelectObject acForm, "F_印刷開始" ’-----------------?

DoCmd.Close               ’?で選択したフォームを閉じます

End Sub


15.CopyObject メソッド

【書式】DoCmd.CopyObject [destinationdatabase][, newname][, sourceobjecttype][, sourceobjectname]

 指定したオブジェクトを別のデータベースにコピーします。また同じデータベース に新しい名前でコピーします。このメソッドでは、引数 destinationdatabase と引数 newname のどちらか一方または両方を指定する必要があります。これらの引数を指定しないと、sourceobjecttype にはacDefault (既定値) が使われ、データベースウィンドウで選択されたオブジェクトがコピーされます。データベースウィンドウでオブジェクトを選択するには、SelectObjectメソッドを使うことができます。

引数 内容

destinationdatabase コピーする先のデータベースを示すパスおよびファイル名を文字列式で指定します。カレントデータベースを選択する場合は、この引数を指定しません。

newname コピーするオブジェクトの新しい名前を文字列式で指定します。他のデータベースへ同じ名前でコピーする場合は、この引数を指定しません。

sourceobjecttype acDataAccessPage、acDefault (既定値)、acDiagram、acForm、acMacro

acModule、acQuery、acReport、acServerView、acStoredProcedure、acTable

sourceobjectname 引数 sourceobjecttype で選択した種類のオブジェクトの名前を文字列式で指定します。

 次の例は[T_学科]テーブルを同じデータベース内に[T_学科Backup]という名前でコピーします。

Private Sub cmdcopy_Click()

   DoCmd.CopyObject , "T_学科Backup", acTable, "T_学科"

End Sub


16.Rename メソッド

【書式】DoCmd.Rename newname[, objecttype, oldname]

 選択されている オブジェクトの名前を変更します。。引数 objecttype および oldname を指定しないと、objecttype に定数 acDefault (既定値) が使われ、データベースウィンドウで選択されたオブジェクトの名前が変更されます。データシートウィンドウでオブジェクトを選択するには、引数 In Database Window に True を設定した SelectObject メソッドを使うことができます。

引数 内容

newname 名前を変更するオブジェクトの新しい名前を、文字列式で指定します。

objecttype acDataAccessPage、acDefault (既定値)、acDiagram、acForm、acMacro、acModule

acQuery、acReport、acServerView、acStoredProcedure、acTable

oldname 引数 objecttype で指定した種類のオブジェクトの有効な名前を、文字列式で指定します。

 次の例は、[名簿]テーブルの名前を[T_名簿]に変更しています。

DoCmd.Rename "T_名簿", acTable, "名簿"


17.DeleteObject メソッド

【書式】DoCmd.DeleteObject [objecttype][, objectname]

 指定したオブジェクトを削除します。引数 objecttype および objectname を指定しないと、objecttype には定数 acDefault (既定値) が使われ、データベース ウィンドウで選択されたオブジェクトが削除されます。データベースウィンドウでオブジェクトを選択するには、引数 In Database Window に Yes True)を設定した SelectObject メソッドを使うことができます.。

引数 内容

objecttype acDataAccessPage、acDefault (既定値)、acDiagram、acForm、acMacro、acModule

acQuery、acReport、acServerView、acStoredProcdure、acTable

objectname 引数 objecttype で選択した種類のオブジェクトの名前を文字列式で指定します。

 次の例は、[T_RABEL]テーブルを一度削除して再度作成しています。

Private Sub コマンド7_Click()

Dim MYDB As DAO.Database

Dim TableNew As TableDef

Set MYDB = CurrentDb

'テーブル削除

On Error Resume Next

DoCmd.DeleteObject acTable, "T_RABEL"

On Error GoTo 0

'テーブル作成

Set TableNew = MYDB.CreateTableDef("T_RABEL")

With TableNew

.Fields.Append .CreateField("部屋1", dbText, 4)

.Fields.Append .CreateField("氏名1", dbText, 50)

.Fields.Append .CreateField("部屋2", dbText, 4)

.Fields.Append .CreateField("氏名2", dbText, 50)

.Fields.Append .CreateField("部屋3", dbText, 4)

.Fields.Append .CreateField("氏名3", dbText, 50)

End With

MYDB.TableDefs.Append TableNew

Exit_コマンド106_Click:

Exit Sub

Err_コマンド106_Click:

MsgBox Err.Description

Resume Exit_コマンド106_Click

End Sub


18.CancelEvent メソッド

【書式】DoCmd.CancelEvent

 イベントをキャンセルします。CancelEvent メソッドは、イベントによって実行されたときにのみ有効です。Visual Basic でキャンセルできるすべてのイベントには、引数 Cancel が指定されています。この引数を CancelEvent イベントの代わりに使って、イベントをキャンセルできます。

 次の例では、ともにある条件が満たされたとき、フォームは開きません。

Private Sub cmd開く_DblClick(Cancel As Integer)

  IF 条件 Then

  DoCmd.CancelEvent

End IF

’通常処理

  

End Sub

Private Sub cmd開く_DblClick(Cancel As Integer)

  IF 条件 Then

  Cancel = True

End IF

’通常処理

  

End Sub

※FormのCloseイベントは次のような形です。したがって、このイベントはキャンセルできません。

Private Sub Form_Close()

End Sub


19.Requery メソッド

【書式】DoCmd.Requery [controlname]

 アクティブ オブジェクトの指定したコントロールのソースを再クエリし、そのコントロールのデータを更新します。コントロールを指定しない場合は、オブジェクト自体のソースを再クエリします。引数 controlname には、コントロール名だけを指定します。

引数 内容

controlname アクティブ オブジェクトのコントロール名を文字列式で指定します。

 次の例では、[SF_実習施設]サブフォームのレコードソースであるクエリの抽出条件を[cbo区分]コンボボックスの値に設定しているとします。[cbo区分]コンボボックスの値が変わったとき、[SF_実習施設]サブフォームに表示されるレコードも変化します。

Private Sub cbo区分AfterUpdate()

Me.SF
実習施設.Requery

End Sub


20.RunSQL メソッド

【書式】DoCmd.RunSQL sqlstatement[, usetransaction]

 アクションクエリを、そのアクションに対応する SQL ステートメントを使用して実行します。

引数 内容

sqlstatement アクションクエリのための SQLステートメントを文字列式で指定します。

usetransaction このクエリをトランザクションに含めるには、True を使います。トランザクションを使わない場合は、False を使います。この引数を指定しないと、True(既定値) が使われます。

 次の例は、システム メッセージをオフにして、[T_入力チェック]テーブルの全レコードを削除しています。

  DoCmd.SetWarnings False

DoCmd.RunSQL "DELETE * FROM T_入力チェック"

DoCmd.SetWarnings True


21.SendObject メソッド

【書式】DoCmd.SendObject [objecttype][, objectname][, outputformat][, to][, cc][, bcc][, subject]

     [, messagetext][, editmessage]

 指定した Access のデータシート、フォーム、レポート、モジュール、データ アクセスページをメール メッセージに添付して転送します。

引数 内容

objecttype acSendDataAccessPage、acSendForm、acSendModule、acSendNoObject (既定値)

acSendQuery、acSendReport、acSendTable

objectname 引数 objecttype で選択した種類のオブジェクトの名前を文字列式で指定します。メール メッセージにアクティブ オブジェクトを含める場合は、引数 objecttype でオブジェクトの種類を指定し、この引数は指定しません。引数 objecttype および objectname の両方を指定しない場合は、引数 objecttype に定数 acSendNoObject (既定値) が使われ、データベース オブジェクトを含まずに電子メールのアプリケーションにメッセージが送られます。

outputformat acFormatDAP、acFormatHTML、acFormatRTF、acFormatTXT、acFormatXLS

この引数を指定しないと、出力形式の入力を促すプロンプトが表示されます。

to メール メッセージの宛先行に表示する受信者の一覧を文字列式で指定します。

この引数または引数cc および bcc に指定する宛先の名前は、セミコロン (;) で区切ります。宛先名がメール アプリケーションで識別されない場合、メッセージは送信されず、エラーが発生します。

この引数を指定しないと、宛先の入力を促すプロンプトが表示されます。

cc メール メッセージの Cc 行に表示する受信者の一覧を文字列式で指定します。この引数を指定しないと、メールメッセージの Cc 行は空白です。

bcc メール メッセージの Bcc 行に表示する受信者の一覧を文字列式で指定します。この引数を指定しないと、メールメッセージの Bcc 行は空白です。

subject メール メッセージの件名行に表示するテキストを文字列式で指定します。この引数を指定しないと、メール メッセージの件名行は空白です。

messagetext メール メッセージの本文のオブジェクトの後に含めるテキストを文字列式で指定します。この引数を指定しないと、メール メッセージの本文に含まれるのはオブジェクトのみになります。

editmessage メッセージが読み込まれた直後に電子メールのアプリケーションを開き、メッセージを編集できるようにするには、True を使います。メッセージを編集せずに送信するには、False を使います。この引数を指定しないと、True (既定値) が使われます。

 次の例はOutlook Express経由でメールを送信するものです。

 Private Sub コマンド130_Click()

Dim DB As Database

Dim RS As Recordset

Dim 件名 As String

Dim 本文 As String

Set DB = CurrentDb

Set RS = DB.OpenRecordset("採点者名簿")

Do Until RS.EOF

'件名の作成

件名 = Me.コンボ3 & "(" & RS!教科 & ")" & "採点依頼"

'本文の作成

本文 = RS!氏名 & " 様" & vbCrLf _

& Kenmei & vbCrLf & vbCrLf & " 受け渡日: " & RS!受け渡日 & " (時間) " & RS!時間1 _

& "~" & RS!時間2 & vbCrLf _

& " 締め切日: " & RS!締め切日 & " (時間) " & RS!時間3 & "まで" & vbCrLf & vbCrLf _

& "(備考)" & Me.備考 & vbCrLf & vbCrLf _

& " 可能かどうか下の[]に番号を入力してご返信下さい。" & vbCrLf & vbCrLf _

& " (担当) 田中 (Tel 092-47*-****)" & vbCrLf _

& "《送信日時》 " & Date & " " & Hour(Time) & "時" & Minute(Time) & "分" & vbCrLf _

& " --------------------------------------------" & vbCrLf _

& " 返事(1.出来る  2.出来ない)・・・[]" & vbCrLf _

& " 備考欄[]"

'メールの送信

DoCmd.SendObject , , acFormatTXT, RS!PCmailad, "yfukuoka@msc.biglobe.ne.jp", , 件名, _

本文, Me.チェック133

RS.MoveNext

Loop

RS.Close: Set RS = Nothing

End Sub


22.TransferText メソッド

【書式】DoCmd.TransferText [transfertype][, specificationname], tablename, filename

     [, hasfieldnames]

 カレントデータベース とテキストファイルとの間でテキストをインポートまたはエクスポートします。

引数 内容

transfertype acExportDelin 可変長テキストの出力

acExportFixed 固定長キストの出力

acExportHTML HTML形式テキストの出力

acExportMerge 差込データの出力

acImportDelim 可変長テキストのインポート(規定値)

acImportFixed 固定長テキストのインポート

acImportHTML HTML形式テキストのインポート

acLinkDelim 区切り記号付リンク

acLinkFixed 固定長リンク

acLinkHTML HTML形式リンク

specificationname カレントデータベースに格納したインポートまたはエクスポート定義の名前を文字列式で指定します。固定長のテキスト ファイルに対しては、引数を指定するかまたは schema.ini ファイルを使用する必要があります。schema.ini ファイルはインポート、リンク、またはエクスポートされるテキスト ファイルと同じフォルダに格納します。スキーマ ファイルを作成するには、ファイル作成のためのインポート/エクスポート ウィザードを使います。区切り記号付きテキストファイルに対しては、この引数を指定しないで、既定のインポート/エクスポート定義を選択できます。

tablename テキスト データとのインポート、エクスポートを行う Access テーブルの名前、または結果をテキスト ファイルにエクスポートする Access クエリの名前を、文字列式で指定します。

filename インポート、エクスポートを行うテキストファイルの、パスを含めた完全な名前を文字列式で指定します。

hasfieldnames インポート、エクスポート時に、テキスト ファイルの最初の行をフィールド名として使うには、Trueを使います。最初の行をデータとして扱うには、False(既定値) を使います。

 次の例は、[T_名簿]テーブルをcsv形式で保存しています。

DoCmd.TransferText acExportDelim, , "T_名簿",  "D:\Backup\Honkasei.csv", True

 次の例は、csvファイルのデータを、[T_高校コード]テーブルにインポートしています。

DoCmd.TransferText acImportDelim, , "T_高校コード",  "D:\Backup\koukou.csv", True

※csvファイルを利用してデータベースのテーブルのバックアップファイルを作成しておくと、データベースが壊れた場合、これを利用して容易に復旧することができます。また、頻繁にデータベースを変更する場合、レコードの入れ替えも自動的に実行できるようにすることも可能です。詳しくは、こちらのサンプルデータベースを参考にして下さい。


23.TransferSpreadsheet メソッド

【書式】DoCmd.TransferSpreadsheet [transfertype][, spreadsheettype], tablename,

     filename[, hasfieldnames][, range]

 カレント データベース とワークシート ファイルとの間でデータをインポートまたはエクスポートします。Excel のワークシートのデータを Access のカレント データベースにリンクすることもできます。

引数 内容

transfertype acImport (既定値)、acExport、acLink

spreadsheettype 0 acSpreadsheetTypeExcel3 (既定値)

6 acSpreadsheetTypeExcel4

5 acSpreadsheetTypeExcel5

5 acSpreadsheetTypeExcel7

8 acSpreadsheetTypeExcel8

8 acSpreadsheetTypeExcel9

tablename ワークシートのデータとのインポート、エクスポートを行う Access テーブルの名前、または結果をワークシートにエクスポートする Access 選択クエリの名前を、文字列式で指定します。

filename インポート、エクスポートするワークシートのファイル名およびパスを文字列式で指定します。

hasfieldnames インポート時にワークシートの最初の行をフィールド名として使うには、True を使い、最初の行をデータとして扱うには、False を使います。Falseが 既定値です。Access テーブルまたは選択クエリのデータをワークシートにエクスポートする場合は、常にフィールド名がワークシートの最初の行に挿入されます。

range ワークシートのセルの範囲または範囲の名前を文字列式で指定します。この引数は、インポートのみに適用されます。ワークシート全体をインポートする場合や、ワークシートにエクスポートする場合は、この引数を指定しません。

 次の例は[Q_担任別名簿]選択クエリの結果セットをエクセル形式で出力しています。

Private Sub Option2_Click()

DoCmd.SetWarnings False

DoCmd.TransferSpreadsheet acExport, 8, "Q_担任別名簿", "D:\クラス別名簿原本.xls", True, ""

DoCmd.SetWarnings True

End Sub

次の例は[要項請求.xls]の特定のセル範囲選択("作業")を元にリンクテーブルを作成しています。

DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel9, _

"T_要項請求", "D:\出力\要項請求.xls", True, "作業"


24.Quit メソッド (DoCmd オブジェクト)

【書式】DoCmd.Quit [options]

 Microsoft Access を終了します。

引数 内容

options acQuitPrompt, acQuitSaveAll (既定値), acQuitSaveNone

 次の例はAccess を終了します。

Private Sub コマンド162_Click()

DoCmd.Quit


End Sub

これは、つぎのコードと同じ動作をします。

Private Sub コマンド34_Click()

Application.Quit

End Sub

25.PrintOut メソッド (DoCmd オブジェクト)

書式】DoCmd.PrintOut(PrintRange, PageFrom, PageTo, PrintQuality, Copies, CollateCopies)

引数 説明

PrintRange 省略可能です。使用できる定数はacPages、acPrintAll (既定値)acSelection のいずれかです。

PageFrom

省略可能です。アクティブ フォーム またはアクティブ データシートの有効なページ番号を、数式で指定します。この引数は、引数 printrange に acPages を指定した場合は省略できません。

PageTo 省略可能です。アクティブ フォームまたはアクティブ データシートの有効なページ番号を、数式で指定します。この引数は、引数 printrange に acPages を指定した場合は省略できません。

PrintQuality

省略可能です。使用できる定数は、acDraft 、acHigh (既定値)、acLowacMedium のいずれかです。

Copies 省略可能です。数式を指定します。この引数を指定しないと、1 (既定値) が使われます。

CollateCopies

省略可能です。部単位で印刷するには True (- 1) を使い、部単位で印刷しない場合は False (0) を使います。この引数を指定しないと、True (既定値) が使われます。

使用例はこちらを参照してください。

http://www.geocities.jp/cbc_vbnet/kisuhen/filter.html


レコードの抽出(基礎編)

■Contents

01 Filter

02 FilterOn

03 抽出条件の表記方法

04 使用例

  ・抽出条件と完全に一致するデータのみを表示

  ・抽出条件以外データのみを表示

  ・設定値以上/以下のデータのみを表示

  ・指定範囲内のデータを表示

  ・算術演算子を使用して抽出条件を設定

  ・論理演算子を使用して抽出条件を設定

  ・フィルタをかけてNull値のデータを抽出 

  ・あいまいな抽出条件を設定( Like 演算子を使用 ) 

  ・あいまいな抽出条件を設定( ワイルドカード文字を使用 )

  ・リストを使用して抽出条件を設定


01.Filter

【書式】Me.Filter="対象フィールド名=抽出条件" (抽出条件:フィルタの抽出条件を設定)

 フィルタをフォーム、レポート、クエリ、テーブルに適用したときに表示されるレコードのサブセットを示します。Filterプロパティを使用すると、フィルタを保存し、後でそれを適用することができます。設定値は、文字列式で、WHERE 句から WHERE を省いたものです。


02.FilterOn

 フォームまたはレポートのFilter プロパティを適用するかどうかを示します。適用するには、FilterOnプロパティに True (-1) を設定し、フィルタを削除するには、FilterOnプロパティに False (0) を設定します。


03.抽出条件の表記方法


  • テキスト型フィールドを使ってレコードを抽出する場合は,抽出する値をシングルクォーテーション(’)で囲みます。

  • 日付型フィールドを使ってレコードを抽出する場合は,抽出する値をシャープ記号(#)で囲みます。

  • 数値型フィールドを使ってレコードを抽出する場合は,そのまま記述します。

  • 比較演算子/論理演算子/算術演算子を使って抽出条件を記述します。論理演算子を利用してフィルタを設定する場合,1文で記述すると(”)ダブルクォートの設定がわかりづらくなるので,別々に条件を設定して,文字列を連結した方がよいでしょう。


04.使用例

抽出条件と完全に一致するデータのみを表示(「 = 」を使用 )

「氏名」フィールドがテキストボックス「Txt氏名」の値と完全に一致するデータを抽出

    Me.Filter = "氏名 = '" & Txt氏名 & "'"

抽出条件以外データのみを表示 (「 <> 」を使用 )

「氏名」フィールドがテキストボックス「Txt氏名」の値と異なるデータを抽出

    Me.Filter = "氏名 <> '" & Txt氏名 & "'"

設定値以上/以下のデータのみを表示 (「 >= 」「 <= 」を使用 )

「得点」フィールドがテキストボックス「Txt得点」の値以上のデータを抽出

    Me.Filter = "得点 >= " & Txt得点

「得点」フィールドがテキストボックス「Txt得点」の値以下のデータを抽出

    Me.Filter = "得点 <= " & Txt得点

指定範囲内のデータを表示 (「 Between  And 」を使用 )

「得点」フィールドが2つのテキストボックス「Txt得点1」と「Txt得点2」の値の間のデータを抽出

    Me.Filter = "得点 Between " & Txt得点1 & " And " & Txt得点2

算術演算子を使用して抽出条件を設定

「入荷日」フィールドの値-1がテキストボックス「Txt入荷日」の値より小さいデータを抽出

    Me.Filter = "入荷日-1 < # " & Txt入荷日 & "#"

論理演算子を使用して抽出条件を設定 ( And,Eqv,Imp,Not,Or,Xor を使用 )

「価格」フィールドがテキストボックス「Txt価格」の値より小さく,

「入荷日」フィールドがテキストボックス「Txt入荷日」の値より小さいデータを抽出

    Dim strFilter1 As String

Dim strFilter2 As String

    strFilter1 = "価格 < " & Txt入荷日

    strFilter2 = "入荷日 < # " & Txt入荷日 & "#"

    Me.Filter = strFilter1 & " AND " & strFilter2

フィルタをかけてNull値のデータを抽出 ( IsNuL を使用 )

「価格」フィールドがNull値のデータを抽出

   Me.Filter = "IsNuLL(価格)"

あいまいな抽出条件を設定( Like 演算子を使用 )

 フィルタをかけて,対象フィールドのデータの一部に抽出条件が含まれるデータを表示します。データの一部に抽出条件が含まれる場合には,Like演算子とワイルドカード文字 ””を使用して抽出条件を設定します。ワイルドカード文字 ””は,任意の文字列に対応します。データの値が「Aを含む」を表すにはLike"A"のように記述します。下の例では,Like演算子に続く文字列の設定に,ダブルクォート(”)を2つ続けて記述しています。文字列中でダブルクォートを2つ続けて記述することで,1つのダブルクォートであることを認識します。

「商品名」フィールドの一部がテキストボックス「Txt商品名」の値を含むデータを抽出

   Me.Filter = "商品名 Like """ & Txt商品名 & """"

あいまいな抽出条件を設定( ワイルドカード文字を使用 )

 ワイルドカード文字”#”と”?”を使用してフィルタを設定します。ワイルドカード文字”?”は任意の1文字に対応し,ワイルドカード文字”#”は任意の1数字に対応します。

リストを使用して抽出条件を設定

 フィルタをかけて,対象フィールドからリストに該当するデータを抽出します。

?リストのいずれかに該当するデータを抽出するには,Like演算子と[角カッコ]を併用し、[ ]の中にリストに設定する

 文字を並べます。ここにはハイフン(-)を使用して範囲指定することも可能です。

?エクスクラメーションマーク(!)と組み合わせることで,リストのいずれにも該当しないデータを抽出することもでき

 ます。

「商品コード」フィールドの一部がテキストボックス「Txt抽出」の1文字を含むデータを抽出

Me.Filter = "商品コード Like ""*[" & Txt抽出 & "]"""

「商品コード」フィールドがテキストボックス「Txt抽出」のどの1文字をも含んでいないデータを抽出

Me.Filter = "商品コード Like ""*[!" & Txt抽出 & "]"""

http://www.geocities.jp/cbc_vbnet/kisuhen/sort.html

レコードの並べ替え(基礎編)

■Contents

01 OrderBy

02 OrderByOn

01.OrderBy

? フォーム、クエリ、レポート、テーブルでのレコードの並べ替え方法を示します。設定値は、並べ替の基準とするフ

 ィールド名を示す文字列式です。

? 複数のフィールド名を使用する場合は、それぞれの名前をコンマ (,) で区切ります。

? 特に指定しない限り、昇順で並べ替えられますが、指定するときは,文字列式の最後に「ASC」と入力します。

 レコードを降順で並べ替えるには、文字列式の最後に「DESC」と入力します。

  たとえば、得意先コードで降順に並べ替えるには

             Me.OrderBy = "得意先コード DESC"

 のように設定します。

? OrderBy プロパティに指定した並べ替え順序を適用するには、OrderByOn プロパティに [Yes] を設定します。

02.OrderByOn

 OrderByOn プロパティは、オブジェクトの OrderBy プロパティの設定を適用するかどうかを示します。設定値は次のとおりです。

設定値 Visual Basic 内容

Yes True (-1) OrderByプロパティを適用します。

No False (0) OrderByプロパティを適用しません。(既定値)

【使用例】

Me.OrderBy = "学年 ASC, かな氏名 ASC"

Me.OrderByOn = True

http://www.geocities.jp/cbc_vbnet/kisuhen/statement.html


HOME > VBA 基礎 > このページステートメント(基礎編)


■Contents

01 Beepステートメント 02 Call ステートメント 03 ChDir ステートメント

04 ChDrive ステートメント 05 Const ステートメント 06 Dim ステートメント

07 End ステートメント 08 Erase ステートメント 09 Exit ステートメント

10 FileCopy ステートメント 11 Function ステートメント 12 GoSub...Return ステートメント

13 GoTo ステートメント 14 Kill ステートメント 15 Midステートメント

16 MkDir ステートメント 17 Nameステートメント 18 Option Base ステートメント

19 Option Compare ステートメント 20 Option Explicit ステートメント 21 Private ステートメント

22 Randomize ステートメント 23 ReDimステートメント 24 Rem ステートメント

25 RmDir ステートメント 26 SendKeys ステートメント 27 Set ステートメント

28 Sub ステートメン 29 With ステートメント 30 Type ステートメント


19.Option Compare ステートメント

文字列データの既定の比較方法を設定します。モジュール レベルで使います。

【書式】Option Compare {Binary | Text | Database}

[【解説】

? Option Compare ステートメントを使う場合は、モジュールの宣言セクションに記述します。

? モジュール内での文字列の比較方法 (Binary モード、Text モード、または Database モード) を指定するものです。Option Compare ステートメントが記述されていないモジュールでは、既定の文字列比較方法である Binary モードが使われます。

? Binary モードでは、文字列比較の並べ替え順序は、バイナリ文字コードのコード順によって行われます。Visual Basicでは 、文字コードは Unicode で表現されるので、結果は Unicode のコード順によって決まります。Text モードでは、文字列比較は,50 音順で、大文字と小文字、文字幅、カタカナとひらがなを区別しない並べ替え順になります。Database モードの文字列比較の並べ替え順序は、データベースの文字列比較に適用される国別の ID によって決まります。

http://www.geocities.jp/cbc_vbnet/kisuhen/mesodo.html

HOME >VBA 基礎 > メソッド


■Contents

01 CompactDatabase メソッド

02 Copyメソッド


01.CompactDatabase メソッド

【書式】DBEngine.CompactDatabase olddb,newdb

 閉じているデータベースのコピーと最適化を行います。

指定項目 説明

olddb 閉じている既存のデータベース名を示す文字列型 (String) の変数を指定します。"C:\db1.mdb" のようにフル パス名で指定できます。ファイル名に拡張子が付いている場合、拡張子も指定してください。

newdb 作成中の最適化したデータベースのファイル名 (およびパス) を示す文字列型 の変数を指定します。

解説

 データベースのデータ変更を繰り返すと、そのデータベース ファイルに断片化が発生し、必要以上にディスク領域を使用する可能性があります。定期的に CompactDatabase メソッドを使用してデータベース ファイルを最適化してください。通常、最適化を実行すると、データベースのサイズは小さくなり、速度も向上します。

データベースを最適化する場合、必ず引数 olddb を閉じる必要があります。マルチユーザー環境では、データベースを最適化している間、ほかのユーザーが引数 olddb を開くことはできません。引数 olddb が開かれている場合や、排他的に使用できない場合には、エラーが発生します。

【サンプルコード】はこちらを参照してください。