• ベストアンサー

mdbをテキストに変換するツールありますか?

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

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

  • ベストアンサー
noname#60992
noname#60992
回答No.4

エクセル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 小さいファイルではできましたが、何万件というレコードでは実験していません。 (メモリ不足などの問題がおきないとは言い切れません。) 汎用性があるようには作っていませんので、複数のテーブルを出力されたい場合などはご自分で使いやすいように改造してください。

KettaMachine
質問者

お礼

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

その他の回答 (5)

noname#60992
noname#60992
回答No.6

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

KettaMachine
質問者

お礼

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

noname#60992
noname#60992
回答No.5

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

  • celtis
  • ベストアンサー率70% (2272/3211)
回答No.3

1、Baseでファイルを開いたあと、Calcの新規書類を作成。 2、Baseの書き出ししたいテーブル名の上で右クリック、コピーを選択。 3、Calcの新規書類に切り替えて、貼り付け。 4、保存するときにcsv形式を選択。 これで書き出せるはずです。実際にOpenOffice2.2で確認しました。詳しい手順はOpenOfficeのヘルプで「エクスポート」を検索してください。 データベースが大きいとメモリを大量に消費するでしょうから、あらかじめ仮想記憶を大きめに設定するか、もしくは十分なメモリを積んだマシンで作業しましょう。

KettaMachine
質問者

お礼

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

  • celtis
  • ベストアンサー率70% (2272/3211)
回答No.2

OpenOfficeで開けたのなら、csv形式でエクスポートできるような気がします。ファイル保存または書き出しのメニューから、形式を選んで保存ができないか確認してみてください。 また、SQL Studioというフリーウェアでも同様のことが可能でしょう。 このソフトは大変高機能なので、データベースを扱う作業をするならぜひ持っておいた方がいいと思います。 http://kuronekosoft.nobody.jp/

KettaMachine
質問者

お礼

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

noname#60992
noname#60992
回答No.1

使ったことはないけれど、 http://cowscorpion.com/file/MDBView.html 自分でsqlを発行するものを作るのもそう難しくはない。 http://www.asahi-net.or.jp/~ef2o-inue/download/sub09_010_080.html

KettaMachine
質問者

お礼

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

関連するQ&A

  • Mdb変換

    Access の MDB 形式のデータファイルを SQL Server の MDF 形式のデータファイルに変換すべく、Management studioをインストールしました。 しかし、タスクから選べるはずの「データのインポート」がありません。 もしインストールする必要のあるServicePack等があれば教えてください。

  • MS-ACCESS VBA で外部のMDBに直接インポート!?できませんか?

    表現がおかしいとおもいますが、適切な表現が出来ませんでした。 まず、プログラムとデータ部にMDBを分けてあります。 テキストファイル(csv)や、Excelファイル(xls)の複数のデータをMDBに変換し、データ部(MDB)に保存したいのですが、何か良い方法はありませんか? 私が知っている範囲だと先ず、テキストファイル(csv)をカレントMDBにインポートし、外部のデータ部MDBにエクスポート。 これでも出来るのですが、直接外部のデータ部MDBにテキストファイル(csv)を書き込めないでしょうか?

  • MDBファイルをCSV出力したい

    こんばんは。 環境: OS:WINDOWS2000 VB6.0 sp5 アクセス2000 VBからアクセスのMDBデータをCSV形式で出力させようとしています。  mdbファイルが実行中にVBのexeを起動してcsvファイルを取得したいのですが、いい方法が分かりません。 閉じているMDBファイルのデータをCSVで出力することは可能です。  MDBファイルが開いているとexeを実行した時に「実行時エラー7866 データベースが開いています」というようなメッセージが出て処理ができません。 なにかいい方法はないでしょうか よろしくお願いいたします。

  • VBでCSVデータをMDB

    VBでCSVデータをMDB ACCESSがあれば簡単ですが、その環境が無い時用に CSVデータをアクセス2000形式の.mdbに移すプログラムを作りたいと思いました。 Visual Basic 2010 Expressをダウンロードしてあります。 ネットで手法を検索してみましたが、これはというサイトを見つけられず 大きな本屋で関連書籍を探してみましたが、逆の方法は見つかるのですが CSV→MDBは見つかりませんでした。 アドバイスや参考サイトなどありましたら 是非教えて頂きたいと思い質問しました。 宜しくお願いします。

  • mdbファイルが開けません。。

    相手から送られてきたメールに添付されているmdbファイルが開けません。 メールの本文には 「See attached file:○○(←ファイル名).mdb」とだけ表示されており、 添付ファイルを開くことが出来ません。 またOutlookでメールを開くと 「次の添付ファイルは安全ではないため、メールからのアクセスが削除されました」という メッセージも上部に表示されています。 こちらのPCにはMicrosoft office Access 2010が入っているのですが、 初めて聞くファイル形式の為、ファイルをどうやって開けばいいのかわかりません。 もし対処方法をご存知であれば、ご教示お願い致します。

  • テキスト ファイル ウィザートを表示させたい!

    EXCELでcsv形式のファイルを開くときに、テキストファイルウィザードを表示させたいのですが、どなたか方法わかりますか? tsv形式のファイルだとウィザードが立ち上がるんですが、csvだと立ち上がりません。 なぜウィザードが必要かというと、読み込みたいデータの中に何列か文字列で読み込みたいデータがあるからです。 EXCEL97です。 よろしくお願いします!!

  • テキストでは0が表示。アクセスだと消える

    すみません、助けてください。 テキストのCSVからアクセスへインポートした際、 テキスト表示では「012345」となっているものが、 アクセスにインポートすると、「12345」となってしまいます。元データは全部で6桁ありまして、例えば、「5」の表示は「000005」、「14」の表示は「000014」というように表示させたい場合、テーブルの設定はどうすればよいでしょうか。10万件のデータのため、エクセルでは入りきりません。 よろしくお願いいたします。

  • Access2000のMDBファイルをVBScriptやWSH?で

    Access2000のmdbファイルがあります。 VBScriptでテーブル名の一覧をテキストに落としたり、 特定のテーブルのレコードにあるデータに1.05を掛けて テキストにcsvの形で出力させたいのですが、何か良いサンプルはあるのでしょうか?

  • Accessテキスト日付変換

    NASのアクセスログを管理するDBを作成しておりますが、日付が下記形式となってます、日付型・日時型に簡単に変換する方法はありますでしょうか? ログ日付項目 Jan 15 16:50:03 一連の処理 1、NASのログファイルを、秀丸エディタで、CSV出力できるようマクロで整形保存 2、Accessでログ整形CSVファイルを、インポート ただし、ログの日付が、上記のテキストで吐き出されており、Access上で日付・時間として取扱いできません。 エクセルで、ログ整形csvを読み込むと自動で日付型として認識しますが、残念ながらAccessでは、日付型として認識してくれません。 簡単に変換できる方法があればご教授ください。

  • エクセル2003でテキストファイルへ変換

    エクセル2003を使用しております。 客先から送信されてきたエクセルファイルを テキストファイルへ変換する作業をしておりますが、 セル内に入力されたデータに関してはテキストファイルに 変換しても問題ないのですが、 オートシェイプで作図して、その中にテキストで入力された データに関しては、テキスト形式で保存してもなにも入っていませんでした。 オートシェイプの罫線は必要なく、中に入力されたテキストデータだけ 必要なので、現在は、1つ1つテキストデータを選択してコピーして、メモ帳にペーストいるので、時間が掛かってしまいます。 オートシェイプ内に入力されたデータも含めて、テキスト形式でファイルを保存することはできますでしょうか?

専門家に質問してみよう