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

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

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

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

Access

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

Q&A

解決済

1回答

663閲覧

既存Excelファイルの指定したセルを起点にAccess上のテーブルをエクスポートしたい

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

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

Access

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

0グッド

0クリップ

投稿2023/05/08 02:11

実現したいこと

teratail回答者の皆様、いつもお世話になっております。

デスクトップにある"出力"というファイル名のExcelファイルのB4セルを起点に、Accessファイル上の"T_商品マスター"というテーブルをエクスポートするVBAを記述したいです。

前提

①既存のExcelファイルを開く
②B4セルを起点に"T_商品マスター"テーブルをエクスポート
③②でエクスポートしたテーブルの行列を入れ替える
④行列を入れ替えしたテーブルのすぐ下の行に別のクエリをエクスポートする
これらの操作をクリック時のイベントで行うフォームを作成しています。
今回の質問は②の部分です。

https://teratail.com/questions/jyd9x6poxianrs
こちらの質問で、AccessからExcelを操作する方法があるとのことで、そちらの方法を見よう見まねで試している途中です。

どうか完成まで皆様にお力添え頂きたいです。

発生している問題・エラーメッセージ

該当のソースコード

Private Sub 出力_Click()

Dim ExApp As Object Set ExApp = CreateObject("Excel.Application") ExApp.Visible = True Dim DesktopPath As String, FilePath As String, WSH As Variant Set WSH = CreateObject("Wscript.Shell") DesktopPath = WSH.SpecialFolders("Desktop") FilePath = DesktopPath & "¥出力.xlsx" ExApp.workbooks.Open FileName:=FilePath With ExApp.workbooks(ExApp.workbooks.Count) .Sheets(1).Cells(4, 2) = "aaaaa" .Save End With Set ExApp = Nothing Set WSH = Nothing

End Sub

https://officevba.info/accessvba-exceloperation/
こちらのリンクのサンプルコードを実際に記述してみて、ExcelのB4セルにaaaaaと入力されるところまでは確認しました。この入力部分を"T_商品マスター"テーブルをエクスポートした内容にしたいのですが、レコードセット?等を扱った経験がなく、どのように記述すればよいか分からないです。

試したこと

上記コードを記述しました。

補足情報(FW/ツールのバージョンなど)

MicrosoftAccess2019

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

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

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

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

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

guest

回答1

0

ベストアンサー

やり方を変えて実現できました。

参考サイトは以下です。
https://tsware.jp/tips/tips_432.htm
https://officevba.info/accessvba-exceloperation/

Private Sub 出力_Click()

Dim dbs As Database Dim rst As Recordset Dim intRow As Integer Dim intCell As Integer Dim xls As Object

'商品マスターテーブルを開く
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("T_商品マスター")

'Excelオブジェクトを生成
Set xls = CreateObject("Excel.Application")
With xls
'画面の再描画を抑止
.ScreenUpdating = False
'新しいブックを追加
.workbooks.Open "C:\Users\RY202\Desktop\出力.xlsx"
'4行目に列見出し(フィールド名)をExcelに出力
intRow = 4
For intCell = 2 To 5
.Cells(intRow, intCell).Value = rst.Fields(intCell - 2).Name
Next intCell

'各レコードをExcelに出力
.Range("B5").CopyFromRecordset rst

'列幅のジャストフィット
.Cells.Select
.Cells.EntireColumn.AutoFit

'A1セルだけを選択状態にする
.Range("A1").Select

'画面の再描画を元に戻す
.ScreenUpdating = True

'Excelを可視状態にする
.Visible = True

End With
Set xls = Nothing

End Sub

投稿2023/05/08 06:02

編集2023/05/08 06:03
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問