自分のセンスや笑いの好みに影響を受けた作品を教えて

mdbファイルを開きたいのですがAccessは持っておらず,Excelで開こうとするとデータが大きすぎて全部は表示しきれないとメッセージが出て困っています.
そこで質問なのですが,mdbファイルをcsvなどのテキスト形式のファイルに変換するフリーウェアがあればご教示ください.

A 回答 (6件)

エクセルvbaでcsv変換できるコードを書いてみました。



ツール→参照設定で
Microsoft ActiveX Data Object 2.x Library
Microsoft Scripting Runtime
にチェックを入れておいてください。

あとコマンドボタンを一つ作りそのクリック時のイベントに以下を書き加え「mdbファイル名」、「テーブル名」、「出力ファイル名」を適宜書き換えてコマンドボタンを押すとCSV変換できると思います。 (コマンドボタンのキャプションが抽出中から終了に変わればファイルは出来上がっています)

Private Sub CommandButton1_Click()
Dim Con As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim strMDBName As String
Dim strSQL As String
Dim FSO As New FileSystemObject
Dim TS As TextStream
Dim strMDBFILEName As String
Dim strTXTFILEName As String
Dim strConName As String
Dim strTBLName As String
Dim strOUTText As String
Dim lngFieldNum As Long
Dim lngCount As Long
'mdbファイル名(フルパスで)
strMDBFILEName = "C:\Documents and Settings\...............\mdbname.mdb"
'テーブル名
strTBLName = "テーブルA"
'出力ファイル名(フルパスで)
strTXTFILEName = "C:\Documents and Settings\..............\OUTPUT.TXT"
strSQL = "SELECT * FROM " & strTBLName
strConName = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMDBFILEName
Set TS = FSO.CreateTextFile(strTXTFILEName, True)
Me.CommandButton1.Caption = "抽出中"
Con.Open strConName
Rst.Open strSQL, Con, adOpenKeyset, adLockOptimistic
lngFieldNum = Rst.Fields.Count
Do Until Rst.EOF
strOUTText = """" & Rst.Fields(0) & """"
For lngCount = 1 To lngFieldNum - 1
strOUTText = strOUTText & ",""" & Rst.Fields(lngCount) & """"
Next lngCount
TS.WriteLine strOUTText
Rst.MoveNext
Loop
TS.Close
Set TS = Nothing
Set FSO = Nothing
Rst.Close
Con.Close
Set Rst = Nothing
Set Con = Nothing
Me.CommandButton1.Caption = "終了"
End Sub

小さいファイルではできましたが、何万件というレコードでは実験していません。 (メモリ不足などの問題がおきないとは言い切れません。) 汎用性があるようには作っていませんので、複数のテーブルを出力されたい場合などはご自分で使いやすいように改造してください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます.わざわざマクロまで作成していただいて恐縮です.
現在は#3さんの方法で試行中ですので,後ほどお教えいただいた方法を試してみたいと思います.
ただし,うちのPCが非力なのと,件数がExcelの制限を越える6万5千件以上あることは確実ですので,これらがネックになりうまく行かないかもしれませんorz

お礼日時:2007/09/12 13:56

ついでにでっかいmdbファイルでも試してみました。


フィールド数80以上、レコード数40万件以上のリンクテーブルをテキストに書き出してみました。およそ4分30秒くらいで725MBのテキストファイルが出来上がりました。 頭の部分しか確認はできませんでしたが、(テキストエディタが読み込むのに時間がかかりすぎるため)とりあえず正常に書けているようでした。 利用可能なメモリの状況をモニタしていましたが、開始前は670MB程度ありましたが、ぐんぐん下がっていきましたが、170MB程度になった時点でそれ以上下がることはなくなりました。 どうやらFSOはそのあたりを考慮してくれるようです。
他の方法が見当たらなければ、お試しください。 すべてのデータをテキストとして出していますので、もしかしたら改造が必要かもしれません。 ただ、このCSVファイル他のdbにインポートさせる以外には使いようがないですね。 開こうにもワードパッドではいつまでたっても開けませんでした。
    • good
    • 0
この回答へのお礼

たびたびご回答いただいて大変ありがとうございます.
スクリプトは完璧なのですが,mdbファイルにハングルが含まれているのがネックとなっているようでTS.WriteLineの行でエラーになります.引数のstrOUTTextを"test"などの固定値に置き換えると無事終了するので,VBが多言語対応出来ていないのが原因だと推測しております.
お教えいただいたスクリプトが間違いなく最善の策だと思いますが,こちらの特殊事情で活用できず大変恐縮です.
教えてもらってばかりでなく,この点について自分でももう少し頑張って調べてみようと思います.

お礼日時:2007/09/12 21:04

No4はVBAしか使っていません(エクセルにデータを入れていません)ので、エクセルの行数が問題になることはないと思います。

    • good
    • 0

1、Baseでファイルを開いたあと、Calcの新規書類を作成。


2、Baseの書き出ししたいテーブル名の上で右クリック、コピーを選択。
3、Calcの新規書類に切り替えて、貼り付け。
4、保存するときにcsv形式を選択。

これで書き出せるはずです。実際にOpenOffice2.2で確認しました。詳しい手順はOpenOfficeのヘルプで「エクスポート」を検索してください。

データベースが大きいとメモリを大量に消費するでしょうから、あらかじめ仮想記憶を大きめに設定するか、もしくは十分なメモリを積んだマシンで作業しましょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます.
お教えいただいた方法を何度か試してみたのですが,うちのPCの実力を上回る苛酷な作業になっているようで,長時間だんまりを決め込んだ末に原因不明のエラー云々というメッセージを吐いて終了してしまいますorz
現在も比較的小さめのmdbファイルで試しているところですが,マシン自体をパワーアップしないとどんな方法でもダメっぽいです(汗)

お礼日時:2007/09/12 13:50

OpenOfficeで開けたのなら、csv形式でエクスポートできるような気がします。

ファイル保存または書き出しのメニューから、形式を選んで保存ができないか確認してみてください。

また、SQL Studioというフリーウェアでも同様のことが可能でしょう。
このソフトは大変高機能なので、データベースを扱う作業をするならぜひ持っておいた方がいいと思います。
http://kuronekosoft.nobody.jp/
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます.
私もOpenOfficeで開けたときはこれで解決できたと思ったのですが,自力ではどうすれば出力できるのかわからず,改めて http://oshiete1.goo.ne.jp/qa3334928.html で質問したのですが,いまだにご回答いただけないところを見るとちょっと甘く見ていたようです(あるいはBaseユーザが少ないのかも).
お教えいただいたツールも使ってみましたが難しくてわかりませんorz

お礼日時:2007/09/12 00:39

使ったことはないけれど、


http://cowscorpion.com/file/MDBView.html
自分でsqlを発行するものを作るのもそう難しくはない。
http://www.asahi-net.or.jp/~ef2o-inue/download/s …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます.
ツールでは「FROM句の構文エラーです」と表示され,マクロはSQL文の書き方が分からず挫折しましたorz
結局OpenOfficeをインストールしてBaseで開けたんですが,テキスト形式で保存するにはどうすればいいのやら(汗)

お礼日時:2007/09/11 07:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報