Access データベースでの参照の問題を解決する方法
https://support.microsoft.com/ja-jp/help/310803/how-to-resolve-reference-issues-in-an-access-database
utility.mda への参照エラーを解消したい
現在のデータベースを表示するのには次のように参照します
データベースを開きます。
Visual Basic エディターを起動するのには alt キーを押しながら f11 キーを押します。
[ツール] メニューの [参照] をクリックします。
Access runtime download
2016 ランタイム
https://www.microsoft.com/ja-jp/download/details.aspx?id=50040
2016 更新プログラム リンク切れ
https://support.microsoft.com/ja-jp/help/4462192/march-5-2019-update-for-access-2016-kb4462192
2013 ランタイム
https://www.microsoft.com/ja-jp/download/details.aspx?id=39358
2013 更新プログラム
https://support.microsoft.com/ja-jp/help/4032252/february-5-2019-update-for-access-2013-kb4032252
2003 ランタイムも用意
accessruntime2003.exe
2003 ランタイムが Windows 10 64bit で インストールされた場所
C:\Program Files (x86)\Microsoft Office\OFFICE11\MSACCESS.EXE
令和対応アップデート
https://support.microsoft.com/ja-jp/help/4478844/office-updates-for-new-japanese-era
Access データベースを開いたときに表示される既定のフォームを設定する
.mdb, .accdb を開く際に Shift キーを押しっぱなしにすると自動実行はキャンセルされる
“AutoExec マクロ” は削除して、フォームの表示設定をした
https://support.office.com/ja-jp/article/access-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E9%96%8B%E3%81%84%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E6%97%A2%E5%AE%9A%E3%81%AE%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B-94961011-392f-4c3b-8dbc-e5d5adbff1df
ファイル > オプション > 現在のデータベース
アプリケーションオプション
フォームの表示: フォームを選択
.mdb から .accdb へ変換
ファイル > 名前を付けて保存 > Accessデータベース
初期動作環境 – 2019-12-24
MS Access 2000 (9.0.2812) / 1992-1999
MS Access 2003
テーブル一覧の取得
クエリー > 新規作成 > デザインビュー OK 閉じる
SQL をクリックして以下を入力
1 2 3 |
SELECT MSysObjects.Type, MSysObjects.Name, MSysObjects.Flags FROM MSysObjects ORDER BY MSysObjects.Type, MSysObjects.Name; |
テーブル操作用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
' データベーステーブル移行用 ' として作成したが使わなくて済んだ ' ' 2020-01-06 ' Option Compare Database Option Explicit Const MdbFrom = "C:\var\from.mdb" Const MdbTo = "C:\var\to.mdb" ' to.mdb の指定テーブルを削除 Sub DeleteTables() Dim Tables Dim tName As String Dim sSQL As String Dim i As Integer On Error GoTo Err Tables = Array("T_example_1", "T_example_2") 'LBound → 配列のもっとも小さいインデックスを返します。 'UBound → 配列のもっとも大きいインデックスを返します。 For i = LBound(Tables) To UBound(Tables) '配列の要素を1つずつ取り出します。 tName = Tables(i) sSQL = "Drop Table [" & MdbTo & "]." & tName & ";" DoCmd.SetWarnings False DoCmd.RunSQL sSQL DoCmd.SetWarnings True Next Exit Sub Err: Debug.Print "On Error table name: " & tName Resume Next End Sub ' from.mdb の指定テーブルを to.mdb へコピー Sub RestoreTables() Dim Tables Dim tName As String Dim sSQL As String Dim i As Integer On Error GoTo Err Tables = Array("T_example_1", "T_example_2") 'LBound → 配列のもっとも小さいインデックスを返します。 'UBound → 配列のもっとも大きいインデックスを返します。 For i = LBound(Tables) To UBound(Tables) '配列の要素を1つずつ取り出します。 tName = Tables(i) sSQL = "SELECT " & tName & ".* INTO " & tName & " IN '" & MdbTo & "' FROM " & tName & " IN '" & MdbFrom & "';" DoCmd.SetWarnings False DoCmd.RunSQL sSQL DoCmd.SetWarnings True Next Exit Sub Err: Debug.Print "On Error table name: " & tName Resume Next End Sub |
自前で対応
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
' https://ameblo.jp/memo-randum/entry-10182486918.html '================================================================================== ' 指定の文字数になるまで先頭を文字で埋めます。(R1) ' ' @Param stTarget 処理対象となる文字列。 ' @Param iLength 文字の長さ。 ' @Param [chOne] 埋める文字。 ' @Return 先頭を指定の文字で iLength の長さまで埋められた文字列。 '================================================================================== Function PadLeft(stTarget, iLength, chOne) On Error GoTo Err Do While (Len(stTarget) < iLength) stTarget = chOne & stTarget Loop PadLeft = Right(stTarget, iLength) Exit Function Err: PadLeft = stTarget End Function ' 西暦年月日から和暦gggeに変換 (R1) Function SDateToGgge(ymd, before, after) Dim yyyymmdd As String Dim f3 If IsNull(ymd) Or StrComp(ymd, "") = 0 Then SDateToGgge = "" Exit Function End If On Error GoTo Err 'MsgBox ymd '1990/11/05 yyyymmdd = Replace(ymd, "/", "") f3 = Split(ymd, "/") If StrComp(yyyymmdd, "20190430") = 1 Then SDateToGgge = before & "令和" & f3(0) - 2018 & after Else SDateToGgge = before & Format(ymd, "ggge") & after End If Exit Function Err: MsgBox "SDateToGgge: 西暦年月日から和暦(ggge)への変換に失敗しました: " & ymd SDateToGgge = ymd End Function ' 西暦年月日から和暦ggge年m月d日に変換 (R1) Function SDateToGggeMD(ymd) Dim yyyymmdd As String Dim f3 If IsNull(ymd) Or StrComp(ymd, "") = 0 Then SDateToGggeMD = "" Exit Function End If On Error GoTo Err 'MsgBox ymd '1990/11/05 yyyymmdd = Replace(ymd, "/", "") f3 = Split(ymd, "/") If StrComp(yyyymmdd, "20190430") = 1 Then SDateToGggeMD = "令和" & f3(0) - 2018 & Format(ymd, "年m月d日") Else SDateToGggeMD = Format(ymd, "ggge年m月d日") End If Exit Function Err: MsgBox "SDateToGggeMD: 西暦年月日から和暦(ggge年m月d日)への変換に失敗しました: " & ymd SDateToGggeMD = ymd End Function ' 西暦年月日から和暦gggに変換 (R1) Function SDateToGgg(ymd) Dim yyyymmdd As String If IsNull(ymd) Or StrComp(ymd, "") = 0 Then SDateToGgg = "" Exit Function End If On Error GoTo Err 'MsgBox ymd '1990/11/05 yyyymmdd = Replace(ymd, "/", "") If StrComp(yyyymmdd, "20190430") = 1 Then SDateToGgg = "令和" Else SDateToGgg = Format(ymd, "ggg") End If Exit Function Err: MsgBox "SDateToGgg: 西暦年月日から和暦(ggg)への変換に失敗しました: " & ymd SDateToGgg = ymd End Function ' 西暦年月日から和暦eに変換 (R1) Function SDateToE(ymd) Dim yyyymmdd As String Dim f3 If IsNull(ymd) Or StrComp(ymd, "") = 0 Then SDateToE = "" Exit Function End If On Error GoTo Err 'MsgBox ymd '1990/11/05 yyyymmdd = Replace(ymd, "/", "") f3 = Split(ymd, "/") If StrComp(yyyymmdd, "20190430") = 1 Then '令和 SDateToE = f3(0) - 2018 Else SDateToE = Format(ymd, "e") '和暦の年の数値部分のみ先頭の0は無し End If Exit Function Err: MsgBox "SDateToE: 西暦年月日から和暦(e)への変換に失敗しました: " & ymd SDateToE = ymd End Function |
Office のバージョンとか
Office2003 : 11
Office2007 : 12
Office2010 : 14
Office2013 : 15
Office2016 : 16
Office2019 : 17
Office365
Microsoft Teams (Skype for Business)
See
https://ameblo.jp/memo-randum/entry-10182486918.html
https://bayashita.com/p/entry/show/69
https://qiita.com/YamasakiKenta/items/7bebbce9a87f97dd83a5
http://round.main.jp/core/runtime.htm
https://bytes.com/topic/access/answers/509519-deleting-table-another-mdb
https://q.hatena.ne.jp/1096619717
https://teratail.com/questions/147862
https://hatenachips.blog.fc2.com/blog-entry-373.html
https://dekiru.net/article/15676/