お世話になっております。
やりたいことは、「クエリで抽出したIDごとに別のエクセルブックに保存したい」です。
以下は自分で作ってみたのですが、ここからどうしていいのかわかりません。
そもそも自作コードの考え方がおかしければ修正いただけないでしょうか。
よろしくお願いいたします。
for i = 1 to 10
strSQL = "SELECT [T台帳].* "
strSQL = strSQL & "FROM [T台帳] "
strSQL = strSQL & "WHERE ((([T台帳].ID)="
strSQL = strSQL & i & "));"
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
Set xls = CreateObject("Excel.Application")
With xls
.workbooks.Add
For j = 0 To rs.Fields.Count - 1
.cells(1, j + 1) = rs(j).Name
Next j
.cells(2, 1).copyfromrecordset rs
.Visible = True
' ここでできたエクセルを、名前を自動でつけて(id名でよい)、指定のパスに保存したい
End With
Set xls = Nothing
Next i
id名
を取得しておいて、保存はExcel VBAでの記述をそのまま使えばいいですねコード全体に関しては
ループ内でやるべき(何度も繰り返す必要がある)処理か?
With ~ End With
内の省略記述は正しくオブジェクトが指定できているか?あたりを見つめてみるといいと思います
コードミスを見落としてました
openに対してcloseがないですね
なくても動くといえば動くんですが(たいていエラーも起きないでしょう)だいぶ良くないので指摘しておきます
回答ありがとうございます。
やりたいことができるようになりました。
しかし、このあたりのコードをまだいじっている途中なので、またこの続きに質問することがあるかもしれません。その時は、お時間がありましたら、よろしくお願いします
ご指摘ありがとうございます。エラートラップのほうにまぎれて入っていました。
今回はありがとうございました。
予定通りの作業ができるようになりました。
補足
id名
変数を作らなくても、端にで、動くと思われます
変数に置くメリットとしては、rsのopen時間を減らす、ファイルの存在チェック(ファイル名の変更)ができるようになるなどです
書き出しなのでフィールドの存在チェックは不要でした