はじめまして。
早速ですが、Excel2007からBaseへ接続する方法を調べております。
1.そもそもExcel2007からBaseへの読み書きが可能でしょうか
2.可能である場合、プロバイダには何を使えば良いでしょうか
今回Baseを始めて使うことになり、いろいろと調べてみましたが、分かりませんでした。
ご存知でしたら、是非ご教示をいただきますよう、お願いいたしますま。
Baseへの接続方法について
Re: Baseへの接続方法について
接続とのことですが、データの移植でしょうか。エクセルをテーブルに見立てたBaseの構築でしょうか。前者なら、コピペでできます。ヘルプも参照してみて下さい。KsBookshelf さんが書きました:はじめまして。
早速ですが、Excel2007からBaseへ接続する方法を調べております。
1,データのやり取りは可能です。KsBookshelf さんが書きました: 1.そもそもExcel2007からBaseへの読み書きが可能でしょうか
2.可能である場合、プロバイダには何を使えば良いでしょうか
2,プロバイダは関係ありません。全てはローカルのHD上での作業です。
-
KsBookshelf
- 記事: 4
- 登録日時: 3月 27, 2009, 11:04 am
Re: Baseへの接続方法について
seagull様、早速のご返答をありがとうございました。
この度は質問が曖昧で申し訳ございませんでした。
実は、以下のようなことを考えております。
EXCELで以下のようなを表を作成しております。
氏名|住所
田中|東京都
鈴木|埼玉県
佐藤|神奈川県
:
:
このデータをBaseの「住所録」というーブルに書き込みたいということが一つです。
更に、別のEXCELで氏名を入力し、以下のようなSQLで住所(埼玉県)を参照しようとしています。
select 住所 from 住所録 where 氏名 = '鈴木'
このような説明でご理解いただけるでしょうか。
この度は質問が曖昧で申し訳ございませんでした。
実は、以下のようなことを考えております。
EXCELで以下のようなを表を作成しております。
氏名|住所
田中|東京都
鈴木|埼玉県
佐藤|神奈川県
:
:
このデータをBaseの「住所録」というーブルに書き込みたいということが一つです。
更に、別のEXCELで氏名を入力し、以下のようなSQLで住所(埼玉県)を参照しようとしています。
select 住所 from 住所録 where 氏名 = '鈴木'
このような説明でご理解いただけるでしょうか。
Re: Baseへの接続方法について
KsBookshelf様、
Baseを立ち上げ、ヘルプを開いてみてください。
Base でのデータのインポート/エクスポート
と書かれているリンクを探してクリックしてみてください。基本的にはそこに書かれている通りです。
1、エクセルのシートでBaseに持っていきたいデータの部分を選択・コピーする。
2、Baseで、「住所録」テーブルのアイコンで右クリック、貼り付けを選択
3、ダイアログボックスが出てきたりしますが、あとは画面の指示に従って進めて行く・・・
こんな感じでできたりしますが、如何でしょうか。
Baseを立ち上げ、ヘルプを開いてみてください。
Base でのデータのインポート/エクスポート
と書かれているリンクを探してクリックしてみてください。基本的にはそこに書かれている通りです。
1、エクセルのシートでBaseに持っていきたいデータの部分を選択・コピーする。
2、Baseで、「住所録」テーブルのアイコンで右クリック、貼り付けを選択
3、ダイアログボックスが出てきたりしますが、あとは画面の指示に従って進めて行く・・・
こんな感じでできたりしますが、如何でしょうか。
Re: Baseへの接続方法について
BaseのバックエンドのDBはhsqldbなので対応しているjdbcなりodbcなりのドライバをインストールして
うまいこと設定すれば、Excelのデータソースとして利用できるようになる気がしますが、やり方がよく
わからないので別の方法を。
VBAから以下のようなコードで特に設定無しでいけました。(Excel2003で確認)
マシンにOOoがインストールされていること、Baseでaaaaa.odbというデータベースが作成
されていて中にtable1というテーブルが定義されていることが条件です。
InsertとかUpdateとかDeleteとかも似たようなコードで出来ると思います。
追記:
「ツール」->「オプション」->「OpenOffice.org Basic」->「データベース」で"aaaaa"が登録
されていることも前提条件です。もし登録されていないものを使用する場合は
'作成したBaseのデータベース名
sBaseFile = "file:///C:/tmp/aaaaa.odb"
こんな感じで指定します。
またInsertとかUpdateとかDeleteとかやるときはexecuteUpdateというメソッドを使用します。
http://api.openoffice.org/docs/common/r ... ement.html
うまいこと設定すれば、Excelのデータソースとして利用できるようになる気がしますが、やり方がよく
わからないので別の方法を。
VBAから以下のようなコードで特に設定無しでいけました。(Excel2003で確認)
コード: 全て選択
Sub Main()
' OOoに接続
Set objServiceManager = CreateObject("com.sun.star.ServiceManager")
'作成したBaseのデータベース名
sBaseFile = "aaaaa"
'Connection処理
Set oBaseContext = objServiceManager.CreateInstance("com.sun.star.sdb.DatabaseContext")
Set oDataSource = oBaseContext.getByName(sBaseFile)
Set oConnection = oDataSource.getConnection("", "")
Set oStatement = oConnection.CreateStatement()
' データベースからデータを取得
Set ResultSet = oStatement.executeQuery("SELECT * FROM table1")
j = 1
nFields = ResultSet.getMetaData().getColumnCount()
'フィールド名をシート上に展開する
For i = 1 To nFields
Cells(1, j).Value = ResultSet.getMetaData().getColumnName(i)
j = j + 1
Next i
'ここからデータをシート上に展開する処理
col = 1
Row = 2
While ResultSet.Next
col = 1
For i = 1 To nFields
Cells(Row, col).Value = ResultSet.getString(i)
col = col + 1
Next i
Row = Row + 1
Wend
End Sub
されていて中にtable1というテーブルが定義されていることが条件です。
InsertとかUpdateとかDeleteとかも似たようなコードで出来ると思います。
追記:
「ツール」->「オプション」->「OpenOffice.org Basic」->「データベース」で"aaaaa"が登録
されていることも前提条件です。もし登録されていないものを使用する場合は
'作成したBaseのデータベース名
sBaseFile = "file:///C:/tmp/aaaaa.odb"
こんな感じで指定します。
またInsertとかUpdateとかDeleteとかやるときはexecuteUpdateというメソッドを使用します。
http://api.openoffice.org/docs/common/r ... ement.html
-
KsBookshelf
- 記事: 4
- 登録日時: 3月 27, 2009, 11:04 am
Re: Baseへの接続方法について
seagull様、
このたびは何度もご丁寧にご返事をいただき、ありがとうございました。
「Base でのデータのインポート/エクスポート」を試みてみましたところ、上手くいきました。
予めテーブルをを作り、テーブルを開いてそこにデータ流し込む、ということが頭にあり、手間取ってしまいました。
tani様、
ご返答をありがとうございました。
早速、VBAソースをお借りしてテストをしてみました。
データベースへの接続までは上手くいきました。
テーブルデータの読み込みクエリexecuteQueryで、少し手こずっておりますが、ここまで教えていただきましたので、これ以降は自力で解決してみたいと思っております。
お二人には、何とお礼を申し上げてよいか分かりません。
本当にありがとうございました。
またお尋ねすることがあるかもしれませんが、その時はまたよろしくお願いいたします。
このたびは何度もご丁寧にご返事をいただき、ありがとうございました。
「Base でのデータのインポート/エクスポート」を試みてみましたところ、上手くいきました。
予めテーブルをを作り、テーブルを開いてそこにデータ流し込む、ということが頭にあり、手間取ってしまいました。
tani様、
ご返答をありがとうございました。
早速、VBAソースをお借りしてテストをしてみました。
データベースへの接続までは上手くいきました。
テーブルデータの読み込みクエリexecuteQueryで、少し手こずっておりますが、ここまで教えていただきましたので、これ以降は自力で解決してみたいと思っております。
お二人には、何とお礼を申し上げてよいか分かりません。
本当にありがとうございました。
またお尋ねすることがあるかもしれませんが、その時はまたよろしくお願いいたします。
-
KsBookshelf
- 記事: 4
- 登録日時: 3月 27, 2009, 11:04 am
Re: Baseへの接続方法について
tani様、
executeQueryで手こずっておりましたが、原因が分かりました。
strSQL = ""SELECT * FROM table1";"
と書いて実行しましたが、調べてみましたところ、テーブル名がTable1(頭文字が大文字)になっていました。
分かってみれば簡単なことでした。
ちなみにAccessやSQL Serverでは、テーブル名とカラム名いずれも大文字小文字の区別をしません。
SQL文は、以下の二つを試してみましたが、いずも正常に処理されました。
strSQL = "SELECT * FROM ""table1"";"
strSQL = "SELECT * FROM table1;"
たびたびのご丁寧なご教示に重ねてお礼を申し上げますと共に、結果をご報告を申し上げます。
executeQueryで手こずっておりましたが、原因が分かりました。
strSQL = ""SELECT * FROM table1";"
と書いて実行しましたが、調べてみましたところ、テーブル名がTable1(頭文字が大文字)になっていました。
分かってみれば簡単なことでした。
ちなみにAccessやSQL Serverでは、テーブル名とカラム名いずれも大文字小文字の区別をしません。
SQL文は、以下の二つを試してみましたが、いずも正常に処理されました。
strSQL = "SELECT * FROM ""table1"";"
strSQL = "SELECT * FROM table1;"
たびたびのご丁寧なご教示に重ねてお礼を申し上げますと共に、結果をご報告を申し上げます。