/* * 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時間以内発送 |