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
小さいファイルではできましたが、何万件というレコードでは実験していません。 (メモリ不足などの問題がおきないとは言い切れません。) 汎用性があるようには作っていませんので、複数のテーブルを出力されたい場合などはご自分で使いやすいように改造してください。
ご回答ありがとうございます.わざわざマクロまで作成していただいて恐縮です.
現在は#3さんの方法で試行中ですので,後ほどお教えいただいた方法を試してみたいと思います.
ただし,うちのPCが非力なのと,件数がExcelの制限を越える6万5千件以上あることは確実ですので,これらがネックになりうまく行かないかもしれませんorz
No.6
- 回答日時:
ついでにでっかいmdbファイルでも試してみました。
フィールド数80以上、レコード数40万件以上のリンクテーブルをテキストに書き出してみました。およそ4分30秒くらいで725MBのテキストファイルが出来上がりました。 頭の部分しか確認はできませんでしたが、(テキストエディタが読み込むのに時間がかかりすぎるため)とりあえず正常に書けているようでした。 利用可能なメモリの状況をモニタしていましたが、開始前は670MB程度ありましたが、ぐんぐん下がっていきましたが、170MB程度になった時点でそれ以上下がることはなくなりました。 どうやらFSOはそのあたりを考慮してくれるようです。
他の方法が見当たらなければ、お試しください。 すべてのデータをテキストとして出していますので、もしかしたら改造が必要かもしれません。 ただ、このCSVファイル他のdbにインポートさせる以外には使いようがないですね。 開こうにもワードパッドではいつまでたっても開けませんでした。
たびたびご回答いただいて大変ありがとうございます.
スクリプトは完璧なのですが,mdbファイルにハングルが含まれているのがネックとなっているようでTS.WriteLineの行でエラーになります.引数のstrOUTTextを"test"などの固定値に置き換えると無事終了するので,VBが多言語対応出来ていないのが原因だと推測しております.
お教えいただいたスクリプトが間違いなく最善の策だと思いますが,こちらの特殊事情で活用できず大変恐縮です.
教えてもらってばかりでなく,この点について自分でももう少し頑張って調べてみようと思います.
No.3
- 回答日時:
1、Baseでファイルを開いたあと、Calcの新規書類を作成。
2、Baseの書き出ししたいテーブル名の上で右クリック、コピーを選択。
3、Calcの新規書類に切り替えて、貼り付け。
4、保存するときにcsv形式を選択。
これで書き出せるはずです。実際にOpenOffice2.2で確認しました。詳しい手順はOpenOfficeのヘルプで「エクスポート」を検索してください。
データベースが大きいとメモリを大量に消費するでしょうから、あらかじめ仮想記憶を大きめに設定するか、もしくは十分なメモリを積んだマシンで作業しましょう。
ご回答ありがとうございます.
お教えいただいた方法を何度か試してみたのですが,うちのPCの実力を上回る苛酷な作業になっているようで,長時間だんまりを決め込んだ末に原因不明のエラー云々というメッセージを吐いて終了してしまいますorz
現在も比較的小さめのmdbファイルで試しているところですが,マシン自体をパワーアップしないとどんな方法でもダメっぽいです(汗)
No.2
- 回答日時:
OpenOfficeで開けたのなら、csv形式でエクスポートできるような気がします。
ファイル保存または書き出しのメニューから、形式を選んで保存ができないか確認してみてください。また、SQL Studioというフリーウェアでも同様のことが可能でしょう。
このソフトは大変高機能なので、データベースを扱う作業をするならぜひ持っておいた方がいいと思います。
http://kuronekosoft.nobody.jp/
ご回答ありがとうございます.
私もOpenOfficeで開けたときはこれで解決できたと思ったのですが,自力ではどうすれば出力できるのかわからず,改めて http://oshiete1.goo.ne.jp/qa3334928.html で質問したのですが,いまだにご回答いただけないところを見るとちょっと甘く見ていたようです(あるいはBaseユーザが少ないのかも).
お教えいただいたツールも使ってみましたが難しくてわかりませんorz
No.1
- 回答日時:
使ったことはないけれど、
http://cowscorpion.com/file/MDBView.html
自分でsqlを発行するものを作るのもそう難しくはない。
http://www.asahi-net.or.jp/~ef2o-inue/download/s …
ご回答ありがとうございます.
ツールでは「FROM句の構文エラーです」と表示され,マクロはSQL文の書き方が分からず挫折しましたorz
結局OpenOfficeをインストールしてBaseで開けたんですが,テキスト形式で保存するにはどうすればいいのやら(汗)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
家の中でのこだわりスペースはどこですか?
自分の家で快適に過ごすために工夫しているスペースはありますか? 例)ベランダでお茶を飲むためのカフェテーブル ゲーミングに特化したこだわりのPCスペース
-
【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
2024年は「名探偵コナン30周年」「涼宮ハルヒ20周年」などを迎えますが、 あなたが「もうそんなに!?」と驚いた○○周年を教えてください。
-
【お題】引っかけ問題(締め切り10月27日(日)23時)
【大喜利】 「日本で一番高い山は富士山……ですが!」から始まった、それは当てられるわけ無いだろ!と思ったクイズの問題
-
自分のセンスや笑いの好みに影響を受けた作品を教えて
子どもの頃に読んだ漫画などが その後の笑いの好みや自分自身のユーモアのセンスに影響することがあると思いますが、 「この作品に影響受けてるな~!」というものがあれば教えてください。
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
MDBファイルをCSV出力したい
Visual Basic(VBA)
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLSever 一括インポートについて
-
Wordの文章をExcelに内容ごとに...
-
Excelのデータ(数字)をテキス...
-
【Access】クエリで抽出...
-
VBA 複数のCSVファイルを一度...
-
AccessのマクロでCSVファイルを...
-
アクセス(ACCESS) インポート...
-
CSVファイルとテキストファ...
-
ISOファイルとMDSファイル
-
差し込み印刷の元データファイ...
-
エクセルで誰が今開いているか...
-
ファイルを開かずにマクロを実行
-
イーファンビューでwebpファイ...
-
生鮮MDシステムについて。
-
autocadが作業途中で読み取り専...
-
ccdファイルはどのようにして使...
-
Chromebookを使用しています。 ...
-
テキストデータでNULL?
-
変えてしまったファイル形式を...
-
ACCESSでデータ読み取り専用を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Wordの文章をExcelに内容ごとに...
-
【Access】クエリで抽出...
-
Excelのデータ(数字)をテキス...
-
SQLSever 一括インポートについて
-
VBA 複数のCSVファイルを一度...
-
アクセス2007でのインポートエ...
-
複数のメールファイルを1つの...
-
notepad++ で作成した文書を cs...
-
Excelでhtml形式のテキストを表...
-
多数のeml形式ファイルを1つの...
-
ACCESS複数テキストファイルを...
-
mdbをテキストに変換するツール...
-
ダブルクォーテーション囲いカ...
-
複数eml形式のBecky!への一括イ...
-
【AccessVBA】ダイアログで複数...
-
アクセスで小数点以下1桁まで...
-
エクセル2000で65536行を超える...
-
CSVファイルでの数字表記のエラー
-
アクセス(ACCESS) インポート...
-
複数のエクセルファイルをアク...
おすすめ情報