あおいです。
今回は、Accessテーブルを新規で作成するAccessファイルに、簡単にコピーする方法をお伝えします。
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 |
Option Compare Database Option Explicit Sub CreateDB_And_CopyTable Const FullName = "作成先フルパス.accdb" Dim CurFullName As String CurFullName = CurrentProject.FullName 'Accessファイルの作成 CreateDatabase FullName, dbLangJapanese 'パスワードを設定したい場合 With OpenDatabase(FullName, True, False) .NewPassword "", "Password" End With 'テーブルのコピー With OpenDatabase(FullName, True, False, "MS Access;PWD=Password;DATABASE=" & FullName & ";") .Execute "SELECT * INTO [TableName] FROM [TableName] IN """ & CurFullName & """" '主キーを設定したい場合(INTOでコピーしても主キーは残らない) .Execute "ALTER TABLE [TableName] ADD CONSTRAINT PrimaryKey PRIMARY KEY (項目名,項目名)" End With End Sub |
TableName と Password、項目名、作成先フルパス は任意に変更してください。
CreateDatabaseでAccessファイルを作成することができ、OpenDatabaseの4つ目の引数(Connect)にパスワードを指定することでパスワードで保護されたAccessファイルも開くことができます。
最後に、SELECT INTOクエリでデーブルを貼り付けて、主キーを設定すれば完成です。
これらを応用すると、複数の業者に対して、別々のAccessファイルを作成し、それぞれ別のパスワードを設定することで少しだけセキュリティを高めることができます。
また、それぞれのAccessファイルのテーブルを大元からリンクテーブルで繋いておけば常にデータを反映することができるのでだいぶ楽になるでしょう。
リンクテーブルもVBAを使えば一括で繋げたり、別ファイルに繋げ直すこともできるので頑張ってみてください。
---コメント---