エクセルのセルを数値として認識してDBに記録するには?

解決


NineBall  2005-02-09 04:38:01  No: 119509

エクセルで複数の質問に複数の人の回答を書いた表があるとします。
それをVBでDBへ、回答者ID.質問内容ID.回答.年度.月度を取り込む物をつくっているのですが・・

質問内容をセルで判断し、番号としてDBに記録させるにはどうしたらいいのでしょう?
たとえば質問1がセルの3.4にあるとして、
その質問内容を[1]という数字にしてアクセスの質問ポイントのテーブルに保存したいのです。

それと同じで回答者も名前ではなく、予め用意してある社員番号で認識させたいのですが・・
これもセルの位置で決めたいのです、回答者がエクセルのセルの2.2〜2.10まであるとして
2.2には大橋と書いてあるけれど、その文字ではなく「このセルの場所はこの社員番号」と固定で取り込みたいのです。

For  Nextを使えばよろしいのでしょうか?

  If F_GetShain_lng(strSQL) > 0 Then
                strSQL = Space$(0)
                strSQL = strSQL & " UPDATE Question SET "
                strSQL = strSQL & "   ID = " & Trim$(objWrkSht.Cells(3, 3).Value)          '評価対象者ID
                strSQL = strSQL & "   QID = for QX = 4 to 11 (objWrkSht.Cells(7, QX).Value)"

今はこのように書いていますが、これでは動かないので;
よろしくお願いします。


ささ  2005-02-09 07:04:19  No: 119510

〜〜、として
〜〜のですが、
〜〜けれど

が多用で、質問の意味が通じないです。
箇条書きでお願いします。


NineBall  2005-02-09 19:34:53  No: 119511

ごめんなさい、どう伝えたら良いか混乱してしまいました^^;

VBでエクセルで作った表の内容をDBに取り込む際に
「セルの中の文字列」を取り込むではなく、
「セルの位置に対して任意の番号を」DBへ保存したい・・

セルの [3.3] は [1]としてDBへ。 [3.4] は [2]...といった感じ

説明に自信がないので下に詳細を書きました、文章力なくて申し訳ありません..

↓取り込みたいエクセルの内容↓
_______________________________________

出題者ID:No.001  出題者名:山田太郎

       回答者1  回答者2  回答者3...

Q1   YES       YES       NO
Q2   NO        YES       NO
Q3   NO        NO        NO
Q4   YES       YES       YES
_______________________________________

このようなエクセルから
出題者ID・回答・質問・回答者を取り込みます。
出題者IDと回答はそのまま、strSQL = strSQL & "   ID = " & Trim$(objWrkSht.Cells(3, 3).Value) 
で取り込めるのですが・・

質問内容は、文字としてではなく、番号として取り込みたい。(Q1は1Q2は2として..)
回答者は、名前ではなく、社員番号を取り込みたい。

このような場合どうしたら良いのでしょう?


特攻隊長まるるう  2005-02-09 19:38:07  No: 119512

…確かにこの質問内容からすると必要無い情報が多くて
分かり難いですね(^^;)
ただ、足りないより全然マシ。こういった掲示板の回答者さんってば
神懸り的な読解力を持ってる方がいますのでw

>For  Nextを使えばよろしいのでしょうか?
使えばよろしいのでは?
        Dim QX As Integer
        For QX = 4 To 11
               strSQL = strSQL & "   QID = for QX = " & CStr(Val(objWrkSht.Cells(7, QX).Value))
        Next


特攻隊長まるるう  2005-02-09 19:40:08  No: 119513

あ、ゴメン
               strSQL = strSQL & "   QID = " & CStr(Val(objWrkSht.Cells(7, QX).Value))


特攻隊長まるるう  2005-02-09 19:52:06  No: 119514

追加。
>質問内容は、文字としてではなく、番号として取り込みたい。(Q1は1Q2は2として..)
入っている文字が一定のパターンに従ってるならそこから数値部分を
取り出す処理を作れば良いでしょう。…1から?って決まってて
ループしてるなら、ループのカウンタでもいいと思いますが…。
>回答者は、名前ではなく、社員番号を取り込みたい。
名前に対応している社員番号をどこかに持ってるんですよね?
…それを置き換えるだけでは?。例えば過去ログ検索『Dictionary』
または『Collection』なんかを利用するとか?


特攻隊長まるるう  2005-02-12 12:56:51  No: 119515

追加情報
データ量が多くなってきた場合、エクセルは、一括でデータを
読み書きした方が格段に早くなります(特に書き込み)。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200501/05010125.txt
>特攻隊長まるるう 2005/01/27(木) 17:33:10
を参考にしてみて下さい。


NineBall  2005-02-17 02:02:15  No: 119516

特攻隊長まるるう様、丁寧な解説ありがとうございました。
レス遅れてもうしわけありませんでした


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加