質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

2101閲覧

Access VBA Excelエクスポート

Yoshikun_0945

総合スコア224

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2020/01/07 03:10

##使用ソフト・プログラミング言語
使用ソフト:Access2016
言語:VBA

前提・実現したいこと

AccessVBAにてユーザーが作成したクエリのなかで、上から偶数位置にいるクエリをExcelファイルに出力する処理を記述いたしました。
出力した各ファイルの最後尾に新しいシートを追加して追加したシートに奇数位置のクエリの内容を出力したいと思います。

新しいシート作成までのコード

#####偶数位置のクエリを出力するコード

VBA

1'Qname()という配列にエクセルに出力するクエリの名称が格納されています。 2'Ename()という配列にエクセルファイル名(○○.xlsx)が格納されています。 3'出力するクエリ件数を求める【クエリ数/2】 4j = UBound(QName): j = j / 2 5For i = 0 To j 6'Excelファイルを作成する 7DoCmd.TransferSpreadsheet acExport, 10, QName(i * 2), Path & EName(i), True, "" 8Next

#####作成したExcelファイルの最後尾に新しいシートを作成する処理

VBA

1Dim AppObj As Object 'Excel.Applicationオブジェクトの宣言 2Dim WBObj As Object 'Excel.Workbookオブジェクトの宣言 3Dim WsObj As Object 'Excel.WorkSheetオブジェクトの宣言 4 5'※ Excelファイルが使用するAccessファイルと同じフォルダにある場合の表記 6Exf = Dir(Path & "Q*.xlsx") 7j = UBound(QName): j = j / 2 8For i = 0 To j 9'実行時バインディング 10Set AppObj = CreateObject("Excel.Application") 11'編集を実施するワークブックを開く 12Set WBObj = AppObj.WorkBooks.Open(Path & Exf) 13'Excelを画面上に表示する 14AppObj.Visible = True 15'編集するシートを先頭のシートに設定する 16WBObj.Worksheets(1).Select 17'最後尾に新しいシートを作成する 18WBObj.Worksheets.Add after:=WBObj.Worksheets(WBObj.Worksheets.Count) 19'新しいシート名を奇数位置のクエリ名称とする 20WBObj.ActiveSheet.Name = QName(i * 2 + 1) 21'Excelを保存して閉じる 22WBObj.Save 'ワークブックを保存する 23WBObj.Close 'ワークブックを閉じる 24'アプリを終了する 25AppObj.Quit 26'次のファイル名を取得する 27Exf = Dir() 28Next

###疑問点
ここまでは、記述できたのですが、奇数位置のクエリの内容を出力する場合は、RecordSetで奇数位置のクエリを開いて
奇数位置のクエリの内容 → 2次元配列 → Excelのシートという処理でよろしかったでしょうか?
それとも別のシンプルなやり方でしょうか?

今回の処理では、0番目と1番目、2番目と3番目、4番目と5番目…というExcelファイルにしたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

DoCmd.TransferSpreadsheet acExport, 10, QName(i * 2 + 1), Path & EName(i), True, ""

この1行を追加するだけで解決しました。
ありがとうございました。

投稿2020/01/07 04:41

Yoshikun_0945

総合スコア224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問