- ベストアンサー
Accessデーターエクスポート方法
- Access初心者のため、VBAを使用せずにデータをCSV形式で出力する方法について教えてください。
- 納期の範囲指定をしてエクスポートする方法や、状態フラグを使用して出力範囲を絞る方法など、自動エクスポートの実現方法を教えてください。
- データベースの内容や詳細についても教えていただけると助かります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは (1)出力するクエリの 納期の抽出条件にBetween [いつから?] And [いつまで?]を入力。 (2)出力するクエリを保存 (3)作成タブのマクロボタンをクリック (4)表示されていなかったら、デザインタブで「アクションカタログ」をクリック (5)デザインタブで「すべてのアクションを表示」をクリック (6)アクションカタログの「データのインポート/エクスポート」から 「テキストのインポート/エクスポート」をダブルクリック (7)テキストのインポート/エクスポートの変換の種類「区切り記号付きエクスポート」 (8)テキストのインポート/エクスポートのテーブル名「出力するクエリ名」 (9)テキストのインポート/エクスポートのファイル名「出力するcsvファイルのフルパス」 (10)テキストのインポート/エクスポートのフィールド名の設定は必要なら「はい」 (11)マクロを保存 (12)作成タブでフォームデザインボタンをクリック (13)表示されたフォームデザイン上に作成したマクロをドラッグ&ドロップ (14)フォームを保存 (15)フォームを開いてマクロボタンをクリックするとエクスポートが実行される こんな手順を試してみて下さい。
その他の回答 (3)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【補足】 >コピペすれば出来ますか? 次の条件をクリアすれば可能です。添付図がそれを示しています。 1、FileSystemObject、ADODBを利用する環境を整える。 その要領は、"FileSystemObject 参照"、"ADODB 参照" etcで検索を。 (*)FileSystemObjectの参照はコードの書き方を変更してもよい。 2、二つの関数を標準モジュールに追加する。 1、2が済めば、添付図のように【イミディエイトウインドウ】でテストできます。そうして、テストに成功したコードをイベントに書けば目的は達成されます。 PS、DBSelect関数について 例えが、0・-1は、No・Yes。通貨型は¥1,000と出力などと機能を追加することも可。 ' ------------------------------------ ' 列情報を For-Next で配列に代入する ' ------------------------------------ .MoveFirst For R = 0 To M C = -1 For Each fld In .Fields ' ================= ' Begin With: fld ' ----------------- With fld C = C + 1 If Not isConvert Then DataValues(R, C) = Nz(.Value, "") Else ' -------------------------- ' 列データを表示形式に変換 ' -------------------------- Select Case .Type Case adBoolean ' ブール型 DataValues(R, C) = IIf(.Value = -1, "Yes", "No") Case adChar, adVarChar ' 文字列型 DataValues(R, C) = Nz(.Value, "") Case adDBDate, adDBTimeStamp ' 日付型、日付/時刻型 DataValues(R, C) = .Value Case adSmallInt, adInteger ' 整数 DataValues(R, C) = FormatNumber(.Value, 0) Case adSingle, adDouble ' 浮動小数点型 DataValues(R, C) = FormatNumber(.Value, 2) Case adCurrency ' 通貨型 DataValues(R, C) = FormatCurrency(.Value, 2) Case Else DataValues(R, C) = .Value End Select End If End With ' --------------- ' End With: fld ' =============== Next fld .MoveNext Next R Else ReDim DataValues(0, 0) DataValues(0, 0) = "" strList = "" End If と、自作するってことは色々と出来るってことです。
- panacon
- ベストアンサー率31% (214/679)
coco--chanel さんへ クエリを選択してエクスポートを選ぶとき、エクスポート先を決めて次へをおすと、カンマ区切りや固定長などの設定をするダイアログボックスが出てくると思います。それを決めながら設定が終わるまで進んで、あとはOKボタンを押すだけのところまで行ったときに、左下の設定ボタンを押します。そうすると、エクスポートの詳細を設定する画面が出ます。それを入力してOKをすると、エクスポート定義として設定を保存できるようになります。えくぽーと定義を保存するときに名前をメモ帳に貼っておいて、定義を保存します。次にマクロでテキストを出力するものがありますので、これを選んで、出力先のパスとエクスポート定義を書いてマクロを完成させます。このマクロをフォームのボタンに関連付ければ、エクスポートボタンが完成します。出力先のパスは、あらかじめ出力先にテキストファイルを作ってみて、これのショートカットを作れば、そのプロポティをコピーすることで対応できます。
補足
回答ありがとうございます。 明日、この通りにやってみます!! ちなみに、このクエリに納期の範囲指定パラメーターが仕込んであっても問題ないと言う事でしょうか?
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Q、CSV出力。 A、二つの関数を用意しても実現できます。 関数の利用法と結果とは添付図を参照して下さい。 Public Function FileWrite(ByVal FileName As String, _ ByVal Text As String) As Boolean On Error GoTo Err_FileWrite Dim fso As FileSystemObject Dim txs As TextStream Set fso = New FileSystemObject Set txs = fso.CreateTextFile(FileName, True) txs.Write Text FileWrite = True Exit_FileWrite: Exit Function Err_FileWrite: MsgBox Err.Description & "(FileWrite)", vbExclamation, " 関数エラーメッセージ" Resume Exit_FileWrite End Function Public Function DBSelect(ByVal strQuerySQL As String, _ Optional colDelimita As String = ";", _ Optional rowDelimita As String = ";") As String On Error GoTo Err_DBSelect Dim R As Integer ' 行インデックス Dim N As Integer ' 行総数 - 1 Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim fld As ADODB.Field Dim strList As String ' 全てのデータを区切子で連結して格納 Set cnn = CurrentProject.Connection Set rst = New ADODB.Recordset With rst .Open strQuerySQL, _ CurrentProject.Connection, _ adOpenStatic, _ adLockReadOnly If Not .BOF Then N = .RecordCount - 1 .MoveFirst For R = 0 To N For Each fld In .Fields With fld strList = strList & .Value & colDelimita End With Next fld strList = Mid(strList, 1, Len(strList) - 1) & rowDelimita .MoveNext Next R Else strList = "" End If End With Exit_DBSelect: On Error Resume Next rst.Close Set rst = Nothing DBSelect = IIf(Len(strList) > 0, Replace(strList & "[END]", rowDelimita & "[END]", ""), "") Exit Function Err_DBSelect: MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelect)" & Chr(13) & Chr(13) & _ "・Err.Description=" & Err.Description & Chr(13) & _ "・SQL Text=" & strQuerySQL, _ vbExclamation, " 関数エラーメッセージ" Resume Exit_DBSelect End Function
補足
回答ありがとうございます これは、いきなりのハイレベルですね。 A、二つの関数を用意しても実現できます。 関数の利用法と結果とは添付図を参照して下さい。 とは、例えば既存の受注入力フォームなどにボタンを貼り付けてプロパティのイベントのクリック時に添付図をコピペすれば出来ますか? わたくし完全にVBAが無知すぎて何をおっしゃってるのか理解できていないようです。 せっかく書いて頂いたのに、すみません。
お礼
こんばんわ 分かりやすく細かに順をおっての説明有難うございました。 いろいろみなさんがおっしゃるように複雑な事から単純な事までためしたのですが...勉強不足を痛感致しました。 素人の私にも簡単に出来る方法が見つかりとても感謝しています。 有難うございました。