<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でした。
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
気になったジャンル↓を選択してください。 人気記事(来場者が多いTOP3): Excel関係: Access関係: その他:VBAの共通関数やテキストファイルの操作など 開発時の操作: [F1を押してHELPを見る]/ [Debug.Print と イミディエイトウインドウ]/ [実行時エラーでデバッグ]/ [ウォッチ式とSTOP]/ [参照設定を行う] 仕様書(設計書?) XXXX書類: [基本設計書や要求仕様書]/ [テスト仕様書 テストデータ]/ [バグ票]/ [関数仕様書]/ [流れは 入力・処理・出力] ※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。 |
Blogとリンク:[三流君の作業日記]/
[VBAやASPのサンプルコード]/
広告-[通販人気商品の足跡]