[三流君] −−> [プログラマー業務の愚痴] −−> [バックナンバー一覧]
−−> No.021 VBやAccessからExcelにデータを書き込む

VBやAccessからExcelにデータを書き込む


本文(発行内容)


<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でした。



ページフッター

ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、

リンクや広告など

項目別に本音?それとも建て前?的な記事をまとめました。

気になったジャンル↓を選択してください。
[ルーキー rookies]・・・ 新人さん達 初心者さんへ
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話
[共同作業 team]・・・チーム、グループ作業
[プログラムは心? spirit]・・・プログラマー 心・気質・魂

[掲示板デビューしようぜ bbs]・・・掲示板関係の話、質問者・回答者の気持ちほか
[昔はできた seo]・・・三流式の効果無しSEOとアフィリエイト
[仕事や作業、転職 job]・・・仕事や転職、評価、作業など
[その他 etc]・・・その他 分類外の記事

※↑文章の味付けが変わっていて、お口に合うかわかりませんが。。。
※※読んで、気分を悪くされたらスミマセン。

Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]



[三流君(TOP ken3.org へ戻る)] / [プログラマー業務の愚痴] / [バックナンバー 一覧]