• ベストアンサー
  • すぐに回答を!

EXCEL VBA で MSDE を操作したい

EXCELで作っている帳票データをデータベース化するにあたり、MSDEでテーブルを作りSQLクエリを使用してEXCEL VBAプロジェクト上からテーブルの追加/更新を行いたいのですが、MSSQLServerにアクセスする方法(具体的なコードの記述法や手順)がわかりません。 昔同様な事をやったことがあり、その時はサーバーがoracle(7)で、「oracle GLUE」というアドインツールを使いましたが同様に何かツールが必要なのでしょうか。 どなたか、どうかご教授お願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数6
  • 閲覧数754
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.6
  • ARC
  • ベストアンサー率46% (643/1383)

えっと、Access2000でデータベースを新規作成するときに 「新しいデータベース」を選べば、Access97や以前のバージョンと同じく、MDB形式のデータベースを作成できます。(MDB形式は、根本的にMSDEとは異なります) 新規作成するときに、「プロジェクト(新しいDB)」」を選択すると、MSDE(SQL-Server互換)でアクセスできるデータベースを作成できます。 database=XXXに指定する文字は、「プロジェクト(新しいDB)」を選ぶと起動するウィザードで、[新しいSQL Server データベース名を指定して下さい]の項目のところ、指定した名称を入力します。 もし、通常のMDB形式で作成したDBにアクセスするんであれば、補足してください。 それと、OSQLですが、MSDEをインストールしたときに同時にインストールされる、DOS用のSQL発行ツールです。 Oracleで云うところの「SQL*Plus」みたいなやつです。 起動方法は、コマンドプロンプト上で、 OSQL -S サーバー名 -U ユーザー名 -P パスワード … ですね。(終了は、EXIT[ENTER])

共感・感謝の気持ちを伝えよう!

質問者からのお礼

出来ました!! 大分日にちが経ってしまいましたが、ようやく出来ました。 問題はやはり database="xxxxxxx" の部分。 はるか昔まで記憶を遡り、DB構築したときに使った名称を全て叩き込んで一つ一つ実行していったんです。 初期の頃は、何度もやり直したりいろいろ試したので、似たようで少しずつ違う名称をたくさん使ったので大変でしたが、ようやく見つけました。 が結局、ここでいうdatabase名というものをどこで確認できるのか解らずに「とりあえず先に進める」という状況なので、すっきりしません。 また次の機会に同じ苦労を繰り返す事になりそうで気持ち悪いですが・・・ま現在の、遅れまくった仕事が優先ですね。 全く無知も甚だしい私に付き合っていただきましてありがとうございます。m(_ _)m 本当に助かりました。 そしてまた更なる無知を披露するべくやってくると思いますのでうんざりせずに付き合ってやってください(^^;)。 それでは。

関連するQ&A

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

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

  • MSDEのデータ保存場所

    あるシステムからの移行をやっています。(既にそのシステム会社はない)MSDEで動いていた模様でした。98でした。データファイルは突き止めて持って来ました。 MSDEをインストールしてサービス開始まで出来ています。 標準のMasterというデータベースはどこに? どこにデータファイルを保存して、SQLではどうやってファイルを開けば良いのか?MS系は初めてでトンと判りません。 アプリ作成が出来、Oracle、MySqlなどできるプログラマです。 宜しくお願いします。

  • VBA等の著作権

    カテゴリー間違ってたらすみません。 私は業務改善などでエクセルVBAを組んだコードでデータ収集や分析をしたり、Accessでテーブルやクエリを設計して実際にデータベース等に使っています。 それは業務用のツールとして使っています。 そこで質問なのですが、 (1)そのツールの著作権は誰になるのでしょうか? (2)作った私には何らかの権利が発生するのでしょうか? (3)こういったツールでも作った私の許可無しに改造されることは許されるのでしょうか? (4)そもそもこういうツールにも著作権は発生するのでしょうか? よろしくお願いします。

その他の回答 (5)

  • 回答No.5
  • ARC
  • ベストアンサー率46% (643/1383)

もしかしたら、データベース名が識別できていないのかもしれません。 strCNNに ";Database=XXXX" を書き加えると、うまく動くと思うのですが… 違ってたら、補足ください。

共感・感謝の気持ちを伝えよう!

質問者からの補足

優先の仕事があって大分時間が経ってしまいましたが... まだ解決していません(;_;)。 ";Database=XXXX" のXXXXに何を入れるのかわかりません。 以前、 >database項には、OSQL等で、 >create database HimitsuDB >とした時の名前を記述します。 とありましたが、OSQLて何でしょう? 全く無知で申し訳ないんですが... 以前も書いたかと思うのですが、 DBはACCESS(2000)で作成しましたのでMSSQLServer なわけですけど、"MSDE上の名前"とか"MSDEで~"とか 繰り返し見るにつけ、私がACCESSで作成しているものは もしかしてそもそも一般的に言うMSDEとは別のものでは?と、自分が大きな勘違いをしている気がして不安になってきました。 でも、日経ソフトウェアのMSDEでDBを作成する特集記事を参考にしたんですから、そんな事は無い、とは思っているんですが...どうでしょう?

  • 回答No.4
  • ARC
  • ベストアンサー率46% (643/1383)

う~ん、何故でしょう(?o?) <#3 とりあえず、SQLに問題が無いことを確認するために、他の環境から、同じIDでログインし、同じSQLを実行してみてください。 P.S. ~8/25まで、非常に忙しくなりそうです。そのため返事等が遅くなるかもしれません。m(_ _)m

共感・感謝の気持ちを伝えよう!

質問者からの補足

お忙しいところ本当にすみません。 とりあえずACCESSでEXCEL VBAに書き込んだSQLクエリをそのままコピーして発行してみましたが問題ありませんでした。 ただ、そのACCESSでも、VBAコードで走らせると同じエラーになります。 それで考えてみたのですが、ACCESSでテーブルを作成していて、教えていただいたVBAの接続設定をdatabaseではなくDSNで行っているので、そこに問題があるのでは? 接続したDB上の、使用するテーブルを宣言しなければいけないとか...そういうことはないでしょうか。 とりあえず自分でもHELP等調べてみてはいますが、今のところ目的に合った解答は見つかっていません。 (いつも思いますが、MSのヘルプってわかりにくい...) お時間が出来ましたらお返事頂ければ幸いです。

  • 回答No.3
  • ARC
  • ベストアンサー率46% (643/1383)

driver={SQL Server}; <- ここは固定です。 server=Onboro-Server; <- サーバー名です。(MSDE上で設定したもの) uid=ARC; <- ログインID pwd=Himitsu <- パスワード database=HimitsuDB <- MSDE上のデータベースの名前(ODBCのデータソースではありません) database項には、OSQL等で、 create database HimitsuDB とした時の名前を記述します。 ちなみに、データソースで指定する場合は、 strCNN = "driver={SQL Server};DSN=データソース名;uid=XXX;pwd=XXX;server=XXX" のように指定します。 >"~uid=sa;pwd=;database=~" >と、単純に省略していますがよいのでしょうか? よいです。 >あと、Openに接続文字列のstrCNNが絡んでませんが... >もしかして >"CNN.Open strCNN" >とかなるのではないかと思ってみたのですが、違いますか? はい、まことにその通りです(^^;; OKWebに書き込むときに、うっかり削除してしまっていました。

共感・感謝の気持ちを伝えよう!

質問者からの補足

おかげさまでデータベースへの接続はうまくいったようです。 が、また問題が... SQLクエリを発行すると今度はテーブル名がはじかれます。 strSQL = "SELECT name FROM Table_1;" Set RST = New ADODB.Recordset RST.CursorType = adOpenStatic RST.Open strSQL, strCNN のような記述で "オブジェクト名'Table_1'は無効です" と言われてしまいます。 何度もテーブル名等名称を確認しましたが間違いはありません。 何故でしょう????

  • 回答No.2
  • ARC
  • ベストアンサー率46% (643/1383)

VBAのエディタから、[ツール]-[参照設定]を実行し、「Microsoft ActiveX Data Object X.x Library」にチェックをつけて下さい。 んで、次みたいなコードを書けば、SQLを発行できます。 不明点があれば、補足下さい。 Private Sub コマンド2_Click()   Dim CNN As ADODB.Connection   Dim RST As ADODB.Recordset   Dim CMD As ADODB.Command      Dim RecCt As Long   Dim strCNN As String   Dim strSQL As String '接続文字列の準備   strCNN = "driver={SQL Server};" & _     "server=Onboro-Server; uid=ARC; pwd=Himitsu; database=HimitsuDB"       'SQLを実行   Set CNN = New Connection   CNN.ConnectionTimeout = 30   CNN.Open   Set CMD = New Command   CMD.ActiveConnection = CNN   CMD.CommandText = "INSERT INTO T個人 ( 氏名 )" _           & " SELECT '菜梨 権瓶' AS 氏名;"   CMD.CommandType = adCmdUnknown   CMD.Execute RecCt   MsgBox RecCt & "人追加したよ?" 'レコードセットを開く   strSQL = "SELECT * FROM T個人;"   Set RST = New ADODB.Recordset   RST.CursorType = adOpenStatic   RST.Open strSQL, strCNN   RST.MoveLast   RST.MoveFirst   MsgBox "最初のヒトは、" & RST![氏名] & "さん。" & vbNewLine _     & "全部で" & RST.RecordCount & "人登録されてるよ?" End Sub

共感・感謝の気持ちを伝えよう!

質問者からの補足

ARCさん、詳細な回答ありがとうございます。 が、Openで挫けてしまいました。 「データソース名及び指定された規定のドライバが見つかりません」となって先に進めません。 そこで接続文字列の確認をしたいのですが。 コントロールパネルの「ODBCデータソースアドミニストレータ」によるところの driver={SQL Server}; <- (ここは固定ですよね。) server=Onboro-Server; <- サーバー名 uid=ARC; <- ログインID pwd=Himitsu <- パスワード database=HimitsuDB <- データソース名 で良いのでしょうか。 また、現在ログインIDは標準の"sa"にしてあり、パスワードは設定していないので、 "~uid=sa;pwd=;database=~" と、単純に省略していますがよいのでしょうか? ここまでに間違いが無いとしたら原因がどこにあるか思い当たる事はありますか? あと、Openに接続文字列のstrCNNが絡んでませんが... もしかして "CNN.Open strCNN" とかなるのではないかと思ってみたのですが、違いますか?

  • 回答No.1
  • mnabe
  • ベストアンサー率33% (427/1283)

 MSDEの参照設定をしてあげれば出来ます。  後は、SQLの発行を行ってOKです。

共感・感謝の気持ちを伝えよう!

質問者からの補足

え~と、ごめんなさい。良くわかりません。 「MSDEの参照設定」とは、具体的にどこにある機能の事ですか? 私の質問が悪かったですね。 SQLの発行についても、以前oracle DBでやった時は「oracle GLUE」のライブラリ関数をEXCEL VBAにストアして発行したのですが、今回の場合はどのプロシジャを使うのでしょう? SQLクエリを素で書き込むわけではないですよね。 それにDBへの接続命令もEXCEL側で出さなければならいと思うのですが... まさに「具体的」なコードや、設定場所がわからないんです。申し訳ありません。

関連するQ&A

  • ORACLEでのSQLについて

    SQLについて教えてください。 今、VBからORACLEデータベースにSQLを投げる処理を作っているのですが、 一つわからないことがあります。 例えば、アクセスでは、クエリで新しいテーブルを作成するという考え方がありますが データベースがORACLEでも同じようなことができるのでしょうか? 別に新しいテーブルを作成することに執着するわけではなく、テーブルのデータを削除 してから、そのテーブルにSQLにて引っ張ってきたデータを入れる という ものでもいいと考えています。そのやり方でもかまいませんので教えてください。 宜しくお願いします。 Oracle8.1.6 vb6

  • MSDE2000+SP4

    お世話になります。 WinXP-Pro(SP2)マシンがあります。 MSDE2000relA(SP2対応)をインストールしました。既定のインスタンスのみでの利用です。 これにSP4(SQL2000.MSDE-KB884525-SP4-x86-JPN.EXE )をインストールしたいと思います。ところが、「指定のインスタンス名は無効です」とエラー表示され、インストールできません。 インスタンス名はMSSQL、MSSQLSERVER、Microsoft SQL Server Desktop Engine、など等あちこち調べて拾ってきたものを設定して試してみたのですが、通りません(新たなインスタンスが作成されてしまいます) 正しいセットアップの方法(インスタンス名の指定方法)をご存知の方、いらっしゃいましたら是非教えて下さい。宜しくお願い致します。 或いは、そもそも既定のインスタンスのみでの使用、というのはイレギュラーなんでしょうか?

  • SQLServer(MSDE)での接続情報について

    お世話になります。 SQLServer(MSDE)を使用してAccessからの移行をおこなっているのですが、Accessで使用していたワークテーブルの代わりに、自分の接続情報を保持したテーブルを作成し、SELECTする際の条件にしたいと考えています。 その時に、接続情報(IDや番号)等を使用したいのですが、OracleでいうV$SESSIONになる情報を取得するにはどのようにすればよろしいでしょうか? ご回答よろしくお願いします。

  • ExcelVBA MSクエリのパラメーターの操作

    いつもお世話になっています。 Excel2013のMSクエリを使用して、VBAの開発をしています。 その中で、パラメータの数が可変になるクエリがあります。 このパラメータの数を可変にするVBAコードを調べてもなかなか発見できないので質問いたします。 あくまで、使用するのはMSクエリのパラメータの数をVBA内で操作する方法をであり、 SQL文をVBA内で編集してセットする というのは最終的な対応にしたいと思っています。 ご存知の方がいればご教授お願いいたします。

  • ExcelVBAでのOracleデータベースへのSQL文発行

    Excelにデータベースのデータ構造を書いたファイルがあります。 それをVBAでOracleに直接SQL文を発行してテーブルを作成したいのですが、VBみたいにoo4oをつかって、Oracleに接続することは可能ですか? カテゴリーが違うかもしれませんが、ここで聞いたほうがわかるとおもったので、質問させてもらいました。 よろしくおねがいします。

  • SQLServer(MSDE)のデータベースのサイズ見積りについて

    皆様、始めまして。 現在、SQLServer(MSDE)でデータベースを構築中であるのですが、データベースのサイズ見積りの方法がわからず困っています。 BooksOnlineを見るとテーブルのサイズ見積りについては、詳しい計算式が乗っているのですが、システムで使う領域、インデックスについては記述が見つからず、困っております。 つきましては、データベースのサイズ見積りの方法についてご存知の方いらっしゃいましたらご教示願えませんでしょうか? もちろんWEB上の情報、書籍等の情報でも構いません。 どうぞよろしくお願いします。

  • MSDEのテーブルはどこに作成されているのでしょうか?

    お世話になります。 Access2000+VB.NETからMSDE2000RelAに移行勉強中です。 SQL Web Data Administratorを使用してテーブルを作成して 入力ツールやその他の画面を.NETで作成しました。 今度サーバーにそのデータを移そうと思ってテーブルのパスを 探したんですがよくわかりません。 そういえば作成するときにもどこに作成するのかというドライブ 名もディレクトリも指定しなかった(聞かれなかった)ように 思います。 拡張子は.dboなのでそれをキーに検索しても引っかかりません。 このデータベースファイルを探してコピーしたいのですが、そも そもデフォルトではどこに作成されるのかご教示いただけませんか? よろしくお願いいたします。

  • MSDEにおけるSQL Serverデータベースウィザード起動時のエラー

    MSDEに初挑戦している者です。 本を見ながら、MSDEを利用すべくがんばろうと思っているのですが… MSDEをインストールして、タスクバーに横向き▲のついたMSDEの動作状況を示すアイコンを出すところまではうまくいきました。 その後、Accessを起動して、「ファイル」→「新規作成」→「プロジェクト(新しいデータベース)」を選択して、プロジェクトファイル(*.adp)を保存すると、(本によると)SQLデータベースウィザードが起動するはずですが… 「一時的な作業用データベースを作成することができませんでした。このハードディスクには、使用されていないと思われる以前の一時的な作業用データベースがあります。これらの古いデータベースを削除し、もう一度試しますか?」というメッセージが出て、「再試行」と「キャンセル」のボタンが出てきます。 「再試行」を何度押しても、同じメッセージが出てきます。 「キャンセル」を押すと、「一時的な作業用データベースを作成できません。Microsoft SQL Serverデータベースウィザードを終了します。」というメッセージが表示されて、先に進めません。 どのように対処したらよいのでしょうか。 初心者ですので、できましたら、専門的な用語でなく、平易な言葉でお教えいただけるとうれしいです。 ちなみに、WindowsXP HomeEditionとOffice2000 Professionalで、LANやサーバーなどの無い自宅PCです。 よろしくお願いします。

  • Oracle 最短でわかりたい

    Oracle9iを使う事になりました。 これまではSQLServer2005、MSDEなどしか 使用していなかった為、Oracleは初めてです。 インストールしSQLプラスで接続は出来ました。 そこからcreate文でテーブルを作ってSELCTして・・・ とはなんとなく出来るのですが エンタープライズマネージャーで見ると??となります。 スキーマの考え方などがよく分かりません。 最短でOracleの考え方を理解できるサイトや資料がありましたら 教えてください。 ちなみに今は部品番号:J06245-01というPDFをみてます。

  • データのエクスポート&インポートをしたいんですが。。。

    VB.NETを使ってプログラミングをしてるんですが。 無償でデータベースサーバを使えるということでMSDE2000AというのをインストールしてMSSQLServerを使ってます。 他のパソコンにデータベースをコピーしたいんですけどどうすればいいですか?