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

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

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

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

Access

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

Q&A

解決済

2回答

29029閲覧

AccessVBA AccessのデータをExcelに出力すると同時にセルの色を指定したり、幅を調整したい

nekomura

総合スコア132

VBA

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

Access

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

0グッド

0クリップ

投稿2016/05/26 01:42

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

Accessのテーブルデータやクエリのデータをエクセルに出力する際に、
セルの色を指定したり、文字列に合わせてセル幅を調整したり(文字化けしないように)、
ただデータを出力させるだけでなく、出力時点ですでに綺麗に整った資料のような状態にしたい
と思っています。

以前から合間に調べているのですが、ExcelVBAのセル操作関連のテクニックとしての情報は見受けられるのですが、
Accessのモジュール自体に記述できるようなソースが見つけられません。

このような方法がそもそもAccessVBAで可能なのかどうか、
また、可能なのであればどのような方法があるのかを有職者の皆様にご教示いただきたく存じます。

サンプルコードや、参考URLなどお教え頂けると幸いです。
はたまた**ExcelVBAと組み合わせる方法があるのか…**等、実現可能に向けてお知恵をお貸しください。

下記コードは、現在の時点でのシンプルな出力ロジックです。
ネットで調べたり、こちらでご教示いただいたものです。

Private Sub エクセル出力_Click() Dim qyrName As Variant qyrName = "Q売上一覧表" DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12, qyrName, "C:\****s\*****z\Desktop\Q売上一覧表.xls", True, "" MsgBox "[クエリ]を「Excelhogehoge.xls」に書き出しました" End Sub

何卒、よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

詳細は後ほどまとめられればまとめますが、基本的に、

  • AccessVBA内でExcelアプリケーションを起動しExcelの操作をする

ということが可能です。
原理上はExcelVBAでできる全てのことがAccessからできます。

例えばExcelVBAで、

ExcelVBA

1Activesheet.Range("A1").Value = "xxx"

としていたものをAccessVBAでは

AccessVBA

1Dim xlApp As New Excel.Application 2Dim WB As Excel.WorkBook 3 4Set WB = xlApp.Workbooks.Open([開くファイルのパス]) 5 6WB.Activesheet.Range("A1").Value = "xxx" 7 8・・・ 9 10WB.SaveAs [ファイル名] ' ← ファイル名はフルパスの文字列で与える 11WB.Close Flase 12 13xlApp.Quit 14 15Set WB = Nothing 16Set xlApp = Nothing

というように

  • Excelの起動
  • Excelでファイルを開く
  • 開いたファイルを操作する

という手順を追う必要があります。

取り急ぎ方針だけですが。

投稿2016/05/26 06:21

編集2016/05/27 02:53
kaz.Suenaga

総合スコア2037

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

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

nekomura

2016/05/26 06:41

Suenaga様 回答依頼にお応えくださりありがとうございます。 いつもすみません、迅速な対応にも併せて感謝いたします。 サンプルコードと回答内容を元に、試行錯誤してみます。 取り急ぎ御礼まで。
nekomura

2016/05/27 01:34

Suenaga様 お世話になっております。サンプルコード、また Range.CopyFromRecordsetの参考URLありがとうございます! 手順のおかげで、やりたいことは見えてきて実現できそうです。 追加で一点、ご教示を頂きたいのですが…。 サンプルコード、早速試させて頂きました。 エラーが出てしまったのでアドバイスをいただけないでしょうか。 'WB.ActiveWorkbook.Range("A1").Value = "xxx"←実行時エラー'438'オブジェクトは、このプロパティまたはメソッドをサポートしていません。 と、エラーが出てしまいました。 自分なりに、ActiveWorkbook→ActiveSheetと書き換えたところ(果たしてこれで合っておりますでしょうか…?)、当該エラーはなくなりましたが、 次の行にエラーが移り、 WB.SaveAs [Excel出力テスト] と記述した所に 実行時エラー'2465' 指定した式で参照されている'|1'フィールドが見つかりません が出てしまいました。〔〕内の記述が悪いのかなと調べたのですが、解決できませんでした。 申し訳ありませんがもう一度ご教示をいただけないでしょうか。 よろしくお願いいたします。
kaz.Suenaga

2016/05/27 02:49

> 'WB.ActiveWorkbook.Range("A1").Value = "xxx"←実行時エラー'438'オブジェクトは、このプロパティまたはメソッドをサポートしていません。 > と、エラーが出てしまいました。 > 自分なりに、ActiveWorkbook→ActiveSheetと書き換えたところ(果たしてこれで合っておりますでしょうか…?)、 すみません、そうです、合ってます。 > WB.SaveAs [Excel出力テスト] > と記述した所に > > 実行時エラー'2465' > 指定した式で参照されている'|1'フィールドが見つかりません > > が出てしまいました。〔〕内の記述が悪いのかなと調べたのですが、解決できませんでした。 あ、書き方が悪かったですね。 実際には WB.SaveAs "C:\保存ファイル名.xlsx" のようにファイル名のフルパスを文字列で与えます。
nekomura

2016/05/27 04:01

Suenaga様 ありがとうございます。 お手数をおかけいたしました。
guest

0

以前使用した方法ですが、AccessからExcelファイルを開いて、データを転記したことはあります。
その際には、あらかじめExcelでフォーマットを作成しておいて、出力時にフォーマットをコピーして
データを転記するという方法をとっていました。

AccessからExcelの操作ができるので、書式設定等もできるのではないかと思います。

参考のサイトをあげときます。
http://www.atmarkit.co.jp/ait/articles/1507/30/news025.html

投稿2016/05/26 01:59

tomo.ina

総合スコア357

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

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

nekomura

2016/05/26 02:30

tomo.ina様 早速のご回答に感謝いたします。 参考URL、ざっとですが拝読いたしました。 AccessのデータをExcelにベタッと貼る方法しか思いついておらずまた方法も知らなかったので、個別にエクセルにAccessからデータを追加していける方法など、とてもためになりました。 また、tomo様のご回答にあります >あらかじめExcelでフォーマットを作成しておいて、出力時にフォーマットをコピーして >データを転記するという方法 について大変興味が在るのですが、申し訳ない事に私の現在の知識では良く理解ができません。 可能であれば、その具体的な内容や方法をご教示いただけないでしょうか。 今一度のご回答いただければ幸甚です。 どうぞよろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2016/05/26 02:33

書類としての体裁が整ってデータだけがない「虫食い」状態のExcelをひな型として、保存するときにSaveAsで別名保存する形になると思われます。
nekomura

2016/05/26 03:07 編集

m6u様 お世話になっております。 SaveAsメソッドは知りませんでした。ありがとうございます。 なるほど、つまり、予め体裁を整えたエクセルを用意しておき、そこにAccessのデータを出力及び追加するロジックを書く…という認識でよろしいのでしょうか。 また、その際はSaveAsで保存するというモジュールを書いておき(Accessに)、それを出力モジュールから呼び出してそのひな型にデータを出力させる…というような流れですか? もし、ベテランの方から見てとんちんかんな内容でしたら申し訳ありません。 その点も併せてご指摘いただければ幸いです。 どうぞよろしくお願いいたします。
tomo.ina

2016/05/26 08:10

大まかにはm6uさんのおっしゃっていることで合っています。 Excel VBAで実行していることを Access VBAで実行しているという認識で よいと思います。 Access上でExcelの操作をするには参照設定で「Microsoft Excel 15.0 Object Library」に チェックを入れる必要があります。 Excelのバージョンによって「15.0」の数字は変わります。
nekomura

2016/05/27 04:03

>「Microsoft Excel 15.0 Object Library」 をチェックして、色々と試しています。 URLも大変参考になり、無事解決しました。 ありがとうございました、どうぞまたよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問