• ベストアンサー

Access csvファイルで出力したい

いつもお世話になっています。 フォームにボタンを作成して、指定したフォームをExcelファイルで保存しています。 これをcsvファイルで出力に変更したいのです。(フルパスではない方法) Private Sub Eccelで保存_Click() DoCmd.OutputTo acOutputForm, "活動記録", acSpreadsheetTypeExcel9 End Sub お力添えをお願いいたします。

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

  • ベストアンサー
  • a_ka_
  • ベストアンサー率16% (1/6)
回答No.5

そうしましたらコードで記載する場合は >DoCmd.TransferText acExportDelim, , "活動記録", "c:\活動記録.csv", True 上記のように記入していらっしゃったかと思いますが、"活動記録"を"[クエリ名]" ⇒DoCmd.TransferText acExportDelim, , "クエリ名", "c:\活動記録.csv", True へ変更すればcsvファイル出力は可能かと思います。 ただ、上記のような記載だと任意の出力先指定やファイル名は選択できません。 下記URLで名前を付けてファイルの保存が載っていますので参考にして見てください。 http://www.accessclub.jp/samplefile/samplefile_212.htm

suzupen
質問者

お礼

回答いただきありがとうございます。 >⇒DoCmd.TransferText acExportDelim, , "クエリ名", "c:\活動記録.csv", True >へ変更すればcsvファイル出力は可能かと思います。 出来ました!!クエリ名にするとはまったく考え付きませんでした。 参考のURLもありがとうございます。 さっそくサンプルプロシージャをコピーペーストして試していますが、 標準モジュールの下記のところで「ユーザー定義型は定義されていません」と コンパイルエラーが表示されます。 'Excel2000のオブジェクト変数を宣言します。 Dim objXLS As New Excel.Application こちらは新しい質問で教えていただきたいと思います。 どうぞよろしくお願いいたします。

その他の回答 (4)

  • a_ka_
  • ベストアンサー率16% (1/6)
回答No.4

出力したい「活動記録」はテーブル名でしょうか?フォーム名でしょうか? もしフォーム名である場合は「活動記録」が繋がっているテーブル名は 存在しますか?(クエリで表示元のデータを引っ張っているならクエリ名) 活動記録が存在するテーブル、もしくはクエリで右クリックをしAccessの標準機能の 「エクスポート」にてcsvファイル出力は可能ですか? ご確認できるようであればご確認下さい。

suzupen
質問者

補足

回答いただきありがとうございます。 「活動記録」は、フォームです。 元になるクエリを >右クリックをしAccessの標準機能の 「エクスポート」にてcsvファイル出力 は可能でした。 これをヒントにまた違う方面から考えてみます。 お気づきのことがあれば教えてください。 どうぞよろしくお願いいたします。

  • a_ka_
  • ベストアンサー率16% (1/6)
回答No.3

横から失礼致します。 >"c:活動記録.csv"の変更の仕方がわかりません。 と記載がありますが「c:」の次に\(エンマーク)がないのですが これは記載もれですか?それともコードからそのままコピペしましたか? 確認してみてください。 やりたい内容は、フォーム上にファイル出力用のボタンを配置し ボタン押下で該当のテーブルまたはクエリの内容をcsvファイルに出力。 ということでよいのでしょうか? その際、出力先の指定を任意で行いたいということでしょうか? 出力先の指定を任意という場合はファイル名は固定のものですか? それともダイアログにて出力者によって任意のファイル名をつけさせたいのですか? 最後に、Accessは2000か2002か2003ですか?

suzupen
質問者

お礼

申し訳ありません、補足です。 Accessのバージョンは2003です。ただ今後2007以降に移行する可能性があります。

suzupen
質問者

補足

回答いただきありがとうございます。 >c:」の次に\(エンマーク)がない お恥ずかしい、抜けていました。。。 そこで C:\Documents and Settings\watanabe\デスクトップ\活動記録.csv としてみましたがエラーになりました。 >やりたい内容は、フォーム上にファイル出力用のボタンを配置し >ボタン押下で該当のテーブルまたはクエリの内容をcsvファイルに出力。 >ということでよいのでしょうか? >その際、出力先の指定を任意で行いたいということでしょうか? >その際、出力先の指定を任意で行いたいということでしょうか? >それともダイアログにて出力者によって任意のファイル名をつけさせたいのですか? まさにその通りです。 現在、上記の操作をExcelファイルへ出力していますが、こちらは問題ありません。 何故csvファイルではエラーになるのか困惑しています。 アドバイスよろしくお願いいたします。

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

こちらでは、エラーになりません。 カレントディレクトリはどこになっているでしょうか? Vista以降はC:\やC:\program Files内にはユーザーファイルを直に書き込めません。 データベースファイルをユーザーディレクトリに移動して実行してみていただけませんか。

suzupen
質問者

補足

再度の回答ありがとうございます。 カレントディレクトリはデスクトップに置いたままで操作しているのですが、 どうしてもエラーになります。 他にも何か原因があってできないのかもしれません。 別の方面からも原因を探ってみます。

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

http://www.geocities.jp/cbc_vbnet/kisuhen/docmd.html#transfertext Docmd の Transfertext メソッドかなあ。filenameは相対パスで書けるはず。

suzupen
質問者

お礼

早々にお返事ありがとうございます。 下記の状態で動かしてみましたが、コードエラーになります。 DoCmd.TransferText acExportDelim, , "活動記録", "c:活動記録.csv", True ファイル名、パスは書き出す人が決められるようにファイルに出力画面を表示したいのですが "c:活動記録.csv"の変更の仕方がわかりません。 もしくは、何か足りないのでしょうか。 どうぞアドバイスよろしくお願いいたします。

関連するQ&A

  • Access 抽出したフォームをファイル出力

    いつもお世話になっています。 フォームにボタンを作成して、指定したフォームをExcelファイルで保存しています。 これまではクエリに直接抽出条件を入力し、それをフォームにしていました。 条件が増えたので、読み込みのイベントで抽出(入社年度、部署名)を指定して フォームで抽出しています。そこからのレポートもフォームも抽出結果どおりです。 ただすべての内容がExcelファイルに出力されてしまいます。 抽出した内容だけをExcelファイルに出力するにはどうしたらいいでしょうか。 Private Sub Eccelで保存_Click() DoCmd.OutputTo acOutputForm, "活動記録", acSpreadsheetTypeExcel9 End Sub お力添えをお願いいたします。

  • ACCESS 2000でのExcel出力

    ACCESS 2000でExcel出力時に下記のソースで出力しています。 出力先をユーザーに選択させたい(Windowsでファイル保存時に出てくるやつみたいに)のですが、どのような方法がありますか? Private Sub 集計結果_Click() DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, _ "クエリA", "c:\集計.xls" End Sub 宜しくお願いします。

  • ACCESSのテーブルをCSVファイルに

    こんにちは。 ACCESSテーブル内のフィールド値をカンマ付きのテキストファイルまたは CSVファイルで出力したいのですがなにか良い方法はないのでしょうか? ちなみにDoCmd.TransferTextだのDoCmd.OutputToを試してみたので すが、うまくいきませんでした。 よろしくお願いします。

  • ACCESSのテーブルへCSV形式のファイルを

    お世話になります。 ブランドテーブルへJドライブのルート内のCSV形式のファイルをインポートのため Private Sub インポート_Click() DoCmd.TransferText acImportDelim, , ブランド, j: ブランド.TXT End Sub で実行すると このアクションまたはメソッドを実行するには、「TableName/テーブル名因数が必要です。 とメッセージが帰ってきます。 これが解決すると インポートするCSVファイル6個ですが、ワンクリックで終わります。 宜しくお願いします。

  • ACCESSデータをEXCELに出力したい。

    ACCESSでフィルタを使って複数項目(空欄の箇所がある場合もあり)を抽出したデータ(サブフォームに表示)だけをEXCELに出力したいのですが、下記のコードではすべてのデータが出力されてしまいます。 ------------------------------- Private Sub 出力_Click() DoCmd.OutputTo acOutputQuery, "Q_出力", acFormatXLS End Sub ------------------------------- 情報が少なかったらすみません。 よろしくお願いいたします。

  • Access CSVファイルインポート時にタイトルを省く

    毎日送られてくる会員データ(CSVファイル)を Accessで管理しようと考えております。 そのとき、先頭のタイトルを省いてインポートしたいのですがどのようにすればいいのでしょうか。 現在、フォーム上からCSVファイルを選択し「実行」コマンドを クリックするとインポートするようにしているのですが 一行目のタイトルを省く方法がわかりません。 Private Sub 実行_Click() TextConv Me.テキスト1, "インポート_定義", "T_会員データ" End Sub よろしくお願いします。

  • アクセスフォームのサイズの調整について

    一つは全画面表示(Maximize)で開きもう一つは普通の表示(Restore)で開くには? フォーム1とフォーム2があります。画像をご覧ください。 フォーム1は Private Sub Form_Load() DoCmd.Maximize End Sub で、 フォーム2は Private Sub Form_Load() DoCmd.Restore End Sub としてます。 フォーム1にコマンドボタンを設置して、 Private Sub フォーム2を開く_Click() DoCmd.OpenForm "フォーム2" End Sub として、フォーム2を開くのですが、 フォーム2が開くとフォーム1まで、元の大きさに戻ってしまいます。 行いたいことは、 フォーム1は全画面表示、フォーム2は、ノーマルな表示(全画面でも最小化でもない) にしたいのですが、不可能なのでしょうか?

  • Access csvファイルの取り込み

    Access2021 2箇所の保存先の違う所からcsvファイルの取り込みについて伺います。 csv取り込みボタンは、2つ用意しています。 1つ目のボタンに、コード記述して動作確認は正常に動作して他のボタンも正常に動作。 2つ目にのボタンに、csvの格納パス名のみ変更後コード記述して動作確認したら全てのボタンが反応しなくなりました。 動作としては、削除クエリでテーブルのデータを削除してから、指定したフォルダからcsvファイルを選択して取り込ます。 同じテーブルを使用して、格納先の違うcsvファイルを使用する操作になります。 コードは、以下の通りです。 ①ボタン1 Private Sub コマンド61_Click() '削除クエリ実行 DoCmd.SetWarnings False DoCmd.OpenQuery "テーブルデータ削除" DoCmd.SetWarnings True Dim msg As String msg = getFilePicker If msg = "" Then Exit Sub On Error GoTo err_sample DoCmd.TransferText acImportDelim, , "インポート先テーブル名", msg, True MsgBox "インポートが終了しました。", vbInformation + vbOKOnly, "処理完了" Exit Sub err_sample: Select Case Err.Number Case 3011 MsgBox "ファイルが見つかりません。処理を終了します。" Case Else MsgBox Err.Number & ":" & Err.Description End Select End Sub Function getFilePicker(Optional dTitle As String = "ファイル選択") '2003以降 Const msoFileDialogFilePicker As Integer = 3 Dim fDlg As Object Set fDlg = Application.FileDialog(msoFileDialogFilePicker) fDlg.Title = dTitle fDlg.InitialFileName = "csvインポートデータのフォルダパス名①" fDlg.AllowMultiSelect = False fDlg.Filters.Clear fDlg.Filters.Add "すべてのファイル", "*.*" fDlg.Filters.Add "CSV ファイル (*.csv)", "*.csv" fDlg.FilterIndex = 1 If fDlg.Show Then getFilePicker = fDlg.SelectedItems(1) Else getFilePicker = "" Me.Refresh End Function ②ボタン2 Private Sub コマンド62_Click() '削除クエリ実行 DoCmd.SetWarnings False DoCmd.OpenQuery "テーブルデータ削除" DoCmd.SetWarnings True Dim msg As String msg = getFilePicker If msg = "" Then Exit Sub On Error GoTo err_sample DoCmd.TransferText acImportDelim, , "インポート先テーブル名", msg, True MsgBox "インポートが終了しました。", vbInformation + vbOKOnly, "処理完了" Exit Sub err_sample: Select Case Err.Number Case 3011 MsgBox "ファイルが見つかりません。処理を終了します。" Case Else MsgBox Err.Number & ":" & Err.Description End Select End Sub Function getFilePicker(Optional dTitle As String = "ファイル選択") '2003以降 Const msoFileDialogFilePicker As Integer = 3 Dim fDlg As Object Set fDlg = Application.FileDialog(msoFileDialogFilePicker) fDlg.Title = dTitle fDlg.InitialFileName = "csvインポートデータのフォルダパス名②" fDlg.AllowMultiSelect = False fDlg.Filters.Clear fDlg.Filters.Add "すべてのファイル", "*.*" fDlg.Filters.Add "CSV ファイル (*.csv)", "*.csv" fDlg.FilterIndex = 1 If fDlg.Show Then getFilePicker = fDlg.SelectedItems(1) Else getFilePicker = "" Me.Refresh End Function ご教授の程、宜しくお願い致します。

  • AccessのフォームをExcelに出力

    いつもお世話になっております。 現在、Access2003でDBを作成中です。 "テーブル1"をパラメータクエリで抽出します。"クエリ1"。 そのクエリを基にフォームを作成しています。"フォーム1"。これは抽出して印刷したり、Excelに出力するために作成しました。レポートではなく、フォームにした理由は、コマンドボタン等を配置できることからです。 Excelに出力する際のVBAでつまづいてしまいました。 DoCmd.OutputTo acOutputForm, "フォーム1", acSpreadsheetTypeExcel9 これで問題なく出力できています。が、、、 Access2007の一部のPCでこれを実行するとエラーが出ます。 原因は"OutputTo"が含まれているとエラーになるようです。 ちなみにエラーは「現在出力しようとしているオブジェクトの形式は無効です。」 「2007 Office スイート Service Pack 2」こちらをインストールすると良いそうなのですが、だめでした。 WindowsXP、Office2007はこのVBAだとエラーになります。 WindowsVista、Office2007は正常に使えました。 PCの何か設定?と考えたりもしたのですが、はっきりとした原因がわからないのでは、他の人にDBを使っていただけないので、エラーにならないVBAでいきたいです。 もうひとつ、 mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "フォーム1", mFileName こちらのVBAはクエリの出力だとうまくいくのですが、フォームだとだめでした。 クエリから抽出して保存すれば良いのですが、理想はこの形です。 1.フォーム1を開くと「担当者を入力」とパラメータクエリが働き、抽出結果をフォーム1に表示される。 2.[出力]ボタンを押すと、ダイアログボックスが開いてファイル名を指定して保存する。または、ダイアログボックスが開かなくても名前を指定できれば良いです。最悪、指定できなくても良いですが、原因となる、"OutputTo"を避けたVBAでいきたい。 3.mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "クエリ1", mFileName これだと、1.でパラメータクエリで抽出結果をフォームに表示させて、2.で[出力]ボタンを押すと、また、パラメータクエリで抽出しなければならなくなるのでできれば避けたいです。 こちらの条件でご教授お願い致します。 また、WindowsXP、Office2007でエラーが出ましたので、これを解決する方法でも良いです。 よろしくお願い致します。

  • アクセスと同フォルダのCSVファイルをインポートしたい

    初心者で質問がわかりにくかったらすみません。 アクセスで、CSVファイルを取込みたいです。 下記のような構文で、取込む方法はわかりました。 Private Sub コマンド62_Click() DoCmd.TransferText acImportDelim, "請求書csvインポート定義", _ "請求書", "C:\Documents and Settings\user3\デスクトップ\受付番号アクセス\これ!\請求書.csv", True End Sub しかし、これだと常に取込むCSVファイルが同じ場所ではないと、いけないので、他のPCで使用するとエラーになってしまいます。 なので、他のPCに移した場合でも、いちいち構文を修正せずに、 この構文が作成してあるアクセスと同フォルダの”請求書.csv”というファイル名のCSVデータを取込めるような、構文が知りたいです。 お手数ですが、教えてください。