三流解説 出欠管理 と 督促メールの送信 を ExcelとOutlookで行う 5-13

下記の質問をもらったので、作成してみたいと思います

----
>自社では、エクセルの表で管理されたイベントの参加管理表があります。
>日々管理していますが、報告期日までに報告しない社員が非常に多く、困っています。
>
>参加管理表の作りは、
>1行目  ⇒ A列・・イベント名、B列・・報告期日、C〜X列・・それぞれの社員の名前
>2行目以降⇒ A列・・それぞれのイベント名(「飲み会」など)、B列・・それぞれの報告期日(「4月8日」など)、C〜X列・・「参加」or「不参加」を選択
>
>となっています。
>この場合に、「期日の3日前までに参加or不参加を選択していない社員に自動でメール送信(本文で、参加or不参加を参加管理表に書くよう指示)
>するといったことは可能でしょうか?
----

※途中へんな方向に行きそうだけど・・・

修正から入ると、ロクなことないんだけど・・・
前回作った。[登録されたアドレス複数へ メールで送信する]
を強引に修正して、作成を開始します。

今回作成したサンプルファイルは[Excel_Outlook_TEST20090513.zip]です。
ダウンロードして動かしてみてください。

簡単に設計してみた。

簡単な基本設計・詳細設計から、作成を始める
まぁ、いろいろ と あるけど、手抜きのラフな設計で(おぃおぃ)

基本設計・要求仕様書

基本設計、要求仕様がブレていると、完成したシステムの着地点がかなりずれるので重要です。
と、言ってるそばから、2・3行、箇条書きにしただけの 基本設計です。

システム概要・システム化の目的
参加・不参加の管理表(Excel) から 期日3日前のイベントを特定し、
参加・不参加を書き込んでいない人(メンバー)に対して、
書き込み依頼(督促・催促)のメールを送信する。

要求仕様書 -- やりたいこと システムにさせたいこと 求めいてる結果は?
1.イベントの参加管理表.xls を 取り込む。
2.送信先を管理したい (メールアドレスの管理)
送信先を事前に登録しておき、メール作成時に使用したい。
まぁ、いろいろと続くんだけど。。。
3.メールの本文を作成したい (ほとんど 固定?)
送るメールの本文を作成し、メールを作成する。
4.送信する宛先を指定したい(期日3日前に参加・不参加を未記入の人)

詳細設計

基本設計をカバーする、詳細設計をしないと・・と思いつつ、
詳細設計も かなり 簡単にしました。(ハードコピー と 簡単な説明だけ・・・)

1.督促・催促メール 作成前に現在の(最新の) 参加状況を取り込みます。	
参加表を取り込みます。(ローカル、自分(送信プログラム)で、取り込み・コピーする。)	
	取り込み後、C列の名前が、宛先マスターに存在するかチェックします。
	※メールアドレスが登録されているか、シートとつき合わせて、確認する。

イベント選択のコンボボックスを初期化する。

2.送信するイベントを選択してください。		

	シートに貼ったコンボボックスで、イベントを選択する。		

	イベント管理表のフォーマット		
		A列	B列
	1行目	イベント名	報告期日
	2行目	歓送迎会	2009/5/24
	3行目	全体会議1	2009/5/18

	イベント選択後、参加・不参加 など、文字を送信フラグにセットする。		
	送信文章の雛形、定型文を作成する。		

3.送信する文章を確認・修正してください。	

	送信する文章を確認する。

4.送信するメールを作成します。	

	メールを作成します。
	今回は、BCCで複数の宛先へ送信するメールを作ります。
5/14 質問からラフなプログラム設計してみた 督促メール 作成処理

コードの作成開始

関数分割もなく、泥縄式にクソコードを書いていきます。
まぁ、箇条書き ぐらいは、しますか(設計書もどきからコピーして、頭に書く・コメントにする。)

1.督促・催促メール 作成前に現在の(最新の) 表を取り込みます

ファイル名 B4 の ファイル名を開き、
シート名 B5 のシートを選択してコピーし、
管理表 シートに貼り付けてデータを更新する。
と、日本語で書くと3行なんだけどなぁ。

マクロ記録で、コードを作ってみます。
下記、少し、削っちゃったけど、こんな感じで記録されました。
Sub 表の取り込み()

    Workbooks.Open Filename:="\\S2003\public\イベント管理表.xls"
    Sheets("イベント").Select
    Cells.Select
    Selection.Copy
    
    Windows("Excel_Outlook_TEST20090513.xls").Activate
    Sheets("管理表").Select
    Range("A1").Select
    ActiveSheet.Paste
    
    Range("A8").Select
    
    Windows("イベント管理表.xls").Activate
    ActiveWorkbook.Close
    
    Sheets("宛先マスター").Select
    Range("B2").Select

End Sub

ここから、固定値を変数に直します。

Workbooks.Open Filename:="\\S2003\public\イベント管理表.xls" を B4のセルからファイル名、
Sheets("イベント").Select を B5のセルからシート名
を使用するように変更。

次に、Windows("Excel_Outlook_TEST20090513.xls").Activate
この、現在実行中のXLSプログラムが動いているブックの名前を知りたかったので、
Dim strXLS As String '現在の実行ファイル名
strXLS = ActiveWindow.Caption '実行中のファイル名を保存 貼り付けでブックを戻すため
'↑ thisworkbook.name の ほうがキレイかも。
で、strXLSの変数に保存して、
Windows(strXLS).Activate 'プログラム実行元に切り替える
と切り替えに使用しました。

また、コピー元を閉じる処理
Windows("イベント管理表.xls").Activate
ActiveWorkbook.Close
で、警告が出ていたので、
Application.DisplayAlerts = False '警告無視 を行いました。
"イベント管理表.xls" を フルパスから作るのが面倒だったので(おぃぉぃ)、
n = Windows.Count '現在のウインドウの数
Windows(n).Activate '最後をアクティブにする
で、処理しました。
Sub 表の取り込み()

    Dim strFILENAME As String  'ファイル名、フルパス
    Dim strSHEETNAME As String 'シート名 コピー元のシート名
    
    Dim strXLS As String   '現在の実行ファイル名
    strXLS = ActiveWindow.Caption  '実行中のファイル名を保存 貼り付けでブックを戻すため
    '↑ thisworkbook.name の ほうがキレイかも。
    
    strFILENAME = Sheets("宛先マスター").Range("B4")  'B4から代入ファイル名、フルパス
    strSHEETNAME = Sheets("宛先マスター").Range("B5") 'B5から代入シート名 コピー元のシート名

    'コピー元のファイルを開き、シートを選択後、コピーする。
    Workbooks.Open Filename:=strFILENAME
    Sheets(strSHEETNAME).Select
    Cells.Copy
    
    '自分(プログラム)のXLSブック・管理表シートに貼り付ける
    Windows(strXLS).Activate  'プログラム実行元に切り替える
    Sheets("管理表").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    
    'コピー元のブックを閉じる
    Dim n As Integer
    n = Windows.Count   '現在のウインドウの数
    Windows(n).Activate '最後をアクティブにする
    Application.DisplayAlerts = False  '警告無視
    ActiveWorkbook.Close '閉じる
    Application.DisplayAlerts = True   '警告ON
    
    '読み込み完了
    Sheets("宛先マスター").Select
    Range("B2").Select

End Sub

↑マクロ記録から、かなり変わったけど、こんな感じです。
あっ、エラー処理が入ってないや。。。

5/14 Excel ファイルを開いて シートをコピー 貼り付け コピー元を閉じる

On Error Goto で ファイルとシートが見つからない エラー処理を入れる

単純にOn Error GoTo ラベルでエラー発生時の飛び先を変更し、エラー処理を行いました。
ラベルを2つ用意して、OPEN前とシート選択前に エラーの飛び先を変更した、そんな感じです。
Sub 表の取り込み()

    Dim strFILENAME As String  'ファイル名、フルパス
    Dim strSHEETNAME As String 'シート名 コピー元のシート名
    
    Dim strXLS As String   '現在の実行ファイル名
    strXLS = ActiveWindow.Caption  '実行中のファイル名を保存 貼り付けでブックを戻すため
    '↑ thisworkbook.name の ほうがキレイかも。
    
    strFILENAME = Sheets("宛先マスター").Range("B4")  'B4から代入ファイル名、フルパス
    strSHEETNAME = Sheets("宛先マスター").Range("B5") 'B5から代入シート名 コピー元のシート名


    'コピー元のファイルを開き、シートを選択後、コピーする。
On Error GoTo FILE_ERR  'エラーの飛び先を変更(エラー処理)
    Workbooks.Open Filename:=strFILENAME  'ファイルを開く

On Error GoTo SHEET_ERR 'エラーの飛び先を変更(エラー処理)
    Sheets(strSHEETNAME).Select  'シートの選択
    Cells.Copy
    
On Error GoTo 0  'エラー処理を戻す
    
    '自分(プログラム)のXLSブック・管理表シートに貼り付ける
    Windows(strXLS).Activate  'プログラム実行元に切り替える
    Sheets("管理表").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    
    'コピー元のブックを閉じる
    Dim n As Integer
    n = Windows.Count   '現在のウインドウの数
    Windows(n).Activate '最後をアクティブにする
    Application.DisplayAlerts = False  '警告無視
    ActiveWorkbook.Close '閉じる
    Application.DisplayAlerts = True   '警告ON
    
    '読み込み完了
    Sheets("宛先マスター").Select
    Range("B2").Select
    
    Exit Sub    '関数を抜ける
    
FILE_ERR:
    MsgBox strFILENAME & " ファイルが見つかりません。"
    Exit Sub    '関数を抜ける


SHEET_ERR:
    MsgBox strSHEETNAME & "シートが見つかりません。"
    Exit Sub    '関数を抜ける

End Sub

なんとか、エラー処理ができたかなぁ・・・。ここまでで、日が暮れそう(おぃぉぃ)

5/14 Excel VBA On Error Goto で エラー処理を行う。

コンボ ボックスの処理 ComboBox .Clear .AddItem .ColumnCount .List

次は、イベント選択のコンボボックスを初期化したいと思います。
ComboBox.Clear で 初期化ができます。
ComboBox.ColumnCount で 列を指定できます。ここでは、イベント名と期日なので2をセットします。
ComboBox.AddItem で データを追加します(1行、新しく作られます。)
ComboBox.List(行,列)=DATA を指定して追加可能です。
これ.Listを利用して、2列目の期日を
ComboBox.List(Y行, 1)でセットしました。※指定が0から始まっているので注意
Sub 全てのイベント_Click()
    
    Dim yLINE As Integer   'Y行目
    Dim yCombo As Integer  'コンボボックスのY 0から
    Dim strWORK As String  'ワーク変数
    
    'コンボ ボックスをクリアー
    Sheets("宛先マスター").イベントComboBox.Clear '初期化
    Sheets("宛先マスター").イベントComboBox.ColumnCount = 2 '列幅を2
    
    yCombo = 0  'コンボボックスの行を0にする
    For yLINE = 2 To 999  '2行目からまわす
        strWORK = Sheets("管理表").Cells(yLINE, "A")
        If strWORK = "" Then Exit For  'A列イベントの文字無しで抜ける
        
        'イベントの文字をセットする
        Sheets("宛先マスター").イベントComboBox.AddItem strWORK
        '期日をセット .Listでセットする。0から始まるので注意
        Sheets("宛先マスター").イベントComboBox.List(yCombo, 1) = Sheets("管理表").Cells(yLINE, "B")
        yCombo = yCombo + 1  '次の行へ
    Next

End Sub
↑自力でセットしましたが、範囲指定して セルとコンボボックスをつなげる方が(リンクさせるほうが)簡単だったりしますが・・・

5/14 Excel VBA コンボボックス ComboBox .Clear .AddItem .ColumnCount .List

期日が3日後にせまったデータをコンボボックスへ代入する

次は、期日が3日後のデータをコンボボックスに代入します。
と言っても、日付の範囲で判断・比較して代入しただけです。
dtmADD3Day = DateAdd("d", 4, Date) '<範囲にしたいので3+1の4日後を代入
で、4日後を計算して、下記のIf文で<(未満)で比較して、3日後の判断にしました。
If Date <= dtmWORK And dtmWORK < dtmADD3Day Then
( 今日 より大きく 4日後未満 の 期日をチェックする )
Sub 期日3日前_Click()
    Dim yLINE   As Integer 'Y行目
    Dim yCombo  As Integer 'コンボボックスのY 0から
    Dim strWORK As String  'ワーク変数
    Dim dtmWORK As Date    'ワーク変数
    Dim dtmADD3Day As Date '日付型、3日後を計算する。
    
    dtmADD3Day = DateAdd("d", 4, Date)  '<範囲にしたいので3+1の4日後を代入
    
    'コンボ ボックスをクリアー
    Sheets("宛先マスター").イベントComboBox.Clear '初期化
    Sheets("宛先マスター").イベントComboBox.ColumnCount = 2 '列幅を2
    
    yCombo = 0  'コンボボックスの行を0にする
    For yLINE = 2 To 999  '2行目からまわす
        strWORK = Sheets("管理表").Cells(yLINE, "A")
        If strWORK = "" Then Exit For  'A列イベントの文字無しで抜ける
        
        'まず、B列が日付かIsDateでチェックする
        If IsDate(Sheets("管理表").Cells(yLINE, "B")) = True Then
            dtmWORK = CDate(Sheets("管理表").Cells(yLINE, "B")) 'CDateで変換(念のため)
            '日付の範囲をチェックする 当日以上(含む)<= And < 4日後未満(3日後)
            If Date <= dtmWORK And dtmWORK < dtmADD3Day Then
                'イベントの文字をセットする
                Sheets("宛先マスター").イベントComboBox.AddItem strWORK
                '期日をセット .Listでセットする。0から始まるので注意
                Sheets("宛先マスター").イベントComboBox.List(yCombo, 1) = dtmWORK
                yCombo = yCombo + 1  '次の行へ
            End If
        End If
    Next
End Sub

これで、なんとか、セットすることができました。

イベント名が選択されたら イベントComboBox_Change

コンボボックスでイベント名が選択されたら、
イベントComboBox_Change イベントで選択後(値が変わった)タイミングがわかります。
ここで、
イベント名に対応する行を探し、
各自の参加・不参加をセットします。
また、宛先マスターにアドレスが存在するか、チェックします。
Private Sub イベントComboBox_Change() '値が変更されたら。
    
    'C10から、データをまず消す
    Range("C10:C999").Clear   'C10〜C999を無条件クリアー(おぃぉぃ)
    
    'F7に選択されたイベント名をセットする。
    Dim strEventName As String  'イベント名

    strEventName = Trim(イベントComboBox.Value)
    Range("F7") = strEventName  'F7のセルにセットする。
    If strEventName = "" Then Exit Sub  '空白、初期状態なら そのまま抜ける
        
    '管理表から該当するイベントを探し、参加・不参加をC列にセットする。
    Dim yLINE As Integer    '行カウンター
    Dim strNAME As String   'イベント名ワーク
    
    Sheets("管理表").Select
    For yLINE = 2 To 999    '2行目からループさせてイベント名を探す
        strNAME = Trim(Sheets("管理表").Cells(yLINE, "A")) 'シートのイベント名を取り出す
        If strEventName = strNAME Then Exit For '名称が一致したら抜ける。
    Next
    If yLINE >= 999 Then    'もし、みつからなかったら?
        MsgBox "イベントが見つかりませんでした。コンボボックスを更新して再度実行してください"
        Exit Sub    '関数を抜ける
    End If
    
    '参加・不参加を書き込む。
    Dim xLINE As Integer    'X列のカウンター
    Dim yMASTER As Integer  '宛先マスターのY行目
    Dim str社員名 As String '社員名
    
    For xLINE = 3 To 255    'C列 3番目から横方向にループする。
        str社員名 = Trim(Sheets("管理表").Cells(1, xLINE))  '1行目のx列 名前を取り出す
        If str社員名 = "" Then Exit For  '名前が空白なら、終わりにする。
        '宛先マスターを探し、一致する名前の横に参加・不参加、空白をそのまま書き込む
        For yMASTER = 10 To 999  '宛先マスターの10行目からループする
            If Trim(Sheets("宛先マスター").Cells(yMASTER, "A")) = str社員名 Then
                Exit For   '一致したら抜ける
            End If
        Next
        '一致と不一致のチェック
        If yMASTER < 999 Then  'ループを途中で抜けた(見つかったら)
            'データのセット 宛先マスターC列に みつけた管理表のy,x のデータをセットする。
            Sheets("宛先マスター").Cells(yMASTER, "C") = Sheets("管理表").Cells(yLINE, xLINE)
        Else 'ループにかからなかったら(一致しなかったら)
            MsgBox str社員名 & " が 宛先マスターにありません、確認後、追加してください"
        End If
    Next xLINE
    
    'メールの件名と定型文をセットする。
        '件名 下記、自由に変えてください。
    Sheets("送信文章").Range("A7") = strEventName & " の 参加・不参加を記入してください"
        '本文 雛形 下記、自由に変えてください。
    Sheets("送信文章").Range("A10") = strEventName & " の 参加・不参加が記入されてません"
    Sheets("送信文章").Range("A11") = "期日が迫っているので、記入してください。"
    Sheets("送信文章").Range("A12") = ""
    Sheets("送信文章").Range("A13") = "よろしくお願いします。"
    Sheets("送信文章").Range("A14") = ""
    Sheets("送信文章").Range("A15") = "総務部 より"
    Sheets("送信文章").Range("A16") = ""
    Sheets("送信文章").Range("A17") = ""
    Sheets("送信文章").Range("A18") = ""
    Sheets("送信文章").Range("A19") = ""

    '終了処理
    Sheets("宛先マスター").Select
    MsgBox "参加・不参加を転記しました。確認後、メールを作成してください。"
    
End Sub

↑3つの作業を、1つの関数に書いているので、長いと思いますが、1つ1つゆっくり 追っていけばわかると思います。
※変数名に急に日本語使ったり、Yカウンタがわかりにくくてすみません。

5/14 コンボボックス で 選択されたら ComboBox_Changeのイベント

送信文章の確認 シートの切り替え

送信文章の確認は、単にシートを切り替えただけです。
Sub 文章確認_Click()
    Sheets("送信文章").Select
    Range("A9").Select
End Sub

まぁ、これなら自分でシートを切り替えてもいいんだけど。。。

メール作成処理

やっと、メールの作成処理です。C列が空白以外の宛先にBCCで送信するメールを作成します。
ポイントは、 メールアドレス ; メールアドレス と セミコロンで区切ると複数のアドレスを指定可能です。
C列が空白のデータを見つけたら、 B列のアドレスを ; セミコロン付きで作成します。
あとは、 .Bcc に セットするだけです。※.Toには何もセットしないで送信できます。
Sub BCCメール作成_Click()
'作成開始の確認
    If MsgBox("メールを作成します、よろしいですか?", vbYesNo, "確認") = vbNo Then
        Exit Sub   'vbNo いいえ だったら、関数をすぐに抜ける。
    End If

'件名に 送信文章シートのA7の件名をセットする
    Dim strTITLE  As String  'メールの件名、タイトル。
    strTITLE = Trim(Sheets("送信文章").Range("A7")) '隣の送信文章のA7セルを代入

'本文は、送信文章シートのA10から ”↑ここまで” を つなげ、セットする。
    Dim strDOC    As String  '送信する文章
    Dim strWORK   As String  '一時変数
    Dim yLINE     As Integer 'Y行目のカウント
    '本文を作る
    strDOC = ""  '初期化する
    For yLINE = 10 To 999   '10行目から最大999行まで
        strWORK = Sheets("送信文章").Cells(yLINE, "A")  'A列のY行目の文字を取り出す
        If strWORK = "↑ここまで" Then Exit For  '↑ここまで だったら ループを抜ける
        strDOC = strDOC & strWORK & vbCrLf  '1行、文字を追加する
    Next yLINE

' BCC メールの送信先アドレスをまとめる
' 送信先アドレスを  aa@aa ; bb@bb ; cc@cc みたいに セミコロンで区切り1つの文字列にする

    Dim strBCC  As String   'BCCで送信するアドレス

    'BCC 送信アドレスを作る
    strBCC = ""  '初期化する
    For yLINE = 10 To 999   '10行目から最大999行まで
    
        'A列名前 が 無しで 終了の確認を行う
        If Trim(Sheets("宛先マスター").Cells(yLINE, "A")) = "" Then Exit For 'ループを抜ける
        
        '送信の判断 と BCCアドレスに追加する
        strWORK = Trim(Sheets("宛先マスター").Cells(yLINE, "C"))  'C列のY行目の文字を取り出す
        If strWORK = "" Then  '※何も文字が無ければ送信する。BCCアドレスに追加する
            If strBCC = "" Then   '先頭か?
                strBCC = Sheets("宛先マスター").Cells(yLINE, "B")  'B列のアドレスを代入
            Else
                strBCC = strBCC & " ; " & Sheets("宛先マスター").Cells(yLINE, "B") ';と一緒に追加する
            End If
        End If
        
    Next yLINE
    
    If strBCC = "" Then  'BCCアドレス が 作成されなかったら。
        MsgBox "送信データがありません、確認してください。"
        Exit Sub
    End If

'    Outlook を 起動 、 メール作成後、BCCアドレスをセット
    Dim oApp As Object        'OutlookのApplication オブジェクトを入れる
    Dim myNameSpace As Object '名前のスペースと言われても、、
    Dim myFolder As Object    'フォルダー指定

    'outlook 起動をCreateObjectで ※これだと複数起動してしまうがご勘弁を
    Set oApp = CreateObject("Outlook.Application")

    '呪文1 名前空間 の 指定 と言っても、.GetNamespace("MAPI")しただけ
    Set myNameSpace = oApp.GetNamespace("MAPI")
    
    '次は作業フォルダーの指定(.GetDefaultFolder) と 表示(.Display)
    Set myFolder = myNameSpace.GetDefaultFolder(6) '規定のフォルダー olFolderInbox=6 指定
    myFolder.Display  '表示 いつものクセで .Visible = True とやりがちだけど

'メールを作成する。
    
    Dim objMAIL  As Object   'MAILアイテムを操作するオブジェクト

    'メールアイテムの作成
    Set objMAIL = oApp.CreateItem(0) 'olMailItem=0 直値はいけないと思いつつ、
    objMAIL.Display   '画面表示(Mail入力、編集画面を表示)

    '宛先・件名・本文 などのデータを代入する
    objMAIL.Bcc = strBCC       '.BCC 宛先をセットする ※BCCのみセットする。
    objMAIL.Subject = strTITLE '.Subject 件名
    objMAIL.Body = strDOC      '.Body 本文の代入

    'objMAIL.Save               '保存する、下書きへ保存です。
    '↑今回、コメントにする。.SAVEで保存しないと破棄がやり易いので。※閉じるで破棄できるので。

    Set objMAIL = Nothing      '開きっぱなしで、そのまま、次のメールを処理する。
    
    MsgBox "メール 下書き 作成終了" & vbCrLf & "確認後、手動で送信してください。"

End Sub

なんとか、組み合わせて、それらしいシステムになったかなぁ・・・
まだ、テスト不足だったりして、イロイロと不具合や要望が出てきそうだけど。。。

5/14 VBA Outlook BCCでメールを複数宛先に送る。

終わりの挨拶

まだまだ、改善点が多数存在しますが、たたき台として使ってみてください。
何かの参考となれば、幸いです。

サンプルファイルは[Excel_Outlook_TEST20090513.zip]です。
ダウンロードして動かしてみてください。


ページフッター リンクや広告、質問送信など

三流解説を読んでいただき、どうもです。ここから下は、三流君宛のメッセージ送信や 三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、※質問や感想は、気軽に送ってくださいね。

[Outlook三流解説のトップページへ 戻る] / [Outlook三流サンプル一覧へ 戻る]

[三流君 VBAでアウトルック Mailの操作] / [三流君 VBAで楽しくプログラミング] / [AB型の変わり者 三流プログラマー Ken3 三流君Top]

F1でヘルプを見たり、デバック時にDebug.Print使ったり、イミディエイト ウインドウで簡単な確認したり。
なれると当たり前に操作している方法が↓かなぁ。
[F1ヘルプ マクロ記録ほか]・・・基本のF1を押してヘルプを見る方法など
[実行時エラー、デバッグモード]・・・デバッグの流れを簡単に(ハマった時はツライけど)
[イミディエイト ウインドウ と Debug.Print]・・・プログラム作成時に便利なイミディエイト ウインドウ
[VBA ウォッチ式とSTOPを使ってみた]・・・STOPで止め、ウォッチ式でオブジェクトの中身を確認する方法など
[参照設定のお話]・・・設定すると便利な(設定しないと使えない)、参照設定のお話

項目別に↓にプログラマーの本音?それとも建て前?的な記事をまとめました。お探しのジャンルを選択してください。
[ルーキー rookies]・・・ 新人さん達 初心者さんへ
[プログラムは心? spirit]・・・プログラマー 心・気質・魂
[学ぶ study]・・・学習、技術の取得
[仕様書 doc]・・・仕様書・設計書関係の話

項目別に↓に人気の記事をまとめてみました。お探しのジャンルを選択してください。
[VBAでIE ウェブブラウザーを操作]・・・VBAでIE,WebBrowserを操作する サンプルです
[MSアクセス から エクセル を呼ぶ Excel.Application]・・・AccessからExcelを操作したりデータの書き出しなどです
[アウトルック メールの操作 Outlook.Application]・・・VBAからOutlookを使い、メール関係を処理するサンプルです
↑上記3つみたいなCreateObjectで他のアプリケーションを操作するサンプルが人気です。

Excel関係:
[エクセル ユーザーフォームを操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
[エクセルからアクセスを操作する]・・・ExcelからAccessのマクロを起動してみました、
[エクセル関係 関数、その他]・・・その他Excel関係です

Access関係:
[アクセス ユーザーフォーム/サブフォーム 操作]・・・アクセスでフォームを使ったサンプルです
[アクセス レポート操作]・・・レポートを操作してみました
[アクセス クエリーやその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です

その他:VBAの共通関数やテキストファイルの操作など
[テキストファイルの操作(Open,Close,Print,Input)]・・・普通のテキストファイルを使ったサンプルです

Blog:[三流君の作業日記]/ [サンプルコードのゴミ箱]/ 広告-[通販人気商品の足跡]

質問や要望など メッセージを送る(三流君に連絡する)

三流プログラマーのKen3 が 皆さんの質問にお答えします
と カッコつけて言っても、実力不足ですべての質問に回答することはできないのが現実なのですが、できる範囲で 三流的な逃げ手 や 解決方法 を探します(回答します)。

感想や質問・要望・苦情など 三流君へメッセージを送る。
時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。
あなたのお名前(ニックネーム):さん
返信は?: 不用(HP更新を待つ) , E-mail→ アドレス:に返事をもらいたい



(感想や質問・要望 メッセージはHPで記事に載せることがあります。)

急ぎで連絡がほしい、そんな時は:[三流君連絡先]に連絡してください。



[トップページへ 戻る] / [サンプル一覧へ 戻る]