質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

5559閲覧

Access(.accdb)にて.xlsxの特定の列のみインポート

Yoshikun_0945

総合スコア224

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2019/03/19 07:05

編集2019/03/19 07:25

###Access【.accdb拡張子ファイル】にて.xlsxファイルの特定の列のみインポート
Accessデータベース(.accdb)に存在する既存のテーブルに.xlsxファイルの特定の列のデータのみをインポートする形で、下記のコードを記述しましたが、3行ともに赤文字のエラーとなってしまいました。何がいけないんでしょうか?
Officeは2010を使用しています。

Private Sub マスタ更新_Click() INSERT INTO T99_社員マスタ(社員番号,社員名,退社日付,入室ID) SELECT 社員番号,社員名,退社日付,入室ID From [社員マスタ$] In "C:\Users\Documents\01-1 社員情報管理\99 社員マスタ.xlsx" "Excel 8.0;" End Sub

データファイル:99 社員マスタ.xlsx
シート名:社員マスタ
インポート先のテーブル名:T99_社員マスタ(新規作成ではなく、既存のテーブルに上書きです。)
インポートする列名:社員番号、社員名、退社日付、入室IDです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

VBAにSQLを直接記述しても駄目です。Executeメソッドで実行する必要があります。

VBA

1Private Sub マスタ更新_Click() 2Dim wSQL As String 3 4wSQL = "" 5wSQL = wSQL & VbCrLf & "INSERT INTO T99_社員マスタ(社員番号,社員名,退社日付,入室ID)" 6wSQL = wSQL & VbCrLf & "SELECT 社員番号,社員名,退社日付,入室ID From [社員マスタ$]" 7wSQL = wSQL & VbCrLf & "In 'C:\Users\Documents\01-1 社員情報管理\99 社員マスタ.xlsx' 'Excel 8.0'" 8 9CurrentDb.Execute wSQL 10End Sub

T99_社員マスタ(新規作成ではなく、既存のテーブルに上書きです。)

上書きってupdateですか?

投稿2019/03/19 07:51

編集2019/03/19 07:53
sazi

総合スコア25188

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yoshikun_0945

2019/03/19 08:07

上記のコードを実行してみたところ、 実行時エラー'3343' データベースの形式'C:\Users\Documents\01-1 社員情報管理\99 社員マスタ.xlsx'を認識できません。というエラーメッセージが出てしまいました。 どこを修正すればよろしいでしょうか? それとも、元ファイル(社員マスタ.xlsx)に問題があるのでしょうか?
sazi

2019/03/19 08:09 編集

動作するSQLを作成して、SQL部分を置き換えてください。
sazi

2019/03/19 08:11 編集

若しくはそのSQLでクエリーを作成して、そのSQLを実行する。(DoCmd.RunSQL)
Yoshikun_0945

2019/03/19 08:11

どういう意味でしょうか?
sazi

2019/03/19 08:14 編集

SQLは質問の内容を貼り付けただけですので、動作しているかどうかはこちらでは分かりません。 VBAにSQLを直接記述しても、VBAは認識できないのでエラーになっているというのが質問に対する答えで、意図しているであろう事をサンプル的に回答しています。
sazi

2019/03/19 08:15 編集

なので、質問にあるSQLがクエリーとして動作している前提での回答です。
Yoshikun_0945

2019/03/19 08:15

もしも、元ファイルの拡張子を.csvとする場合のSQLはどうなりますでしょうか?
sazi

2019/03/19 08:17

それは、以前回答しましたけど、解決済みでしたよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問