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

A 回答 (3件)

参照に記入しましたが、最近、同様の質問がありました。

まぁ、なかなか検索も難しいですか・・・

DoCmd.TransferTextで、出来るハズなのですが???

とりあえず、マクロ全体を記入してみました。
テーブル名称/テキストファイルフルパスは、
環境に合わせて変更してください。

これで、出来ないとなると、私では、降参です(^^ゞ

Sub テキストファイル作成()
Dim 定義名 As String
Dim テーブル名称 As String
Dim テキストファイルフルパス As String
Dim 列見出し有無 As Boolean

定義名 = ""
テーブル名称 = "テーブル1"
テキストファイルフルパス = "c:\テーブル1.txt"
列見出し有無 = True

DoCmd.TransferText acExportDelim, 定義名, テーブル名称, テキストファイルフルパス, 列見出し有無
End Sub

※文字列フィールド1つだけ書き出したいなら、
そのフィールドだけのクエリを作って、
それをテキストファイルに書き出した方がよろしいかと。
テーブル名称に、クエリの名称をセットすればOK。

参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=65995
    • good
    • 0
この回答へのお礼

ありがとうございました。
あれから自分でも色々とやってみた結果、教えてくださった
やりかたでできました。

>※文字列フィールド1つだけ書き出したいなら、
>そのフィールドだけのクエリを作って、
>それをテキストファイルに書き出した方がよろしいかと。
>テーブル名称に、クエリの名称をセットすればOK。

トライしてみます。
ほんとにありがとう、でした。

お礼日時:2001/05/04 08:53

あ、そうそう↓下の補足ですが、「外部ファイルまたはデータベース」を選択後ファイルの保存をしますが、その時に「ファイルの種類」を選択しますよね。

それを「テキストファイル(*.txt,*csv,*.tab,*.asc)」にするんです。

どうでしょうか。

この回答への補足

実のところ、テーブル内の1つの文字列フィールドをカンマを
つけて連結している変数(の値)を、xxx.txtという風に出力す
るのが理想なんです。
でも、それってAccessでは無理なのだと思い、一旦ワークファイルに
書き出してそれを出力する、という事にしたわけです。

補足日時:2001/05/02 09:10
    • good
    • 0
この回答へのお礼

回答くださってありがとうございます。
できればVBAコードで処理させたいのです。
あるボタン(イベント)を押すとCSVファイルがあるフォルダ内に
出力される、という風に。

お礼日時:2001/05/02 08:11

普通にメニューバー「ファイル」→「名前を付けて保存/エクスポート」→「外部ファイルまたはデータベース」で出来ませんか?



あとは、ダイアログボックスの指示のとおりにカンマ付きにするか、フィールド名を最初にもってくるか指定していくだけなんですけど。
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

Qアクセス iif計算式 フィールド1 品名 フィールド2 単価 フィールド3 割り引きbit(1あり

アクセス iif計算式

フィールド1 品名
フィールド2 単価
フィールド3 割り引きbit(1あり、0なし)
フィールド4 割引後単価

上記なようなフィールドで割引きがあるに1が立った場合、フィールド4に一定の額100円をマイナスした額を返すには、iifではどのように書くのでしょうか?

Aベストアンサー

https://support.office.com/ja-jp/article/IIf-%E9%96%A2%E6%95%B0-32436ecf-c629-48a3-9900-647539c764e3

iif(条件式,trueの場合,falseの場合)
iif(割り引きbitが1か?,単価から100円マイナス,"")

Qアクセス 正味の算出 フィールド1 オートID フィールド2 顧客No フィールド3 商品名 フィー

アクセス 正味の算出

フィールド1 オートID
フィールド2 顧客No
フィールド3 商品名
フィールド4 単価

このようなテーブル構成で、顧客Noでグループ化して、IDのカウントした結果が1、2となります。
その際、1の場合は1、2の場合は0.5と別フィールドに記載する方法を教えて下さい。

Aベストアンサー

>本当はIDのカウントが2以下なら1を3以上なら999(数値で0、1以外なら何でも良いです)

IIf([IDのカウントした結果のフィールド名]>=3,999,1)

Qcsvファイルをtxtファイル変換時にカンマを表示する方法

csv形式でデーターを作成します。
例えばA1セルに「山田」、B1セルに「小林」となっていたとします
その後、このcsvファイルの拡張子をtxtに変更したときに、
作成されたtxtファイルでは、

山田,小林

となります。

作成されたテキストファイルで、「小林」の後にカンマが入るようにするにはどうしたらよいでしょうか。
よろしくお願いします

Aベストアンサー

たとえば Excel での csv ファイル保存ですか。(A1セル、B1セルというから表計算ソフトですね。)

できたファイルにあとから"," を付け加えるのなら、テキストエディタの
「置換」機能を使えばできます。
「(改行)」を「,(改行)」 に置換ができないのでしたら、元の表の各行の最後のセルの右のセルに「行の最後」という文字列を書いておいて、CSVファイルを作った後、テキストエディタで、「行の最後」という文字列を空の文字列に置き換えれば良いのです。
「メモ帳」などの単純なエディタでできます。

QCSVファイルを固定長のテキストファイルに変換する。

CSVファイルを固定長のテキストファイルに変換したいのですがEXCEL、ACCESSで変換してもノートパッドで見ると長さが換わっていたりします。
何か良い方法があったら教えてください。

Aベストアンサー

下記を参考にやって見てください。
エクセルのVBAで、下記を標準モジュールに貼りつけて、実行すれば出来ます。
項目数(フィールド数)が増えた場合どこを増やすか
判りますね。String * 7は桁長を指定してください。
文字列は左詰、数字は右詰にしてます。
MsgBoxの行は確認に使いました。
メモ帳で3項目の簡単な例を作り、テストして見てください。私がしたサンプル例
1,2,a
34,43,ccc
42,3,xcd
’---
Sub test02()
Dim x As String * 7
Dim y As String * 7
Dim z As String * 7
Open "c:\My documents\test3.csv" For Input As #1
Open "c:\My documents\test3.prn" For Output As #2
'-----
While EOF(1) = False
Line Input #1, s
a = Split(s, ",")
RSet x = a(0)
RSet y = a(1)
LSet z = a(2)
'MsgBox "=" & z & "="
u = x & y & z
' MsgBox "=" & u & "="
Print #2, u
Wend
'-----
Close #1
Close #2
End Sub

下記を参考にやって見てください。
エクセルのVBAで、下記を標準モジュールに貼りつけて、実行すれば出来ます。
項目数(フィールド数)が増えた場合どこを増やすか
判りますね。String * 7は桁長を指定してください。
文字列は左詰、数字は右詰にしてます。
MsgBoxの行は確認に使いました。
メモ帳で3項目の簡単な例を作り、テストして見てください。私がしたサンプル例
1,2,a
34,43,ccc
42,3,xcd
’---
Sub test02()
Dim x As String * 7
Dim y As String * 7
Dim z As String * 7
Open "c:\M...続きを読む

Qaccess レコードソースを選択し、DoCmd.OpenFormする方法

Select Caseのフレームで、レコードソース(クエリ)を選択し、
そのソースを基にDoCmd.OpenFormする方法がわかりません。
よろしくお願いします。
----------------------------------------------------
Dim strSource As String
Dim Q1, Q2 As String
Dim stDocName As String
Dim フォーム1 As Form
stDocName = "フォーム1"
Q1 = "クエリ1"
Q2 = "クエリ2"

Select Case フレーム1
Case 1
strSource = Q1
Case 2
strSource = Q2
End Select

'stDocName.RecordSource = strSource '-----この文はこの位置でよいのでしょうか?
DoCmd.OpenForm stDocName, acFormDS
----------------------------------------------------
クエリ1,クエリ2は基になるテーブルが違いますが、フィールドは同一にしてあります。
ですのでフォーム1には、対応するテキストボックスは用意してあります。

Select Caseのフレームで、レコードソース(クエリ)を選択し、
そのソースを基にDoCmd.OpenFormする方法がわかりません。
よろしくお願いします。
----------------------------------------------------
Dim strSource As String
Dim Q1, Q2 As String
Dim stDocName As String
Dim フォーム1 As Form
stDocName = "フォーム1"
Q1 = "クエリ1"
Q2 = "クエリ2"

Select Case フレーム1
Case 1
strSource = Q1
Case 2
strSource = Q2
End Select

'stDocName.RecordSo...続きを読む

Aベストアンサー

<1>

Private Sub コマンド0_Click()
  DoCmd.OpenForm "フォーム1", acFormDS
  Forms("フォーム1").RecordSource = "クエリ" & Me.フレーム1
End Sub

<2>

Private Sub コマンド1_Click()
  DoCmd.OpenForm "フォーム1", acFormDS, , , , , "クエリ" & Me.フレーム1
End Sub

' ------------------------------------------
' [フォーム1] ロード時にレコードソース設定
' ------------------------------------------
Private Sub Form_Load()
  If Len(Me.OpenArgs & "") > 0 Then
    Me.RecordSource = Me.OpenArgs
  End If
End Sub

まあ、好き好きでしょうが<2>がOKのバージョンであれば<2>がお勧めです。

<補足>

ただ、WhereCondition を使うのが一般的かと思います。
全く異なるクエリであれば、それぞれに対応したフォームを用意した方がシンプルでは・・・。

<1>

Private Sub コマンド0_Click()
  DoCmd.OpenForm "フォーム1", acFormDS
  Forms("フォーム1").RecordSource = "クエリ" & Me.フレーム1
End Sub

<2>

Private Sub コマンド1_Click()
  DoCmd.OpenForm "フォーム1", acFormDS, , , , , "クエリ" & Me.フレーム1
End Sub

' ------------------------------------------
' [フォーム1] ロード時にレコードソース設定
' ------------------------------------------
Private Sub Form_Load()
  If Len(Me.OpenArgs & "") > ...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報