使用しているのはAccess2000です。
クエリのレコードを、1レコードずつcsvにエクスポートしたいのですが、マクロなどで自動的におこなうことはできないでしょうか?

例.
クエリ名:test
レコード数:100件
フィールド名:ファイル名
testクエリの1から100までのレコードを、1件ずつcsvへエクスポートする。保存する際は「ファイル名」を参照して、csvファイル名とする。100件分のこれらの作業をすべてマクロ等で自動化したい。

VBAの知識はほとんどありませんが、VBAによる回答でも構いません。

よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

回答を間違っていましたm(_ _)m


テーブル(DB)とテキスト(CSV)が、ごちゃまぜでした。
入力=テーブルなので LINE INPUT は間違いでした。

色々やり方はあるのですが、DBのアクセスする所が、初めてだと判り辛いと思いまして。。。(^^;
簡単に作ってテストしてみましたので、フォームのコマンドボタンのイベントに貼り付けて下さい。

(1)フォーム・コマンドボタン→イベント・クリック時「イベントプロシージャ」→下記、処理を貼り付け
(2)テーブル名、項目名などは、変更して下さい
(3)変更の必要な箇所は、※をコメントに入れています(念の為「※」で検索して下さい)

(4)VBエディタ:ツール→参照設定→「Microsoft DAO 3.6 Object Library」
 にチェックが入っている事をご確認下さい
(DBをDAOで使用:標準でチェック済みとは思います)

(5)不明な箇所が有りましたら、連絡用にこの投稿を閉じないで、再度コメントを入れて下さいネ
 見ていれば、すぐに返事をいたしますので。。。(^^)
 メールも届くので多分気が付くと思います

(6)とりあえずデータは、mdbがあるフォルダの「\DAT」に作成する様にしています


Private Sub コマンド1_Click()
--- ここから ---

Dim wCNN As Database 'データベース(テーブル)
Dim wREC As Recordset 'レコード
Dim wSQL As String 'SQL文等のワーク

Dim I_CNT As Integer 'I/P COUNT
Dim O_FNM As String 'O/P FILE NAME

'メッセージを表示
wSQL = "仕入先→CSVファイル" '※テーブル名
wSQL = wSQL & vbCrLf & vbCrLf & "作成しますか?"

If MsgBox(wSQL, vbYesNo + vbQuestion) = vbNo Then
Exit Sub 'いいえ-->終了
End If

'CSV定義(保存先・ファイル名の設定)
wSQL = Application.CurrentProject.Path & "\DAT\"

On Error Resume Next '念の為エラートラップ(削除時)

If Dir(wSQL, vbDirectory) <> "" Then
Call Kill(wSQL & "*.csv") '前回分は全て削除-->ごみ箱へ
Else
Call MkDir(wSQL) 'フォルダ作成
End If
O_FNM = wSQL & "FILE_???.csv" 'CSV出力先、???=あとで置換 ※ファイル名

On Error GoTo sCSV_OP_ERR '念の為エラートラップ

'接続
Set wCNN = CurrentDb

'テーブルを参照
wSQL = "SELECT [仕入先コード], [仕入先名]" '※[項目]数を増やす時
wSQL = wSQL & " FROM [仕入先]" '※[テーブル名]

Set wREC = wCNN.OpenRecordset(wSQL, dbOpenForwardOnly)

'(メイン処理)DBよりCSVを作成する
I_CNT = 0

Do Until wREC.EOF '※条件があればここへ or XXX=???
I_CNT = I_CNT + 1
'FILE NAME
'wSQL = Replace(O_FNM, "???", Format(wREC(0), "000")) '編集あり
wSQL = Replace(O_FNM, "???", wREC(0)) '編集なし
'CSV O/P
Open wSQL For Output As #1
Write #1, wREC(0), wREC(1) '※[項目]数を増やす時
Close #1

wREC.MoveNext '次レコードへ
Loop

'終了
wREC.Close: Set wREC = Nothing
wCNN.Close: Set wCNN = Nothing

Call MsgBox(Format(I_CNT, "#,##0") & "件作成しました")

Exit Sub

sCSV_OP_ERR:

Call MsgBox("(エラー発生)sCSV_OP" & vbCrLf & vbCrLf & wSQL, vbExclamation)
Call MsgBox(Err.Number & " " & Err.Description)
--- ここまで ---
End Sub
    • good
    • 0
この回答へのお礼

areare2005さん
すごい!思い通りにできました!
本当にありがとうございます!

コードの中に親切なコメントを書いていただけたので
カスタマイズも自分でできました。

----------------------------------------
ひとつつまづいたところがあったので、
ここに記しておきたいと思います。

>(4)VBエディタ:ツール→参照設定→「Microsoft DAO 3.6 Object Library」
>にチェックが入っている事をご確認下さい

このチェックを入れて実行したところ、
エラーが出てしまいました。
「13型が一致しません」とのこと。

参照設定の中に
「Microsoft ActiveX Data Object 2.1 Library」
というのにもチェックが入っており、
それの優先順位を下げたところ、
問題なく実行できるようになりました。
----------------------------------------

areare2005さん
本当にありがとうございました!

お礼日時:2005/11/22 14:00

ちょっと良く判らないのですが、1件1ファイルでファイル名に連番をはりCSV保存でしょうか?



(VBA.例)
入力=LINE INPUT
出力=WRITE、PRINT
繰返=Do...Loop

あとはヘルプを参考にしながらモジュールを組んでみましょう。
詳細が判らないので、マクロで対応できる処理かは、お答えしかねます m(_ _)m

この回答への補足

areare2005さん
おそらくareare2005さんのおっしゃってることで
だいたい間違っていないと思うのですが,
説明不足でしたので補足させていただきます。

以下のようなテーブルがあるとします。

---------------
No 名前
1 北海道
2 青森
3 秋田
---------------

この3つのレコードのうち,ひとつだけ取り出して,
csvファイルで保存したいと思います。

---------------
No 名前
1 北海道
---------------

csvファイルで保存する際に,
「No」にふられている番号を
ファイルネームにしたいと思います。

------------------------------
1.csv(中身は「1,北海道」)
------------------------------

これを3回繰り返し,レコード分すべてを
csvファイルにしたいと思います。

------------------------------
1.csv(中身は「1,北海道」)
2.csv(中身は「2,青森」)
3.csv(中身は「3,秋田」)
------------------------------

これら一連の作業を,
マクロもしくはVBAで自動化できる方法を
探していました。

VBAについてはほとんど知識がないのですが,
とりあえずareare2005さんの例を参考にして,
試してみたいと思います。

ありがとうございました。

補足日時:2005/11/21 22:54
    • good
    • 0

ikdxさんこんにちは



ACCESS使用経験ありなので回答出来ると思ったら
マクロで自動になのですね。

もしかするとご存知かもしれませんが
ACCESS CLUBというサイトがあります。
そこで検索、質問してみたら如何でしょうか?

ACCESSで困ったときはほとんどこのサイトで解決致しましたので・・・

参考URL:http://www.accessclub.jp/
    • good
    • 0
この回答へのお礼

ednanさん,ありがとうございます。
そのサイトでも調べてみたのですが,
どうもうまく解決できませんでした。
ただ,とても参考になりました。
今度Accessでわからないことがあったら
そちらで質問してみようと思います。

お礼日時:2005/11/21 22:53

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

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

Q作成したレコードセットのCSV出力の方法

test.csv とtest2.csvから作成したレコードセットをtest3.csvに出力したいのですが、
”指定した式は、いずれかの引数とデータ型が対応していません。”
とエラーが帰ってきます。

色々試したのですがうまくいきません、

作成したレコードセットをCSVファイルにエクスポートする方法を教えてください。

Private Sub コマンド6_Click()


Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset

Set CN = New ADODB.Connection

CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\;" & _
"Extended Properties='Text;HDR=YES'"

Set RS = CN.Execute("SELECT * FROM test.csv a LEFT JOIN test2.csv b ON a.tel = b.tel")

DoCmd.TransferText acExportDelim, , RS, "C:\test3.csv", True, ""



Set RS = Nothing
Set CN = Nothing


End Sub

test.csv とtest2.csvから作成したレコードセットをtest3.csvに出力したいのですが、
”指定した式は、いずれかの引数とデータ型が対応していません。”
とエラーが帰ってきます。

色々試したのですがうまくいきません、

作成したレコードセットをCSVファイルにエクスポートする方法を教えてください。

Private Sub コマンド6_Click()


Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset

Set CN = New ADODB.Connection

CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
...続きを読む

Aベストアンサー

#2です

解決されたという解釈で良かったのでしょうか。
(記述を見直しました)(前のものでも一応動くとは思います)

ただ、気がかりなのがCドライブ直下と言う事で・・・・
(私はそこには作らないというだけの話ですが)


「test1.csv」「test2.csv」のありかを、「D:\HOGE」と仮定します。
作成する「test3.csv」の場所を「E:\hogehoge」と仮定します。
「E:\hogehoge\test3.csv」が存在したらエラーとなります。

「D:\HOGE」を★★に、「E:\hogehoge」を☆☆で置換えて記述したとすると
(#2の記述をチョッと変更しています。
変な改行表示されるので、一度メモ帳等にコピー&ペーストして確認ください)


Dim CN As ADODB.Connection
Dim sSql As String

Set CN = New ADODB.Connection

CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=★★;" & _
"Extended Properties='Text;HDR=YES'"

sSql = "SELECT * INTO [test3.csv] IN '☆☆'[Text;FMT=Delimited;HDR=YES;IMEX=0;]" _
    & " FROM [test.csv] AS a LEFT JOIN [test2.csv] AS b ON a.tel = b.tel;"

CN.Execute sSql
Set CN = Nothing

※ この辺については、Web上のブログで見たような気が気ます。
(SQLで CSV出力指定記述とか・・・)

※  [test3.csv] の後の IN句の記述について、いろいろ確認を取られたらと思います。

#2です

解決されたという解釈で良かったのでしょうか。
(記述を見直しました)(前のものでも一応動くとは思います)

ただ、気がかりなのがCドライブ直下と言う事で・・・・
(私はそこには作らないというだけの話ですが)


「test1.csv」「test2.csv」のありかを、「D:\HOGE」と仮定します。
作成する「test3.csv」の場所を「E:\hogehoge」と仮定します。
「E:\hogehoge\test3.csv」が存在したらエラーとなります。

「D:\HOGE」を★★に、「E:\hogehoge」を☆☆で置換えて記述したとすると
(#2の記述をチョ...続きを読む

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

いつもお世話になっています。

フォームにボタンを作成して、指定したフォームをExcelファイルで保存しています。
これをcsvファイルで出力に変更したいのです。(フルパスではない方法)

Private Sub Eccelで保存_Click()
DoCmd.OutputTo acOutputForm, "活動記録", acSpreadsheetTypeExcel9
End Sub

お力添えをお願いいたします。

Aベストアンサー

そうしましたらコードで記載する場合は

>DoCmd.TransferText acExportDelim, , "活動記録", "c:\活動記録.csv", True
上記のように記入していらっしゃったかと思いますが、"活動記録"を"[クエリ名]"
⇒DoCmd.TransferText acExportDelim, , "クエリ名", "c:\活動記録.csv", True
へ変更すればcsvファイル出力は可能かと思います。

ただ、上記のような記載だと任意の出力先指定やファイル名は選択できません。
下記URLで名前を付けてファイルの保存が載っていますので参考にして見てください。
http://www.accessclub.jp/samplefile/samplefile_212.htm

QAccessのデータをテキストファイルで出力する方法を教えてください。

Accessのデータをテキストファイルで出力する方法を教えてください。

クエリで抽出したデータをテキストファイルに出力したいのですが、下記のような記述では""や,で区切られてしまいます。
DoCmd.TransferText acExportDelim, "", "クエリ名", "出力ファイル.txt"

フィールドごとに改行して出力する方法はないでしょうか?


<クエリ結果>
フィールド1  フィールド2  フィールド3
aaa      bbb      ccc

<出力テキストファイル>
aaa
bbb
ccc

Aベストアンサー

ADO の GetString メソッドを使って直に文字列を作って出力してみてはいかがでしょうか。
(GetStringのヘルプを参照してください)

列間の区切り、および行間の区切りに vbCrLf を指定します。
出来上がった文字列の最終には vbCrLf が付いているので、それを削除した文字列を出力します。


記述例)

Private Sub Sample()
  Dim rs As New ADODB.Recordset
  Dim vTmp As Variant
  Dim ffn As Integer
  Const sQueryName As String = "クエリ名"
  Const sOutputFileName As String = "C:\Hoge\HogeTest.txt" '出力ファイル名

  rs.Open sQueryName, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly
  If (Not rs.EOF) Then
    vTmp = rs.GetString(adClipString, , vbCrLf, vbCrLf)
  End If
  rs.Close

  If (Not IsEmpty(vTmp)) Then
    ffn = FreeFile
    Open sOutputFileName For Output As #ffn
    Print #ffn, Left(vTmp, Len(vTmp) - Len(vbCrLf))
    Close #ffn
  End If
End Sub

ADO の GetString メソッドを使って直に文字列を作って出力してみてはいかがでしょうか。
(GetStringのヘルプを参照してください)

列間の区切り、および行間の区切りに vbCrLf を指定します。
出来上がった文字列の最終には vbCrLf が付いているので、それを削除した文字列を出力します。


記述例)

Private Sub Sample()
  Dim rs As New ADODB.Recordset
  Dim vTmp As Variant
  Dim ffn As Integer
  Const sQueryName As String = "クエリ名"
  Const sOutputFileName As String = "C:\Hoge\H...続きを読む

Q【Access】クエリで抽出したデータをCSV形式でエクスポートできますか?

タイトルの通りなのですが、
クエリーで抽出したデータをcsv形式でエクスポートするには
どのようにすればいいのでしょうか?
Accessに慣れていなくて困っています、どなたか教えてください(>_<)

その後はいろいろ加工したいので、
最終的にはExcel形式で保存しなおそうと思っています。
初めからExcel形式でエクスポートすると、とても重くなるし、
いちいち「再計算」がかかってしまうので作業がやりづらいんです。。。

どなたかお力を貸してください。
よろしくお願いします!

Aベストアンサー

クエリをクリックし選択状態にしてメニューのファイルのエクスポートもしくはクエリを右クリックしエクスポートを選択すると保存する場所の選択するダイアログが出ますのでファイルの種類をテキストファイルを指定し保存するホルダとファイル名を指定します。
指定するとテキストエクスポートのウィザードが表示されますので順次進めていきエクスポート先のファイル名でパスとファイル名が表示されますのでcsvで保存するなら最後の.txtを.csvに変更しOKをクリックすればcsvで保存でします。

QAccessでSQL結果を直接csvに書き出すには?

Access2003,WinXP

お世話になります。
自作のSQLを書いて、結果をTransferTextで手軽にCSVにできないかと考えてこんなのを書いてました。
Dim strSql AS String
Dim strPath AS String
strSql = 自作SQL文
strPath = c:\test.csv
Docmd.TransferText acExportDelim, , strSql, strPath, True

しかし、TransferTextでは「テーブル」か「クエリ」名を直接書くように指示してあり、これだと動かない?んでしょうか。
SQLは300個くらい出力する必要があるため(クエリ300個作れば解決するのですが・・・)上のようなコードをループして動かしたいのですが、何か他の簡単な出力方法があるのでしょうか。
よろしくお願いいたします。

Aベストアンサー

Dim dbs As Database
Dim qdf As QueryDef
Dim strSql AS String
Dim strPath AS String
Dim i As Integer
Set dbs = CurrentDB
'準備。「適当なクエリ名」と言うクエリを作る
qdf = dbs.CreateQueryDef("適当なクエリ名","SELECT * FROM 何か適当なテーブル");
Set qdf = Nothing 'qdfを開放
'ループ
For i = 1 to 300
  strPath = "c:\test" & Format(i,"00#") & ".csv"
  strSql = 自作SQL文
  dbs.QueryDefs![適当なクエリ名].SQL = strSql
  Docmd.TransferText acExportDelim, , strSql, strPath, True
Next
dbs.Close 'dbsをクローズ
Set dbs = Nothing 'dbsを開放

Dim dbs As Database
Dim qdf As QueryDef
Dim strSql AS String
Dim strPath AS String
Dim i As Integer
Set dbs = CurrentDB
'準備。「適当なクエリ名」と言うクエリを作る
qdf = dbs.CreateQueryDef("適当なクエリ名","SELECT * FROM 何か適当なテーブル");
Set qdf = Nothing 'qdfを開放
'ループ
For i = 1 to 300
  strPath = "c:\test" & Format(i,"00#") & ".csv"
  strSql = 自作SQL文
  dbs.QueryDefs![適当なクエリ名].SQL = strSql
  Docmd.TransferText acExportDelim, , strS...続きを読む

QAccessからExcelへの条件付エクスポート

お世話になります。
Access2000で住所録を作成し、運用しております。
普段はデータをフリガナ、会社名、市町村で検索し、表示しているのですが
この時に使用した、検索条件をそのまま使って、得られたデータをExcelに
エクスポートしたいのです。
(検索は、サブフォームの一覧表示部に各検索条件でフィルタをかけるという方法で行っています。)
テーブル作成クエリなどいろいろ試してみたのですが、なかなかうまくいきません。
良い方法をご存知の方いらっしゃいましたら、よろしくお願いします。

Aベストアンサー

テーブル作成クエリで抽出したものをテーブルに出来たらあとはコードで出来ます。
ただし、
1.エクスポート先のEXCELファイルは既にある前提です。ここでは仮にC:\Windows\デスクトップ\Expo.xlsというファイルのDataという名前のシートににエクスポートするとします。

2.VBAでDAOを使用しますが、2000の場合標準がADOになっていますので、ビジュアルベーシックエディターのツールメニューの参照設定からDAOの一番新しそうなヴァージョンのやつにチェックマークをつけておいてください。(ADOでやればいいのでしょうが私の知識が古いのでDAOしか使えないのです。)

3.抽出して作成したテーブルの名前はT_抽出Dataと仮にしておきます。
4.どれかのフォームにコマンドボタンを作成して、そのクリック時のイベントプロシージャに次のようなコードを書きます。

Private Sub ボタン_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim appExcel As Object
Dim Worksheets As Object
Dim I As Integer '行番号

Set db = CurrentDb
Set rs = CurrentDb.OpenRecordset("T_抽出Data")

'エクセルオブジェクト生成
Set appExcel = GetObject("C:\Windows\デスクトップ\Expo.xls")
Set Worksheets = appExcel.Worksheets("Data")

'作業中はエクセルシートを非表示
appExcel.Parent.Windows(appExcel.Name).Visible = False

With Worksheets

'データ追加ループ
Do Until rs.EOF = True
.Cells(I, 1) = rs.Fields("フィールド名")
.Cells(I, 2) = rs.Fields("フィールド名")
.Cells(I, 3) = rs.Fields("フィールド名")
.Cells(I, 4) = rs.Fields("フィールド名")
rs.MoveNext
I = I + 1
Loop

End With

appExcel.Parent.Windows(appExcel.Name).Visible = True

'エクセルブックを閉じる
appExcel.Close True

' オブジェクトの参照を解放
Set Worksheets = Nothing
Set appExcel = Nothing

MsgBox ("エクセルへの出力が終了しました")
End Sub

実は私も以前、教えてgooで同じような質問をして、別の人にこのコーディングを教えてもらいました。

テーブル作成クエリで抽出したものをテーブルに出来たらあとはコードで出来ます。
ただし、
1.エクスポート先のEXCELファイルは既にある前提です。ここでは仮にC:\Windows\デスクトップ\Expo.xlsというファイルのDataという名前のシートににエクスポートするとします。

2.VBAでDAOを使用しますが、2000の場合標準がADOになっていますので、ビジュアルベーシックエディターのツールメニューの参照設定からDAOの一番新しそうなヴァージョンのやつにチェックマークをつけておいてください。(ADOでやればい...続きを読む

QAccess テーブルを分割してエクスポートしたい

Access 2000のテーブルを指定した行数分に分割して、csv形式にエクスポートしたいと思っています。
例えば、100万件のデータを20万件×5ファイル、というイメージです(対象件数/分割件数ともに一定ではありません)

自分で考えてみたのですが、上位20万件をクエリ→削除クエリ→上位20万件をクエリ→削除クエリ・・・という
方法しか思い浮かばず、もっと簡単に出来る方法をお教えいただければと思います。
よろしくお願いします。

Aベストアンサー

#3です。

>考え方は同じでしょうか。
同じですね。

では、ループで読みながらコーディングでcsvに吐き出す
というのはどうでしょう?
カウンターで20万件ごとにファイル名を変えれば
良いかと思います。

あと別のmdbからリンクはって、ループで読みながら、TEBLEを20万件毎に作るとか。

QACCESSテーブルを RecordSet以外で1レコードづつ読む方法

Set inrec3 = CurrentDb.OpenRecordset("テーブル名")
でオープンして1レコードづつ読みたいのですが
上記の方法では、データが多いため(2万件ちょっと)
フリーズしてしまいます
そこでもっと単純にOpenする方法はないでしょうか
テキストファイルのオープンだと
今度は、フィールドの取り出しがやっかいかな
と思うのですが
よろしくおねがいします

Aベストアンサー

久しぶりにDAOを使ってみたので外しているかもしれませんが

Sub aaa()

Dim db As Database
Dim inrec3 As DAO.Recordset
Dim i As Long

Set db = CurrentDb
Set inrec3 = db.OpenRecordset("TEST")

Do Until inrec3.EOF

i = i + 1
If i Mod 100 = 0 Then
Debug.Print i, inrec3!XXX
DoEvents
If i = 30000 Then Exit Sub
End If

inrec3.MoveNext

Loop

inrec3.Close
Set inrec3 = Nothing

Set db = Nothing

End Sub

試しにやってみました。
200万件のレコードで30,000回ループ
何も問題ありませんでした。

気になったことですが、
(1)Set inrec3 = CurrentDb.OpenRecordset("テーブル名")
とせずに、"Select * From テーブル名 Where Field1 > 1000 " 見たいに
SQL文でくくれないでしょうか。
全レコードを読まなければならないのならば別ですが
(2)DoEventsを入れて見たらどうでしょうか。

久しぶりにDAOを使ってみたので外しているかもしれませんが

Sub aaa()

Dim db As Database
Dim inrec3 As DAO.Recordset
Dim i As Long

Set db = CurrentDb
Set inrec3 = db.OpenRecordset("TEST")

Do Until inrec3.EOF

i = i + 1
If i Mod 100 = 0 Then
Debug.Print i, inrec3!XXX
DoEvents
If i = 30000 Then Exit Sub
End If

inrec3.MoveNext

...続きを読む

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QACCESSでVBAから選択クエリの抽出条件を指定したい

選択クエリの抽出条件はデザインビューの「抽出条件」欄に直接条件式を書き込むのが普通だと思いますが、この条件式をVBAで記述することは出来るでしょうか?

DoCmd.RunSQL ではアクションクエリしか実行できないようだし、
DoCmsOpenQuery では引数に抽出条件を指定することが出来ないし困っています。

Aベストアンサー

おつかれさま~(^_^)
惜しいですね!
もう少しですね

さてさて、明日出張なので今日はたぶん最後のレスになってしまいますが、
ちなみに明日は返答できないのであしからず。。。

> Forms("サブフォーム").RecordSource = strSQL
駄目でしたか。。。

もし私が記載した内容で埋め込みのサブフォームを
利用しているのであれば
自分を参照する為に「Me」を使って

Me.埋め込みフォーム.Form.RecordSource = StrSQL
Me.埋め込みフォーム.Requery

に変更すれば動くと強く思います。
# 念じてます(^^)

ちなみに、
Me.
と打ち込んだ時点でオートコンプリート(名称あってるかな~)
機能が働いて参照できるオブジェクトが表示される
はずです。
その中にKojiさんが書いた埋め込みオブジェクトが
きっとあるはず
もしかすると"FormA"とか名前を付けたつもりでも
Visual Basic Editor君が気を利かせて
Form_formA
とかになってる場合があります。
最近やってないんでうろ覚えなんですが、こんな処を注意すれば大丈夫!

追伸
このコードって検索とかで使えますから
覚えておくときっと役に立ちますよ♪

おつかれさま~(^_^)
惜しいですね!
もう少しですね

さてさて、明日出張なので今日はたぶん最後のレスになってしまいますが、
ちなみに明日は返答できないのであしからず。。。

> Forms("サブフォーム").RecordSource = strSQL
駄目でしたか。。。

もし私が記載した内容で埋め込みのサブフォームを
利用しているのであれば
自分を参照する為に「Me」を使って

Me.埋め込みフォーム.Form.RecordSource = StrSQL
Me.埋め込みフォーム.Requery

に変更すれば動くと強く思います。
# 念じてま...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報