• 締切済み

この仕様を実現するには、VBAとADOで充分なのでしょうか?足りませんか。

benelliの回答

  • benelli
  • ベストアンサー率51% (78/152)
回答No.2

ExcelとDBを連携させること自体は簡単です。でも、WEBサイト制作が目的なんですよね? ローカル環境でExcelからDBにアクセスするのは至極簡単で、VBAでやるのもいいですがExcelの外部データ読み取り機能を使えば最悪言語の知識なしでも読み取れるのはおわかりかと思います。 ただ、ネット環境でこのようなことをするには情報が、というか方針があいまいすぎじゃないですかね。そもそもWEBサイト制作をするならExcelやADOなどは二の次であり、大事なのはサーバー構築やらJSPやらCGIやらHTMLやら動作環境などやら、そういったことを決めるのが先だと思います。 ひとまず、Excelを使わなくてはならない理由、WEBサイト制作との関連性、サーバー・クライアントの環境設定(Excelはどちらの環境に依存?)などを整理してみてはと思います。

hana3hana3
質問者

補足

アドバイスありがとうございます。 そして申し訳ありません、私の説明不足です。 今回の処理は、WEB上で行うものではなく、WEBサイトから 「診断」を希望して登録された方に、診断結果を 後日こちらで(Web上ではない)前述のような流れで印刷し、 印刷結果を郵送するという仕様です。 ご経験のある方からのアドバイス、大変有り難いです。 どうぞ宜しくお願い致します。

関連するQ&A

  • エクセルVBAについて

    はじめてのVBAで本を読んでも使い方がわからないので教えてほしいのですが シート1にこのような表を作成して   A    B    1山田   500 2伊藤 20000 3佐藤    50 ・ ・ ・ シート2に    A   B    C 1    請求書 2 3 山田 4 500円 というような請求書を印刷していくVBAを作りたいのですが人数については10人から300人とその時々で変化するのでデータがないときは 印刷もそこで終わりという風にしたいのですが、、、 よろしくお願いします。 エクセル2003 XPです。

  • oracleとexcelのADOによる連携について

    お世話になります。 excelからADOでoracleのデータベースにある テーブルの必要なデータのみを抽出してexcelに 書き出そうとしています。 excelのvbaコードで、まず、ADOコネクションの生成として、 「cn.Open "Provider=OraOLEDB.Oracle;Data Source=" & "DB名" & ";User ID=hpsuser;Password=○○○;", "○○○", "○○○"」と書き、 ADOレコードセットの生成で、 「 rs.Open "~(1)~", cn, adOpenDynamic, adLockOptimistic, adCmdText」 と書いていますが、上記「~(1)~」の部分がかなり長いクエリ文になっているからなのか、 エラーがかかってしまいます。 単純なテーブルのデータを呼び出す事しかできないのか、又、 長いクエリ文のデータを抽出したい場合どの様にしたら良いのか、 どなたかご親切な方、ご教示頂けます様、宜しくお願いいたします。

  • エクセルVBAでのvlookup関数の使い方

    エクセルでvlook up関数を用いたVBAを書こうと思っているのですが上手くいきません。 詳しい方がいらっしゃいましたら教えて頂けませんでしょうか。 使用しているエクセルは2010です。 いろいろ調べながら書いてみたのですが、繰り返しの処理かエラー処理が悪いようでVBAを実行することが出来ませんでした。 シート1にあるコマンドボタンを押すことで別シート(シート2、3)に入力されている値をもってくるというVBAを考えています。 Sheet1(取扱商品)にはA列に商品番号、B列に商品名、C列に管理者が入力されています。 D~H列には属性1~5というヘッダーだけがあり、コマンドボタンを押すことで、別シートから商品の属性が入ります。 Sheet1(取扱商品) 商品番号 商品名 管理者 属性1 属性2 属性3 属性4 属性5 001  桜   安部 002  薔薇  安部 002  薔薇  伊藤 004  梅   上田 007  水仙  伊藤 010  牡丹  榎本 ...(以下続く) Sheet2(データベース1) 商品番号 属性1 属性4 001  A1  A4 002      B4 004  D1     008  H1  H4 ...(以下続く) Sheet3(データベース2) 商品番号 属性2 属性3 属性5 001  A2      A5 003  C1  C3  C5 004      D3 011  K1  K3 ...(以下続く) 各シートの商品番号は1対1で対応していません。 Sheet1は商品番号が重複する場合があります。Sheet2、3は重複しません。 コマンド実行後のイメージは下記のような形です。 対応する商品番号、属性がない場合はnull入るようにしたいと思っています。 Sheet1(取扱商品) 商品番号 商品名 管理者 属性1 属性2 属性3 属性4 属性5 001  桜   安部  A1  A2      A4  A5 002  薔薇  安部              B4     002  薔薇  伊藤              B4     004  梅   上田  D1      D3         007  水仙  伊藤                     010  牡丹  榎本                     ...(以下続く) 要領が得ないところがあるかと思いますが、皆様のお知恵を拝借致したく、教えて頂ければ幸いです。 どうかよろしくお願い致します。

  • エクセルVBAでアクセスのテーブルインポート

    VBA初心者です。 エクセルのVBAでデータベースA.mdbのテーブルAをデータベースb.mdbにインポートするプログラムお教えて下さい。 '================================================ sub インポート () Set cn = New Connection'データベース接続 cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source="C:\A.mdb" ●ここにPG書くような感じだと思いますが。   cn.Close: Set cn = Nothing'後処理 End Sub '================================================ もし難しい場合、アクセスのVBAでインポートをするが、この実行をエクセルでするよなのでもいいです。この場合は、インポートされるb.mdb側のプログラムをエクセルで実行するようにしたいです。(A.mdbは多数あるため、変更が大変なため) よろしくお願い致します。

  • エクセルでこれを実現する方法

    エクセル上で、セルA1に1、A2に2・・・という感じで A10まで数字があるとします。 ここで私が知りたいのは、各セル内で重複している 数字がいくつ存在するか、ということです。 この場合でいうと、A1~A10に1~10まで重複なく数字が あるとすると、重複は「0」で、仮にA10に8という数字が合った場合 重複は「1」という情報を知りたいのです。 これをエクセル上で実現する方法は何がベストなのでしょうか。 (関数?VBA?その他・・・もしくは不可?) 実際の入力数値はお金(数十万単位)の上、 量も膨大ですのでオートフィル機能は非現実的だと 考えております。 関数やVBAは少々触ったことがあるレベルです。 大した知識はなく、ちょっと混乱気味で、 知識ある方のご意見・お知恵を拝借したく よろしくお願い致します。

  • Excel VBA でデータベース操作のできる関数

    データベースを扱えるソフトを作ろうと思ったら、通常 Access を使うことになると思うのですが、Excel で作ろうと思っています。 なぜかというと、Office Personal版を持ってる人にも使って欲しいからです。 Excel の1シートをひとつのテーブルに見立てて、簡単なデータベース操作をしたいのですが、それが簡単に行える関数はありますか? VBA の関数でも知りたいのですが、SQL文などで扱えるようになってるのがあればなおさらいいのです。

  • EXCELのVBAを用いたACCESSのデータベース操作の本について

    VBAの初心者です。 EXCELのシート上にあるデータをACCESSのデータベースに蓄積したり、ACCESSのデータベースからEXCELにデータを飛ばして加工したりしたいと考えています。できれば、ACCESSにVBAを記述するのではなく、EXCELにVBAを記述し、データの蓄積などをEXCELから行う方法を勉強したいのです。 自分が本屋で見た限りでは、ACCESSにVBAを記述する方法であれば様々な本が出版されているのですが、EXCELに記述する方法が書いてある本が見当たりません(たくさんあるのかも知れませんが)。皆様お勧めの分本を教えてください。 なお、自宅でEXCEL2000とACCESS2000、会社でEXCEL97とACCESS97を使っていますので、どちらでもいける本がいいです。 よろしくお願いします。

  • Excel VBAを用いて学習ソフトを作る

    こんばんは。 Excel VBAを勉強しています。 参考書を一通り目を通して次に何をしようと考えた結果、 VBAや他の言語を勉強するための簡単なソフトを作ることを思いつきました。 自分の案としては参考書や問題集に載っているコマンドやプロパティなどの 解説をあらかじめ疑似的なデータベースに登録しておき、 VBAのマクロを使って入力したワードを検索・表示するというものです。 そこで土台をまずしっかり作りたいのでDBの形式を固めたいのですが、 どのような形式で管理、登録するとよいでしょうか? 例えば現段階では、 別のExcelシート自体をDBとして、 セルごとに、管理番号・所属・名称・説明文・登録日時 の形で管理しようかと思っています。 またはテキストファイルにCSV形式でそのままDB代わりに使う、などです。 データ自体は手入力でコツコツ入れていくつもりなのでレコード数は そこまで増えないと思います。(多くて500行程度?) 別の媒体をDBとして使う案や、追加しておいた方がいい属性などありましたら お金がかからない範囲で教えてもらえるとうれしいです。よろしくお願いします。 ちなみにAccessはPCには入っていません。

  • VBAによるレコードの追加について。

    同じテーブル構造をもつ2つのテーブルあり、Aという名前のテーブルにBという名前のテーブルの1レコードを1度に追加するには、ACCESS2003のVBAでは、どのように記述すればよいのでしょうか?イメージは、下記のとおりです。 Set TBL = DB.OpenRecordset("A", DB_OPEN_TABLE) Set TBL2 = DB.OpenRecordset("B", DB_OPEN_TABLE) Do Until TBL2.EOF TBL.AddNew TBL = TBL2 ‘← ココの記述が分かりません。 TBL2.MoveNext TBL.Update Loop

  • VBAでADOの質問です。かなり困ってます。

    質問なのですが、 Sub excel_access4() Dim dbs As New ADODB.Connection 'ADOコネクション Dim rcs As New ADODB.Recordset 'ADOレコードセット Dim mydbF As String 'アクセス ファイル Dim mydbT As String 'アクセス テーブル Dim mtr As Variant 'エクセル 全データ Dim rcd As Long 'アクセス 行指定 Dim fld As Long 'アクセス 列指定 '例として acctest2.mdb の テーブル4 に書き込む mydbF = "acctest2.mdb" 'アクセス ファイル指定 mydbT = "テーブル4" 'アクセス テーブル指定 'アクセスデータベースを指定 dbs.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & ThisWorkbook.Path & _ "\" & mydbF & ";" 'アクセスデータベースを開く rcs.Open Source:=mydbT, _ 'A ActiveConnection:=dbs, _  'B CursorType:=adOpenKeyset, _ 'C LockType:=adLockOptimistic, _ 'D Options:=adCmdTableDirect 'E 'エクセルシート全データ範囲(2次元配列) With Worksheets("Sheet1").Range("A1").CurrentRegion Let mtr = .Resize(.Rows.Count - 1).Offset(1, 0).Value For rcd = LBound(mtr, 1) To UBound(mtr, 1) '1次行 rcs.AddNew 'LB:最小値(1) UB:最大値(5) For fld = LBound(mtr, 2) To UBound(mtr, 2) '2次列 'アクセスに行列で書き込み Let rcs.Fields(fld - 1).Value = mtr(rcd, fld) Next rcs.Update Next End With rcs.Close dbs.Close Set rcs = Nothing Set dbs = Nothing End Sub AとBはわかりますが、CDEは一体何をしているのかわかりません。 また実行すると実行時エラー3709がでます。 この実行時エラーの原因がさっぱりわかりません。 どなたか詳しい方お教え願えないないでしょうか?