Excelで期間選択すると、Accessのクエリを使わずに直接テーブルを覗いて選択した期間のデータを抜き出す事は可能でしょうか?
操作したいAccessのテーブルはこのような形になっています。
名称.tblというテーブルをビューすると
日付 名前 値
20130101大田 10000
20130201鈴木 13000
20130211加藤 52000
20130301石黒 40000
20130314田中 9500
20130401石井 1000
日付と名前と値が入っています。
Excelで指定した期間と名前を変数に保持するか、Excelのシートに保存したいのです。
現状はExcel側で
期間を選択して、実行ボタンを押す。
実行ボタンをクリックするとAccessのmdbファイルに接続。
Option Explicit
Dim strAccess As String
Private Sub cmb実行_Click()
strAccess = \\接続先\接続.mdb
dbCon.Open cnsADO_CONNECT1 & strAccess
これでAccessファイルに接続は出来ています。
日付のレコードに対して該当する期間があるかどうかをFor文辺りでループをかけて、該当する日付と名前と値を抜き出したいのです。
この処理は可能でしょうか?
手詰まりを起こしていますのでお知恵をお貸し下さい。
No.1
- 回答日時:
接続方法に応じて様々方策は考えられます。
とりあえずご質問の直接の回答として、今ADOを経由しているのでしたら
参照:
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
「 ADOでAccessデータベースからデータをシート上に展開する」のサンプルマクロで1フィールドずつ巡回をしていますので、「該当する日付と名前」ならシートに書きだすようにちょいと細工を追加すれば出来上がりです。
他にも「外部データの接続」でSQLを使って絞り込みながら一気に抽出してしまうのも、簡単な方法の一つです。
「外部データの接続」から「新しいデータベースクエリ」「Driver do Microsoft Access(*.mdb)」…とステップを進めていき、絞り込み条件を記入して最後にワークシートにデータを返す、といった操作を新しいマクロの記録でマクロに録ってしまえば、あとは条件記入のマクロの部分だけ細工すれば完成です。
あるいは状況によりますがエクセル標準の「ピボットテーブルレポート」を使ってmdbファイルに直接接続、とりあえず全データ吸い上げにはなりますが、レポートの絞り込み機能で必要な結果だけをシートに展開させるような事も簡単に実現できます。
ありがとうございます、上のコードに下記構文を追加した事で。一応動くようにはなりました
strsql = "SELECT * FROM 接続先 WHERE 日付 "
dbRes.Open strsql, dbCon, adOpenKeyset, adLockReadOnly
Gyo = 1
Rows("2:65536").ClearContents
dbRes.MoveFirst
Do Until dbRes.EOF
Gyo = Gyo + 1
Set dbCols = dbRes.Fields
Cells(Gyo, 1).Value = dbCols("日付").Value
Cells(Gyo, 2).Value = dbCols("名前").Value
Cells(Gyo, 3).Value = dbCols("値").Value
dbRes.MoveNext
Loop
dbRes.Close
Set dbRes = Nothing
dbCon.Close
Set dbCon = Nothing
しかし、これだと期間の指定が出来ていません。
dim strSData as string
dim strEData as string
strSData = Worksheets("設定").Range("C2")'201301
strEData = Worksheets("設定").Range("C3")'201304
この状態で
strsql = "SELECT * FROM 接続先 WHERE 日付 BETWEEN strStartData AND strEndData ORDER BY 日付"
と、追加して上記構文を動かしてみたのですがエラーが出て動きません。
「1つ以上の必要なパラメーターの値が設定されていません。」
と、出てここの部分で止まってしまいます
dbRes.Open strsql, dbCon, adOpenKeyset, adLockReadOnly
変数の宣言の仕方が悪いのでしょうか??
No.2ベストアンサー
- 回答日時:
ADOで、ということでしたら、基本的にはこちらの方法で。
Excelユーザのデータベース活用法-ADOレコードセットからワークシートへ
http://www.moug.net/tech/exvba/0150068.html
SQL に 「Where条件」 を 付加することで、
該当期間のデータのみを簡単に取得することができます。
「日付」フィールドのデータ型によって記述が変わりますが、
数値型の場合ですと
MySQL = "SELECT * FROM テーブル名 WHERE 日付 BETWEEN 20130101 AND 20130131 ORDER BY 日付
などのように。
ありがとうございます、上のコードに下記構文を追加した事で。一応動くようにはなりました
strsql = "SELECT * FROM 接続先 WHERE 日付 "
dbRes.Open strsql, dbCon, adOpenKeyset, adLockReadOnly
Gyo = 1
Rows("2:65536").ClearContents
dbRes.MoveFirst
Do Until dbRes.EOF
Gyo = Gyo + 1
Set dbCols = dbRes.Fields
Cells(Gyo, 1).Value = dbCols("日付").Value
Cells(Gyo, 2).Value = dbCols("名前").Value
Cells(Gyo, 3).Value = dbCols("値").Value
dbRes.MoveNext
Loop
dbRes.Close
Set dbRes = Nothing
dbCon.Close
Set dbCon = Nothing
しかし、これだと期間の指定が出来ていません。
dim strSData as string
dim strEData as string
strSData = Worksheets("設定").Range("C2")'201301
strEData = Worksheets("設定").Range("C3")'201304
この状態で
strsql = "SELECT * FROM 接続先 WHERE 日付 BETWEEN strStartData AND strEndData ORDER BY 日付"
と、追加して上記構文を動かしてみたのですがエラーが出て動きません。
「1つ以上の必要なパラメーターの値が設定されていません。」
と、出てここの部分で止まってしまいます
dbRes.Open strsql, dbCon, adOpenKeyset, adLockReadOnly
変数の宣言の仕方が悪いのでしょうか??
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
白血球が多いとどんな心配があ...
-
イタリアから帰国する際、肉製...
-
精液の落とし方を教えてください
-
検便についてです。 便は取れた...
-
勃起する時って痛いんですか? ...
-
エクセルで数式の答えを数値と...
-
エクセル指定した範囲からラン...
-
精子に血が・・・
-
2つの数値のうち、数値が小さい...
-
EXCELで条件付き書式で空白セル...
-
これって喉仏ですか? 私は女性...
-
風俗店へ行く前のご飯
-
精子が黄色?
-
甲状腺が腫れているが血液検査...
-
リンク先のファイルを開かなく...
-
小数点以下を繰り上げたものを...
-
【Excelで「正弦波」のグラフを...
-
excelでsin二乗のやり方を教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
首吊りどこ締めるの
-
彼女のことが好きすぎて彼女の...
-
白血球が多いとどんな心配があ...
-
勃起する時って痛いんですか? ...
-
精子が黄色?
-
検便についてです。 便は取れた...
-
これって喉仏ですか? 私は女性...
-
小数点以下を繰り上げたものを...
-
甲状腺が腫れているが血液検査...
-
精液の落とし方を教えてください
-
エクセル指定した範囲からラン...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
精子に血が・・・
-
エクセルのラベルの値(文字列...
-
イタリアから帰国する際、肉製...
-
ある範囲のセルから任意の値を...
-
リンク先のファイルを開かなく...
-
中出しをするとお腹が痛い・・・。
-
MIN関数で空白セルを無視したい...
おすすめ情報