/*
* 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を起動して、
ツール・マクロの記録で記録して、
それをヘルプで調べたんですよ。
Excelのオブジェクト体系がわかってくると、いろいろできますよ。
(楽しいですよ)
それをもっと知りたいんだけど、、なぁ。。
今回は、
Workbooks.Add と Cells(Y, X) で、、、落ち着いたら、いろいろやりましょう。
じゃ、次回以降って約束で、、、
枠外解説・グチ --- 行儀が悪い書き方です
oApp.Cells(nYLINE, 1) = XXXX
って書き方、行儀が悪い書き方です。
オブジェクト.ブック.シート.セル が よい書き方です。
ExcelのVBAをやるときに、詳しく、解説したいと思います。
/*
* 5.おわりの挨拶
*/
なんとなく?わかりましたか?(楽しめましたか?)
処理結果をExcelに出力できると、
意外と便利なので、この機会に、、おぼえていただけると、、
オマエの教え方がイマイチ、、だよ、、
そうですか、、、次回はビシット、、なんてね。
マクロ記録
ブックの新規作成ボタンを押す。
マクロの記録を停止し、 Alt+F11で記録されたモジュールを見る
ここれをみて、 .addを勉強する? サンプル実行結果
質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
|
感想や質問・要望・苦情など 三流君へメッセージを送る。 時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。 |
| ←パソコンの技術系の書籍を探しているなら コンピュータ関連の出版社33社(アスキー、インプレス等)が共同運営するコンピュータの本・専門店 ※種類が豊富で探し易い※在庫ありが48時間以内発送 |