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

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

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

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

Access

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

Q&A

解決済

2回答

349閲覧

Excel VBA データ取得のやり方?

rebell

総合スコア19

VBA

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

Access

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

0グッド

0クリップ

投稿2018/10/29 09:19

編集2018/10/30 00:05

Excelでお仕事 VBA応用(ADOでデータを取得する)

次の案件で使うとこのことでVBAを学習しています。

Excel自体あまり使ってこなかったため難航しています。

サンプルのコードを読んだのですが、わからないところが多々ありました。

・Private const の3行 

・接続文字列

・参照SQL文が何をしているのか
※特にS.[]というところが何を参照しているのかサッパリです

・クライアントカーソル設定とは何?

他にも理解出来てないところはあります

どういった観点でコードを読み進めて行けばいいのか
またはココのサイトを見ると詳しく書いてある などあれば教えて頂きたいと思います。

よろしくお願いします。

追記
使用したことのある言語ですが
javaをbronze程度、sqlは少しだけ触ったことがあります

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

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

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

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

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

n.t

2018/10/29 09:32

質問に回答させていただくあたりrebellさんの経験のある言語等教えていただくことはできますでしょうか?
rebell

2018/10/29 23:59

回答遅れて申し訳ないです。 javaのbronzeの知識と少しだけSQLを触ったことがある程度です。
ExcelVBAer

2018/10/30 00:06

接続先は何なんですか?Access?SQLServer?
rebell

2018/10/30 00:10

Accessを使っています
guest

回答2

0

ベストアンサー

javaの経験がありそうなのでそちらと絡めて回答させていただきます。

まず
private constについてはスコープがprivateになっている定数です。
javaでもpublicとかprivateなどあると思いますがそれと同じようなものです。

次に
接続文字列については"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='"Microsoftのoledbを使いますよみたいな宣言なものになります。

続いて
sqlが何をしているかですがselectとなっているのでデータベースからデータを取ってきている処理になりますS.[]これはカラムを指定しているんだと思います。

最後にクライアントカーソルですがよくわかんないですね

結果セット内の特定の行に位置付けることができます。 現在の結果セットの位置に基づいて 1 行または行ブロックを取得できます。 結果セット内の現在の位置にある行のデータを変更できます。 ほかのユーザーによって行われたデータ変更をどの程度反映するかを定義できます。

https://msdn.microsoft.com/ja-jp/library/cc389735.aspx
公式に説明があったのでここの項目はぶん投げます。

超ざっくりなのでもう少し詳しく調べる時の足がかり程度になれればと思います。

投稿2018/10/29 09:46

n.t

総合スコア64

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

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

rebell

2018/10/30 00:14

Private constについては何となく変えちゃ困るところを定数化してるのかなと言う認識でいました。 変数名を見てもパッと来なかったの回答してくださってわかりました。 S.[]のカラム指定というのはセルの範囲を指定していると言う認識で合っていますか? urlありがとうございます、併せてみてみます。
rebell

2018/10/30 00:24

回答を見ながらAccessのデータベースを確認してみました。 S.[]はSYAINテーブルを指定していて、そこのどこのシートを参照ということが自己解決できました。
n.t

2018/10/30 01:21 編集

``` strToday = "#" & Format(Date, "yyyy-MM-dd") & "#" SELECT H.[BUSYO_CD], ' (00)部署コード B.[BUSYO_NM], ' (01)部署名 H.[YAKU_CD], ' (02)役職コード Y.[YAKU_NM], ' (03)役職名 H.[SCD], ' (04)社員コード S.[KANJI_SEI]+S.[KANJI_MEI], ' (05)氏名(漢字) S.[KANA_SEI]+S.[KANA_MEI], ' (06)氏名(カナ) S.[NYUSYA_YMD], ' (07)入社日 S.[TAISYOKU_YMD], ' (08)退職 FROM ( ( ( [MST_HAIZOKU] AS H INNER JOIN [MST_SYAIN] AS S ON H.[SCD]=S.[SCD] ) LEFT OUTER JOIN [MST_BUSYO] AS B ON H.[BUSYO_CD]=B.[BUSYO_CD] ) LEFT OUTER JOIN [MST_YAKU] AS Y ON H.[YAKU_CD]=Y.[YAKU_CD] ) WHERE S.[NYUSYA_YMD]<=" & strToday AND (S.[TAISYOKU_YMD] IS NULL OR S.[TAISYOKU_YMD]>" & strToday & ")" ORDER BY H.[BUSYO_CD],H.[YAKU_CD],H.[SCD];" ``` sqlは分解してみるとわかりやすくなるかもです
rebell

2018/10/31 00:03

ありがとうございます。 sql難しいですがコツコツとやってみます。
guest

0

CursorLocation プロパティ
https://msdn.microsoft.com/ja-jp/library/cc426654.aspx

カーソルをクライアント側に持つか、サーバ側(例:SQLServer)に持つかの設定のようです。
「mdbでは関係ないかも」というコメントはそれを踏まえてのものだと思います。

投稿2018/10/29 10:37

morinatsu

総合スコア395

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

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

rebell

2018/10/30 01:21

urlのページを何度か読み、カーソルをクライアント側に持つか、サーバ側(例:SQLServer)に持つかの設定ということ、adUseClient にのみ設定できるということは読み取れました。 mdbでは関係がないというのはカーソルがクライアント側にもサーバ側にも持たないからという理由なのでしょうか?
morinatsu

2018/10/30 10:31

私の知る限りにおいて、その通りです。mdb(Accessのファイル)の場合、クライアント≒サーバだからですね。サーバが他にある場合(SQLServer, MySQL, etc.)、ADOの提供するものを使うか、サーバのものを使うか選択することになります。
rebell

2018/10/31 00:04

理解できました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問