<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)]