<VBやAccessからExcelにデータを書き込む> 目次 1.はじめの挨拶 2.VBやAccessからExcelにデータを書き込む 3.Excel起動解説 4.Excelを操作する 5.おわりの挨拶 ---------------------------------------------------------------------------- /* * 1.こんにちは */ こんにちは。 今週も、始まりますね。今日月曜日お休みの人は、4連休?いいですね。。。 今回は、 VBやAccessからExcelにデータを書き込む です。 実行できるサンプルを hosoku/021/index.html サンプルから、落とせるようにしておきます。あわせてみてください。 枠外解説・グチ --- 休みたい病、、、と、、自分勝手なリーダー君? またまた、関係無い話ですが、 22日、月曜日、休みたい、、、昔だったら、休んでたな、、 リーダーもどきをやっている今、、なんとなく、休めなくなった? 立場が、人を変える?(変えた?) チームのみなさんが、頼りないリーダーでも、 居ないと困るかなぁと思って、休めない。 なんて、カッコよくいいたいけど、 実際は、、、居ないほうが作業が進んだりして? 自分がバリバリ作業者だった頃、変に上司が残業につきあってるより、 早く帰ってくれよ、、、と思うことが多かったような。。 *ソリティアやってないで、帰ってくださいよ、、頼むから。。 また、上司や先輩に「進捗どう?」と聞かれたとき、 面倒なので「まあまあです」なんて、無表情で言ってたっけ。。。 今、聞く立場になって、「進みは?、何か問題点は?」と聞いたとき、 「何もないです」と答えられると、チョットさびしい。。 *順調で何も無いのは、いいことなんだけど、、、 新人の人は、少しできないフリをすると、先輩にかわいがられるかもよ? また、ウソ教えてるよ。 ダメダメそんなことしちゃ、、通用するのは、あんた(Ken3)にだけだよキット そうかなぁ、、、 あっ、長くなったので、続き?は、また、今度、、 /* * 2.VBやAccessからExcelにデータを書き込む */ いろいろな場面で、 VBやAccessからExcelを起動し、 データを書き込みたいと思います。 今回は、そんな時のサンプルになれば、、と思い書いてみます。 *指摘・要望、まってます。 例として、調査したいディレクトリを受け取り、 Excelを起動して、結果を書き込むモジュールを下記に記述します。 * 起動方法 DirListToExcel("C:\windows") など、引数でディレクトリを渡す ---- Public Sub DirListToExcel(strDIR As String) On Error GoTo Err_DirListToExcel Dim MyDirName As String Dim MyPath As String Dim oApp As Object Dim nYLINE As Integer '¥を付けるか判断する。 If Right(Trim(strDIR), 1) <> "\" Then strDIR = Trim(strDIR) & "\" '\を追加する End If 'ディレクトリが存在するか、チェックする。 If Dir(strDIR, vbDirectory) = "" Then MsgBox strDIR & "ディレクトリが見つかりません" Exit Sub End If '検索するパターンを渡す MyPath = Trim(strDIR) MyDirName = Dir(MyPath, vbDirectory) ' 最初のディレクトリ名を返します。 If MyDirName = "" Then MsgBox "該当ファイルが一件もありません" Exit Sub End If 'Excel を起動 ' ↓Accessウイザードで作成されます Set oApp = CreateObject("Excel.Application") oApp.Visible = True 'Only XL 97 supports UserControl Property On Error Resume Next oApp.UserControl = True '------------------------------- 'ここから、がんばって、自分で作成 oApp.Workbooks.Add '新規のワークシートを追加する 'タイトルを入れる oApp.Cells(1, 1) = MyPath & " から下のディレクトリ一覧 " & Date 'ディレクトリの出力 nYLINE = 2 Do While MyDirName <> "" ' ループを開始します。 ' ビット単位の比較を行い、MyName がフォルダかどうかを調べます。 If (GetAttr(MyPath & MyDirName) And vbDirectory) = vbDirectory Then oApp.Cells(nYLINE, 1) = MyPath & MyDirName 'ディレクトリ名を送信 nYLINE = nYLINE + 1 End If MyDirName = Dir ' 次のディレクトリ名を返します。 Loop Set oApp = Nothing Exit_DirListToExcel: Exit Sub Err_DirListToExcel: MsgBox Err.Description Resume Exit_DirListToExcel End Sub ---- /* * 3.Excel起動解説 */ Access,VB 同じ関数で動くみたいなので、 共通して、説明します。 まず、Excelの起動方法です。 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 CreateObjectを使用し、エクセルのオブジェクトを作成します。 何いってんの、、英単語翻訳しただけジャン? まぁまぁ、、 oApp.Visible = True で見えるようにして、、、 oApp.UserControl = True でユーザーが操作可能に、、 なんか、自信なさそうだけど、、? はい、実は、Accessのボタンのウイザードで作成してくれるんですよ。。 あっ、そうなの。 じゃ、Excelを操作するときの決り文句で知っとけばいいの? ホントは、知らないと、Wordの時は、、など、応用できないので、、、 わかりやすい資料見つけたら、また、解説します。 /* * 4.Excelを操作する */ Excelの起動が無事にできたところで、 次に、Excelを操作するには? です。 oApp.Workbooks.Add '新規のワークシートを追加する で新規のブックを追加します。 'タイトルを入れる oApp.Cells(1, 1) = MyPath & " から下のディレクトリ一覧 " & Date セルのA1(1,1の座標)にタイトルを入れます。 oApp.Cells(nYLINE, 1) = MyPath & MyDirName 'ディレクトリ名を送信 .Cells(Y, X) でデータをY行X列に入れることができます。 解説途中で悪いけど、 なんで、Workbooks.Add は、新規ブックの追加、 Cells(1, 1)は、、、って知ったの?どこみるの? えっとですね、下準備で、Excelを起動して、 ツール・マクロの記録で記録して、 それをヘルプで調べたんですよ。 * hosoku/021/index.html に画像、置いてます。参照してください。 Excelのオブジェクト体系がわかってくると、いろいろできますよ。 (楽しいですよ) それをもっと知りたいんだけど、、なぁ。。 今回は、 Workbooks.Add と Cells(Y, X) で、、、落ち着いたら、いろいろやりましょう。 じゃ、次回以降って約束で、、、 枠外解説・グチ --- 行儀が悪い書き方です oApp.Cells(nYLINE, 1) = XXXX って書き方、行儀が悪い書き方です。 オブジェクト.ブック.シート.セル が よい書き方です。 ExcelのVBAをやるときに、詳しく、解説したいと思います。 /* * 5.おわりの挨拶 */ なんとなく?わかりましたか?(楽しめましたか?) 処理結果をExcelに出力できると、 意外と便利なので、この機会に、、おぼえていただけると、、 オマエの教え方がイマイチ、、だよ、、 そうですか、、、次回はビシット、、なんてね。 そろそろ、しこみ?も終わったので、 宿題(質問・要望)をやっていこうと思ってます。 では、また。 三流PGのKen3でした。
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
項目別に本音?それとも建て前?的な記事をまとめました。
気になったジャンル↓を選択してください。 |
Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]