[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.002 AccessからExcel出力

AccessからExcel出力

メルマガ発行内容

<AccessからExcel出力>

こんにちは、 AB型の変わり者Ken3です。 ^^^^^^^^^^^^^^^^ 今回も、質問もらったので、第2回目は、これで行こう。 /* * 1.廃刊になる予感かぁ、メモメモ */ 下記、チョイヤバメの指摘メール? In message "廃刊になる予感", Tさん wrote... >廃刊になる予感のするメルマガ >★読者投稿をやけに求める >ネタがないので、投稿に頼ろうとする気持ちはよくわかるが --- えっ、廃刊するメルマガにそんな傾向があったとは、 読者ネタに頼り過ぎるってのも危険なんだね。 でも、3回に1回ぐらいは、頼りますよKen3は(笑) *おいおい、それ以上だろって話しは置いといて、 /* * 2.質問内容 */ うれしい、第二回の質問は、 たらさん wrote... >Access2002からExcel出力 > >こんにちは。Access初心者たらです。 > >現在、Access2002にてデータを管理する物を作って、 >仕事で使用しているのですが、 >これまでは、抽出データをレポートに出力するだけでよかったのですが、E >xcelの定型フォーマットへ出力することになりました。 > >Helpでは、「TransferSpreadsheet」 メソッドで出来る様な事は記載されて >いるのですが、決まったフォーマットへデータの埋め込みは >出来そうも有りません。 >どのようにやったら、実現出来るのでしょうか? > >例 > >ID・・・・・・セルB4 >Name・・・・・セルC4 >Address ・・・セルB6 >TEL ・・・・・セルD7 > >こんな感じで、このデータはこのセルといった具合に >出力セルを指定したいのです。 > >どなたか、教えて頂けないでしょうか? >よろしくお願いします。 > Accessのバージョンも2002かぁ、、、 なんて時代遅れの私の感想は、置いといて、 手元にあるのがAccess97とAccess2000 を使ってやってみます。参考にして作ってくださいね。 /* * 3.ボタンウィザードを使って、Excel起動のプロシージャを作成する */ やりたいことは、 >例 > >ID・・・・・・セルB4 >Name・・・・・セルC4 >Address ・・・セルB6 >TEL ・・・・・セルD7 > >こんな感じで、このデータはこのセルといった具合に >出力セルを指定したいのです。 一言で言うと、指定したExcelの定型フォーマットに Accessに表示されているデータを出力(セット)したいみたいですね。 まずは、AccessからExcelの起動ですよね、 これは、簡単で、ウィザードを使ってサンプルを作れます。
コマンドボタンでアプリケーション、 Excelの起動を選択すると、下記のプロシージャを作成してくれます。 'Access97の場合 Private Sub コマンド0_Click() On Error GoTo Err_コマンド0_Click Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Visible = True 'Only XL 97 supports UserControl Property On Error Resume Next oApp.UserControl = True Exit_コマンド0_Click: Exit Sub Err_コマンド0_Click: MsgBox Err.Description Resume Exit_コマンド0_Click End Sub 何も手を加えないで、このボタンを押すとExcelが起動すると思います。 /* * 4.Excelのマクロ記録でファイルを開く動作をして、探る */ これだと、ただ、Excelのアプリケーションが起動しただけジャン。 私は、指定した定型のExcelファイルに値をセットしたいんですよ。。 まぁまぁ、あわてないでね。 次にExcelのマクロ記録でファイルを開く動作を記録します。 ここでは、 TYPE.xlsってファイルが定型ファイルでそれを開くことにします。 新規のExcelファイル作成し、 ツールのマクロ記録を選択します。

ファイルの開くを選択して、 TYPE.xls を開きます。 その後、慌てず騒がずに、マクロ記録の終了を選択します。
次に記録されたマクロをコピーします。 Alt+F11で編集画面が開きます。 (*ツールのマクロからでも行けます)

Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2002/11/14 ユーザー名 : K ' ' Workbooks.Open FileName:="D:\vba002\TYPE.xls" End Sub と記録されています。 なんだぁ、1行しか記録されて無いジャン、しょぼいね。 まぁまぁ、そんなこと言わないで、 Workbooks.Open FileName:="D:\vba002\TYPE.xls" これがExcelでブックを開く命令なんですよ。 そんなもん、 WorkbooksをOpen ファイル名はXXXXってそのまんまでツマラナイね。 /* * 5.頭にオブジェクト変数を付けるだけなんで・・・ */ そんな話しは置いといて、 この命令をAccessで作成したボタンに追加します。 Private Sub コマンド0_Click() On Error GoTo Err_コマンド0_Click Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Visible = True 'Only XL 97 supports UserControl Property On Error Resume Next oApp.UserControl = True '*1↓頭にCreateObjectで作成した変数を追加しただけ oApp.Workbooks.Open FileName:="D:\vba002\TYPE.xls" '^^^^ Exit_コマンド0_Click: Exit Sub Err_コマンド0_Click: MsgBox Err.Description Resume Exit_コマンド0_Click End Sub *1をみると簡単に、、 Excelで記録したマクロの頭に、 oAppと変数を追加しただけです。 実行すると、Excel起動後、 D:\vba002\TYPE.xls の定型ファイルが開きます。 うそ臭いけどホントに開いた。 こんなに簡単ならハヤク教えろよ。 で、次のデータセット方法は?これも簡単なんだろ?ハヤク教えろよ。 /* * 6.Range("A1").Value ="XXXX"でデータをセット */ いっきに行くと、 Private Sub コマンド0_Click() On Error GoTo Err_コマンド0_Click Dim oApp As Object Set oApp = CreateObject("Excel.Application") oApp.Visible = True 'Only XL 97 supports UserControl Property On Error Resume Next oApp.UserControl = True '*1↓頭にCreateObjectで作成した変数を追加しただけ oApp.Workbooks.Open FileName:="D:\vba002\TYPE.xls" '^^^^ '*2 Range("A1").Value ="XXXX" でデータをセットする oApp.Range("B4").Value = Me![ID] oApp.Range("C4").Value = Me![Name] oApp.Range("B6").Value = Me![Address] oApp.Range("D7").Value = Me![TEL] Exit_コマンド0_Click: Exit Sub Err_コマンド0_Click: MsgBox Err.Description Resume Exit_コマンド0_Click End Sub *2のように、 oApp.Range("B4").Value = Me![ID]とやると、 Accessのフォームの値をセルB4にセットできます。 なんか、簡単でしょ。 /* * 7.終わりの挨拶 */ なんとなく手抜きだったけど、どうでしたか? (手抜きなので、エラー処理とか、問題点がいっぱいです) 次回も気楽に書いていこうと思います。 何か質問などあったら、掲示板に書いてもらえるとうれしいです 掲示板 : http://www.ken3.org/cgi-bin/bbs/vba/wforum.cgi *質問に回答形式だとネタ考えないでいいので、ラクできます(笑) 三流プログラマーのKen3でした。

フィードバック

[Excel VBA SUM式の代入 .Formula ほか]
=SUM 式をセルに代入してみました。

AccessからExcel セルの範囲指定と結合
.MergeCells = Trueでセルを結合させてみました。
i = 10 '10列目の1行目と2行目を連結列にする
oApp.Range(oApp.Cells(1, i), oApp.Cells(2, i)).MergeCells = True
oApp.Cells(1, i) = "連結されたかなぁ?"



[No.7 MDBと同フォルダのExcelファイルを開く]
では、
CurrentDb.NameからMDBの位置を取りだし、
相対位置(同じパス)のExcelファイルを開きました。

[No.13 Excel セルに名前を付けてみる]
では、
Accessから名前付きのセルにデータをセットして、
変更が少ないシステムについて説明しました。

[No.14 Excel 隣のシートを参照して逃げる]
では、名前付きのセル参照から、一歩後退?一歩進んで、
データシートと表のシートを分け、データはデータシートにセット、
データシートを参照して表を作りました。

[No.48 AccessからExcelブックを開き、書式設定を行う]
では、
AccessからExcelブックを開き、
objEXCEL.Selection.Style = "Comma [0]"
objEXCEL.Selection.NumberFormatLocal = "0.00_ "
で書式設定を行うサンプルを解説しました。

[No.54 AccessからExcel開いて、処理終了後に閉じたい]
では、
.RunでExcelのVBA関数を呼び出し、処理後、
oApp.ActiveWorkBook.Close SaveChanges:=False
oApp.Quit で終了する処理を解説しました。

[No.58 Access クエリーを Excel既存シートへ エクスポート]
DoCmd.TransferSpreadsheet acExportを使用して、Excelへ出力。
いろいろとやってみたがしっくりいかなかった。

[No.59 Excelのマクロ付きフォーマットを壊されないように]
では、
ActiveWorkbook.SaveAs FileName:="XXXXXX"
と別名に保存して、元ファイルを壊されない小細工を説明しました。

[No.64 AccessからExcelファイルを開いて・印刷して・閉じたい]
Excelでやりたい操作をマクロ記録して、
Workbooks.Open ActiveWindow.SelectedSheets.PrintOut ActiveWorkbook.Close
を探り、開いて、印刷して、閉じました(笑)

[No.93 Access2000 ADOでクエリーのレコードを参照 Excelへ出力]
Dim rs As New ADODB.Recordset
rs.Open "Q_顧客情報", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
なんて感じで、ADOでクエリーを開き、Excelへ自分で転記した。

[No.100 AccessからExcel 分類別のシートへデータを転記してみる]
データを分類別にExcelのシートに転記してみました。
(セリーグの打撃成績データをチーム別のシートに転記しました

[No.130 Access クエリーをExcelシートへ10行x3列で出力する]
クエリーで集計した結果をExcelのシートへ出力してみました。
出力時、10行x3列で出力してみました。

↑出力イメージ

[No.131 Access クエリーをExcelシートへ罫線を付けて出力する]
罫線付で、データをExcelへ出力してみました。

[No.138 AccessからExcel出力、色・列幅・行の高さを調整する]
AccessからExcel出力時に
背景色 .Cells(nYLINE, nXLINE).Interior.ColorIndex = 33 'スカイブルー
列幅 .Columns(nXLINE + 1).ColumnWidth = 8.5 など
行の高さ .Rows(nYLINE).RowHeight = 25 など
を調整しました

↑出力イメージ

[No.139 AccessからExcel出力、複数クエリーを1シートへ]
複数のクエリーを色を変えてExcelのシートへ出力してみました

↑出力イメージ

ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

種類別のリンク や 広告など

気になったジャンル↓を選択してください。

人気記事(来場者が多いTOP3):
[VBAでIE,WebBrowserを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[Access から Excel 連携 CreateObject("Excel.Application")]・・・AccessからExcelを操作したりデータの書き出しなどです
[VBAでOutlookの操作 CreateObject("Outlook.Application" )]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[Excel UserFormを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
[Excel関係 関数、その他]・・・その他Excel関係です

Access関係:
[Access UserForm/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[Access レポート操作]・・・レポートを操作してみました
[Access クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[VBAでテキストファイル(TextFile)の操作]・・・普通のテキストファイルを使ったサンプルです
[VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます

開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う]

仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力]

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [VBAやASPのサンプルコード]/ 広告-[通販人気商品の足跡]



[三流君(TOP ken3.org へ戻る)] / [VBA系TOPへ] / [VBA系バックナンバー目次へ移動]