2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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_初期設定] フォームを閉じ、プロンプトを表示せずに変更を保存します。

 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_名簿]レポートをプレビューで開きます。


 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_更新]アクションクエリを実行しています。

 Private Sub 更新_Click()
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "Q_更新" ’アクションクエリを実行しています
    DoCmd.SetWarnings True
 End Sub

05.Maximize メソッド

【書式】DoCmd.Maximize

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

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

 Private Sub Form_Open(Cancel As Integer)
   DoCmd.Maximize
 End Sub

06.Minimize メソッド

【書式】DoCmd.Maximize

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

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

 Private Sub cmd最小化_Click()
   DoCmd.Minimize
 End Sub

07.Restore メソッド

【書式】DoCmd.Restore

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

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

 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抽出 & "]"""

レコードの並べ替え(基礎編)
■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 が開かれている場合や、排他的に使用できない場合には、エラーが発生します。

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

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?