三流君 VBAで楽しくプログラミング (Excel/Access VBAの解説/サンプルです)
[VBA系のバックナンバー ]
[質問/感想 掲示板 ]
[メルマガ登録/解除 ]
[VBA系 TOP ]
[サイトマップ ]
<Excel 起動画面を表示しないで、UserFormを開く>
どうも、
最近、質問もらうけど、
なかなか、解答できてない三流プログラマーのKen3です。
※私のレベルで手に余る高度な質問が多くて。
(返信遅いのは、答えられないからで、
お金払えば答える、有料版の読者にしか答えない、そんなことは無いので・・・
有料版読者の質問に優先的に答えてはいますが、、、、)
/*
* 1. 今回のキッカケ
*/
質問のメッセージをもらいました。
-----
In message "QA B-ETC - No.0",
>次のようなことは、できるのでしょうか。
>Excelファイルを開いたときに、Excel画面を表示させずに、ユーザーホームだけを
>表示させる方法はないのでしょうか。
-----
Excelの画面を表示させないでかぁ・・・
/*
* 2.普通のパターン
*/
通常は、test999.xlsとExcelのファイルがあったら、
Public Sub Auto_Open() '読み込み時に実行される
Application.Visible = False 'アプリを見えなくする
UserForm1.SHOW 'ユーザーフォームの表示
End Sub
なんて感じで、Excelが起動したら、
Application.Visible = False 'アプリを見えなくする
で、Excel本体を隠して、
UserForm1.SHOW 'ユーザーフォームの表示
で、ユーザーフォームを表示させてます。
/*
* 3.苦肉の策、VBSでExcelを起動してみる。
*/
test999.xlsをダブルクリックすると、
どうしても、Excelが起動してしまう。
これを回避したいので、xxxx.vbsとvbScriptで起動してみたいと思います。
拡張子を.vbsとしてファイルを作成します。
~~~~~~~~~~~~~
test.vbsとファイルを作成してください(拡張子に注意)
^^^^^^^^
msgbox "test"
なんて一行書いて、保存。
ダブルクリックで実行すると、
あらら不思議、メッセージが表示されたよ。
↑実行結果画面
これがウイルスの温床と噂のVBスクリプトってヤツですね。
よんでね.VBSとか、I Love Youとファイル名を付けて、添付する・・なんてヤツですね。
まぁ、そんな話は、置いといて、
Excelのオブジェクトを作って、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
'*1↓頭にCreateObjectで作成した変数を追加しただけ
oApp.Workbooks.Open FileName:="E:\work\test999.xls"
'^^^^
おいおい、コンパイルエラーかよ(笑)
↑エラー画面
あっ、VBScriptって変数の型指定ができないんだっけ、
Dim oApp As Object
みたいに、As XXXXはダメなんだっけ、忘れてた。
これを取って、
えっ、まだダメなの?
oApp.Workbooks.Open FileName:="E:\work\test999.xls"
の場所?
oApp.Workbooks.Open "E:\work\test999.xls"
と引数の名前指定を外して見た(う〜ん、後で調査ですね)
無事、固定のファイルが開けたので、
ユーザーフォームを開きますか、
と、同時に、Excelは隠しておきたいんだっけ。
test999.xls内に、ユーザーフォームを表示するSub関数を1つ作ります。
'フォームを開くモジュール
Public Sub SHOW_UserForm1()
UserForm1.SHOW
End Sub
こんな感じで、1つ、フォームを開くモジュールを作成します。
次に起動用のtest.vbsファイルを作成します
'test.vbs
'^^^^^^^^^
Dim oApp
Set oApp = CreateObject("Excel.Application")
oApp.Visible = False '不可視にする
'Only XL 97 supports UserControl Property
'On Error Resume Next
oApp.UserControl = True
'Excelファイルを開く
oApp.Workbooks.Open "E:\work\test999.xls"
'ユーザーフォームを表示するマクロを呼ぶ
oApp.RUN "SHOW_UserForm1"
'ここまで
簡単な解説は、
Set oApp = CreateObject("Excel.Application")
で、Excelのオブジェクトを作成して、
oApp.Visible = False '不可視にする
と、不可視にする。
その後、
oApp.Workbooks.Open "E:\work\test999.xls"
で、目的のExcelファイルを読み込んだら、
oApp.RUN "SHOW_UserForm1"
と、ユーザーフォームを開くマクロを起動する。
無事、フォームが表示されると思います。
/*
* 4.メモリに残りっぱなし・・・
*/
さてと、これで安心してはイケマセンよ(笑)
私の作るプログラムらしく、
フォームを終了すると、見た目は何も無くなってます。
ですが、Ctrl+Alt+Delでタスクを見てみると、
あれ?Excelが残っているよ・・・
↑プロセスが残っている・・(タスクマネージャーで確認)
これを終了させたいよね。
まぁ、普通にフォームを閉じた時に、自身のアプリを消しますか。
Public Sub Auto_Open() '読み込み後に実行される
Application.Visible = False 'アプリを見えなくする
UserForm1.SHOW 'ユーザーフォームの表示
Application.Quit 'アプリを終了する
End Sub
単純に、
Application.Quit 'アプリを終了する
と、
フォームの表示後(閉じられた後)に、.Quitしてみました。
あれれ・・・まだ残っているよ・・・
これだけじゃ、ダメなんですね。。。
う〜ん、うまく行ったと思ったんだけどなぁ・・・
Excelのプロセスを完全に消さないと、完璧とは言えないですね。
-【けんぞう!】---------------------------------------------------------
転職関係、在宅プログラマー、SOHOの広告まとめました
http://www.ken3.org/etc/500yen/zaitaku.html いろいろとあるので転機の人はぜひ
登録料無料、匿名で探せるので在宅で小金稼ぎの人も見てね
~~~~~~~~~~~~~~~~
オレ様、私は、SE様だ、月給30万以上ボーナス100万を探すのもありだよ。
私にみたいにVBA少しできるぐらいだと仕事無いよ・・・なんて冷たく、
と軽く言われても匿名なら気にならないし(笑)
逆にこんな簡単な仕事で月給27万貰えるの?って会社もあるし、世の中イロイロ。
http://www.ken3.org/etc/500yen/job.html
------------------------------------------------------------------------
/*
* 5.終わりの挨拶
*/
どうでしたか?
今回は、なんとか、Excel残りつつも、半分は回答までもっていけたなぁ。。。
最近、回答率低くって・・・(オイオイ)
なんて、いつもの自分落としネタを書いておいて、
Excel残りの回避を考えないとなぁ。
Excel/Access大好き、三流プログラマーKen3でした。
<Access Like演算子でパターンマッチングしてみた>
どうも、三流プログラマーのKen3です。
最近、質問もらうけど、
なかなか、解答できてない三流プログラマーのKen3です。
※私のレベルで手に余る高度な質問が多くて。
今回の、サンプルファイルは、
http://www.ken3.org/vba/lzh/vba126.lzh
にdb126.mdb(Access2000版)が保存されています。
/*
* 1. 今回のキッカケ
*/
ヤバイ・・・ほったらかしの問題が、多いんだよね。
http://www.ken3.org/backno/backno_vba22.html#107
の
No.107 Access サブフォームの明細データを検索、メインを移動
で、
メンバーを検索、親のグループを移動、なんて処理を作ったんだけど、
イロイロと課題を残したままでした。
まぁ、クリアしたい課題は、
テーブルにはフルネームで入っているけど検索は一部でしたい
(複数レコードが該当(メンバー名で同じ名前)した場合)
なんて感じの処理かなぁ。
親テーブル名:T_バンド名
バンドID オートナンバー
バンド名称 テキスト
備考 メモ型
子テーブル名:T_メンバー
個人ID オートナンバー
バンドID 長整数型(親テーブルとリンクする)
名前 文字型
楽器 文字型
出身地 文字型
生年月日 日付型 *今回関係ないけど
備考 文字型 *今回関係ないけど
と、テーブルがあって、データが
(野球のデータ入れるけどカンベンしてね、あっ阪神優勝おめでとう・・・)
テストデータ 親テーブル名:T_バンド名
^^^^^^^^^^^^
バンドID バンド名称 備考
1 BOOWY 伝説のバンド?
2 てすと モーニング娘はメンバー多いしバンドじゃないし(笑)
3 てすとですよ う〜ん、音楽関係、無知(笑)
4 プロ野球 野球選手
テストデータ 子テーブル名:T_メンバー
^^^^^^^^^^^^
個人ID バンドID 名前 楽器 出身地 生年月日 備考
1 1 氷室 群馬
2 1 布袋 群馬
3 1 松井 群馬
4 1 高橋 福島
5 2 Ken3 東京
6 2 ZZZ 神奈川
7 2 AAA 東京
8 3 ジャガイモ 北海道
9 3 リンゴ 青森
10 3 メロン 北海道
11 3 コメ 新潟
12 2 高橋 愛 どこ?
13 4 高橋 雅裕 不明
14 4 高橋よしのぶ 不明
15 4 高橋ひさのり 不明
なんて感じのデータがあった時、
名前の検索で、高橋が指定された時に、
現在のDlookupで検索だと、対応できない。
今回は、リストボックスを使って、選択してみたいと思います。
--- 枠外・余談 --- 高橋と言えば高橋 雅裕でしょ(オイオイ)
高橋 愛?ダレそれ?・・・オイオイ
高橋と言えば、思い浮かぶのは、人それぞれだと思います。
プロ野球だと、高橋よしのぶ/ひさのり(漢字知らなくて(笑))
高橋 雅裕?ってダレって人も多いと思います。
名古屋電気高から大洋ホエルズに83(4)〜 96年に千葉ロッテへ移籍
Ken3が好きだった選手の一人なんですね。
^^^^^^^^^^^^^^^^^^^^^^^^^^
ピーク時は、
88年は遊撃手としては打率.293、守備率.989と12球団トップだったが、
タイトルは全て立浪に持っていかれる。
※88〜89年、山下を超える連続守備機会無失策の新記録(353)も達成したが、
翌年からは、あれ?ポロポロと失策王の道へ、、外野へコンバート?
月刊ホエールズの「まーちゃんのおしゃべり泥棒」なんてのもあったなぁ。
今、名ショートと言えば、ヤクルト宮本選手や巨人の川相選手って感じだけど。
/*
* 2.データが複数存在するかDCount関数とLike演算子で判断する
*/
まずは、データが複数存在するか、判断しますか。
元のソースは、
Private Sub btn検索_Click()
Dim str検索条件 As String
Dim str検索されたID As String
'フォームの値を元に検索条件を作成する
str検索条件 = "名前 = '" & Me!txt検索 & "'"
'str検索条件を条件にバンドIDをT_メンバーテーブルから検索する
str検索されたID = "" & DLookup("バンドID", "T_メンバー", str検索条件)
'結果のテスト表示
If str検索されたID = "" Then '検索できなかった?
MsgBox Me!txt検索 & "は、見つかりませんでした"
Else
'データを移動させる
DoCmd.GoToControl "バンドID" 'コントロールをIDへ移動
DoCmd.FindRecord str検索されたID 'データを検索する
End If
End Sub
こんな感じです、
ここに、高橋でパターンが一致するデータを数えるか。
データを数えるのって?
Dcount関数があったから、これを使ってみますか。
Dcount関数のヘルプを見ると、
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
expression.DCount(Expr, Domain, Criteria)
=DCount("[受注コード]", "受注", "[出荷先都道府県] = '愛知県'")
ってことは、
=DCount("フィールド名", "テーブル/クエリー", "検索条件")
って感じだから、
nRCount = DCount("メンバー名", "T_メンバー", "名前 Like '*高橋*'")
とすればOKかなぁ。
※テストで確認したいときは、イミディエイト ウインドウを使って、
? DCount("名前", "T_メンバー", "名前 Like '*高橋*'")
5
って感じで、テストすると、簡単ですよ。
↑確認イメージ画面。
オイ、なんだよ条件に指定してある、
"名前 Like '*高橋*'"って?
あっ、これですか?
通常 名前 = '高橋'なんて感じでイコールの完全一致なんだけど、
Like演算子を使用して、*や?を使って、パターンのマッチングが出来るんですよ。
名前 Like '*高橋*'
とすることで、高橋を含むデータを取り出すことができます。
※Like演算子、知っとくと便利ですよ。
さてと、カウント処理を組み込んでみましょう。
Private Sub btn検索_Click()
Dim str検索条件 As String
Dim str検索されたID As String
Dim nRCNT As Integer '検索されたレコード数
'フォームの値を元に検索条件を作成する
'Like演算子と*を前後に勝手に付けるNo.126で追加、ついでにtrimも
str検索条件 = "名前 Like '*" & Trim(Me!txt検索) & "*'"
'データを条件指定で検索して、該当数を求める
nRCNT = DCount("名前", "T_メンバー", str検索条件)
'検索結果によって、処理を分ける
Select Case nRCNT
Case 0: 'レコード数=0 見つからなかった
str検索されたID = "" 'IDに見つからなかった印として、""を代入
MsgBox Me!txt検索 & "は、見つかりませんでした"
Case 1: '1件見つかった(単独の時)
'str検索条件を条件にバンドIDをT_メンバーテーブルから検索する
str検索されたID = "" & DLookup("バンドID", "T_メンバー", str検索条件)
'↑バンドIDがほしかったので、DLookupでバンドIDを検索する
Case Is >= 2: '2件以上の時(Case Elseでも可能)
'複数データがあったので、別フォームから選択させる
MsgBox "複数見つかったよ、選んでね"
End Select
'データを移動させる
If str検索されたID <> "" Then 'バンドIDがセットされている?
DoCmd.GoToControl "バンドID" 'コントロールをIDへ移動
DoCmd.FindRecord str検索されたID 'データを検索する
End If
End Sub
変更したポイントは、
^^^^^^^^^^^^^^^^^^^^
str検索条件 = "名前 Like '*" & Trim(Me!txt検索) & "*'"
で、検索条件を 名前 Like '*高橋*' とテキストボックスの前後に*を+した。
次に、メンバーテーブルから、名前のパターンが一致するレコード件数を
nRCNT = DCount("名前", "T_メンバー", str検索条件)
のように、DCount関数を使い、求めます。
あとは、求められた件数によって、分岐させてます。
Select Case nRCNT
Case 0: 'レコード数=0 見つからなかった
str検索されたID = "" 'IDに見つからなかった印として、""を代入
MsgBox Me!txt検索 & "は、見つかりませんでした"
Case 1: '1件見つかった(単独の時)
'str検索条件を条件にバンドIDをT_メンバーテーブルから検索する
str検索されたID = "" & DLookup("バンドID", "T_メンバー", str検索条件)
'↑バンドIDがほしかったので、DLookupでバンドIDを検索する
Case Is >= 2: '2件以上の時(Case Elseでも可能)
'複数データがあったので、別フォームから選択させる
MsgBox "複数見つかったよ、選んでね"
End Select
普通に、
Case 0:だったら、該当データ無しにして、
Case 1:だったら、1件見つかったので(複数じゃないので)
親のバンドIDをそのまま求めます。
Case Is >= 2: 初めて書いたけど、2以上なら、複数なのでさらに選択処理を行う。
0と1以外のCase Elseって書き方でもいいけど、複数を強調したかったので、
気分で、Case Is >= 2としてみました。
なんとか、分岐したね。
あとは、複数時の選択処理ですね。
--- 余談・補足 ---
イミディエイト ウインドウ?
って感じの人は、
http://www.ken3.org/vba/iwind.html
に
イミディエイト ウインドウ(Ctrl+G) と Debug.Print
なんて感じて、軽く書いてあるので、見てください。
関数の簡単なテスト実行など、できます。
/*
* 3.データを選択後、結果を返すフォームを作成する
*/
ここまで、なんとか、できたので、
あとは、
高橋 愛
高橋 雅裕
高橋よしのぶ
高橋ひさのり
を
選択させる処理を作成するか。
http://www.ken3.org/backno/backno_vba19.html#91
の
No.91 Access ダイアログフォームって?何? acDialogとPublic変数を使用
で、
ダイアログフォームとPublic変数を使用して、
リストボックスから選択した値を返す方法をテストしてました。
この方法を使ってみたいと思います。
フォームを1つ作ります。
フォーム名: F_名前選択
リストボックス lst名前
選択ボタン btn選択
キャンセルボタン btnキャンセル
上記、3つのコントロールを配置します。
↑画面イメージ
リストボックス(lst名前)は、
^^^^^^^^^^^^^^^^^ 子テーブル名:T_メンバー
親テーブル名:T_バンド名 個人ID オートナンバー
バンドID オートナンバー <--> バンドID 長整数型(親テーブルとリンクする)
バンド名称 テキスト 名前 文字型
備考 メモ型 楽器 文字型
バンドIDでテーブルをつなげて、
バンドID,バンド名称,名前
を表示するように設定します。
まず、リストボックスのプロパティで、
値集合ソースを選択して、..のビルドボタンを押します
↑ビルドを押す画面イメージ
すると、クエリーウィザードが起動するので、
テーブルをつなげて、表示データを作ります
↑クエリーの作成イメージ
あとは、列見出しや幅のプロパティを調整します。
ここで、フォームを実行すると、
データがリストボックスに表示されると思います。
↑リストボックス、フォームのイメージ
あれれ、全部のデータが表示されているよ。
まぁまぁ、それは、最後に取っといて(オイオイ)
次に、標準モジュールに、Public変数とフォームの起動関数を書きます。
Public str選択バンドID As String 'グローバルでIDのエリアを取る
'フォームを開き、選択されたバンドIDを返す
Function SELECT_メンバー名()
Dim stDocName As String
Dim stLinkCriteria As String
str選択バンドID = "" 'グローバル変数の初期化
stDocName = "F_名前選択"
'acDialog指定でフォームを開く
DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog
'フォーム終了後、
SELECT_メンバー名 = str選択バンドID 'リターン値として返す
End Function
グローバルで、確保した変数、
str選択バンドIDを””で初期化してから、
F_名前選択フォームを開きます。
acDialog指定なので、フォームが閉じられたら、制御が戻ってきます。
フォーム側でグローバル変数に選択結果がセットされているので、
SELECT_メンバー名 = str選択バンドID
として、リターン値で値を返します。
F_名前選択フォーム側には、
まず簡単なのが、btnキャンセルの処理。
これは、キャンセルボタンがクリックされたら、何もしないでフォームを閉じます。
Private Sub btnキャンセル_Click()
DoCmd.Close '何もしないで閉じる
End Sub
クリックイベントに、DoCmd.Closeを書いただけでした。
次は、本命、選択ボタンがクリックされた時。
これも、あっけないんだけど、
Private Sub btn選択_Click()
'リストボックスの値をグローバルにセットする
str選択バンドID = Me!lst名前.Value
'↑連結列でリストボックス(1列目)はバンドIDにしてあるので
'値をそのまま代入してみた
'フォームを閉じる
DoCmd.Close '閉じる
End Sub
クリックイベントで、
リストボックスの値をグローバルstr選択バンドIDにセットして、
フォームを閉じました。
フォームが閉じられると、
stDocName = "F_名前選択"
'acDialog指定でフォームを開く
DoCmd.OpenForm stDocName, , , stLinkCriteria, , acDialog
'フォーム終了後、
SELECT_メンバー名 = str選択バンドID 'リターン値として返す
と、
SELECT_メンバー名 = str選択バンドID
の代入処理が走り、選択した値がFunction関数で返る、そんな仕組みです。
※なんか、スムーズじゃないんだけどね。。。
/*
* 4.リストボックスに条件を追加する
*/
さて、ここまで出来たので、あとは、
F_名前選択のリストボックスで、
条件指定してデータを表示すればOKかなぁ。
条件指定の方法、簡単な方法は、
リストボックスのクエリーに条件を追加します。
追加する条件は、名前の条件に、
Like "*" & Forms![F_Main]![txt検索] & "*"
を追加します。
↑クエリーに条件を追加したイメージ
Forms![F_Main]![txt検索]
と、メインフォームの検索条件、[高橋 ]と入力されているので、
それを使用しただけでした。
SELECT_メンバー名の関数で、メンバー選択後のバンドIDが返ってくるので、
Private Sub btn検索_Click()
Dim str検索条件 As String
Dim str検索されたID As String
Dim nRCNT As Integer '検索されたレコード数
'フォームの値を元に検索条件を作成する
'Like演算子と*を前後に勝手に付けるNo.126で追加、ついでにtrimも
str検索条件 = "名前 Like '*" & Trim(Me!txt検索) & "*'"
'データを条件指定で検索して、該当数を求める
nRCNT = DCount("名前", "T_メンバー", str検索条件)
'検索結果によって、処理を分ける
Select Case nRCNT
Case 0: 'レコード数=0 見つからなかった
str検索されたID = "" 'IDに見つからなかった印として、""を代入
MsgBox Me!txt検索 & "は、見つかりませんでした"
Case 1: '1件見つかった(単独の時)
'str検索条件を条件にバンドIDをT_メンバーテーブルから検索する
str検索されたID = "" & DLookup("バンドID", "T_メンバー", str検索条件)
'↑バンドIDがほしかったので、DLookupでバンドIDを検索する
Case Is >= 2: '2件以上の時(Case Elseでも可能)
'複数データがあったので、別フォームから選択させる
MsgBox "複数見つかったよ、選んでね"
str検索されたID = SELECT_メンバー名() '複数選択のフォーム処理
End Select
'データを移動させる
If str検索されたID <> "" Then 'バンドIDがセットされている?
DoCmd.GoToControl "バンドID" 'コントロールをIDへ移動
DoCmd.FindRecord str検索されたID 'データを検索する
End If
End Sub
追加したのは、
Case Is >= 2: で2件以上を判断したら、
str検索されたID = SELECT_メンバー名() '複数選択のフォーム処理
と、複数のデータを選択してみました。
↑高橋を検索したイメージ
-【けんぞう!】---------------------------------------------------------
転職関係、在宅プログラマー、SOHOの広告まとめました
http://www.ken3.org/etc/500yen/zaitaku.html いろいろとあるので転機の人はぜひ
登録料無料、匿名で探せるので在宅で小金稼ぎの人も見てね
~~~~~~~~~~~~~~~~
オレ様、私は、SE様だ、月給30万以上ボーナス100万を探すのもありだよ。
私にみたいにVBA少しできるぐらいだと仕事無いよ・・・なんて冷たく、
と軽く言われても匿名なら気にならないし(笑)
逆にこんな簡単な仕事で月給27万貰えるの?って会社もあるし、世の中イロイロ。
http://www.ken3.org/etc/500yen/job.html
------------------------------------------------------------------------
/*
* 5.終わりの挨拶
*/
今回は、Like演算子を使用して、検索文字の一部を入力させて、
名前 Like '*高橋*'みたいな、パターンマッチングに挑戦してみました。
今回の、サンプルファイルは、
http://www.ken3.org/vba/lzh/vba126.lzh
にdb126.mdb(Access2000版)が保存されています。
※実際にデータを検索しながら、試してみてください。
なんか、処理的にまだまだなんだけど、何かの参考となれば幸いです。
Excel/Access大好き、三流プログラマーKen3でした。
<要求を聞き、疑問点をつぶし、仕様書を書く>
どうも、三流プログラマーのKen3です。
最近、質問もらうけど、
なかなか、解答できてない三流プログラマーのKen3です。
※私のレベルで手に余る高度な質問が多くて。
/*
* 1. 今回のキッカケ
*/
質問をHPの感想書き込みでもらいました。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
質問者をお客様と見立てて、
勝手なストーリーを数回展開していく予定です。
※質問者にしてみれば、メルマガ書いてるヒマあったら、
回答速くヨコセって感じだと思うけど。
下記、もらった質問です。
------------------------
郵便番号についての集計を行うのですが、
条件が複数あり、どのように組めばいいのか迷っています。
使用するのはエクセル2000もしくはアクセスの2000。
元データはエクセルで保存されています。
条件
1郵便番号として入力した数値の選別・集計
1.7桁そろっているもの
2.3桁しかないもの
3.2桁しかないもの
4.その他
5.△(4で説明)
2選別した郵便番号の番号順にセルに貼り付ける
31の1.以外に該当したものは別のシートに分ける
4ただし、集計した全ての郵便番号の中で数が1〜9の場合は
「△」という名前にして集計表の最後に表示する。
(この△の場合、郵便番号欄が△という名称になる)
5選別した1〜5の色を分ける
5印刷の幅が決まっていて、郵便番号欄・集計数のセル幅が8.50、
セルの高さが13.50 A4用紙横で並べてゆき、足りない場合は
改ページを行う。(エクセルでの高さ、幅)
・・・注文が多くて申し訳ありません。
大変失礼な質問と思いますが、どうかよろしくお願い致します。
もし、アドバイスを頂けたら、と思います。
---------
/*
* 2.ステップ1 やりたいことの理解
*/
さてと、いきなりプログラムを組み始める人も居るけど、
通常は、やりたいことを理解します。
なんとなく、データを集計するんだなぁといったイメージは、わかりました。
処理やシステムの理解で、ポイントは、データの流れなので、
入力されるデータ(もらえるデータ)
と
処理して出力するデータ(結果・成果物、印刷、表示)
を中心にイメージすると、わかりやすいと思います。
※はじめのデータと結果から、途中をイメージする方法です。
/*
* 3.ステップ2 疑問点を洗い出し、質問してつぶす
*/
次は、わかったフリしないで、疑問点をまとめて、
もし疑問点があったら、依頼元に質問を出します。
今回私が、出した質問メールは、
----------
イメージが少し沸かない部分があるので、メールしました。
>郵便番号についての集計を行うのですが、
>条件が複数あり、どのように組めばいいのか迷っています。
>使用するのはエクセル2000もしくはアクセスの2000。
>元データはエクセルで保存されています。
まず、元データがExcelのシートに保存されていると思います。
これは、下記のようにA列に郵便番号が入っている、そんな感じですか?
A列
2200001
1940001
123
444
それとも、住所やその他、データが付いているのですか?
>条件
>1郵便番号として入力した数値の選別・集計
> 1.7桁そろっているもの
> 2.3桁しかないもの
> 3.2桁しかないもの
> 4.その他
> 5.△(4で説明)
>2選別した郵便番号の番号順にセルに貼り付ける
単純に、コードの順番か?
>31の1.以外に該当したものは別のシートに分ける
7桁そろっているもの
と
3桁しかないもの,2桁しかないもの,その他,△(4で説明)
の2つの結果シートを作成する?
>4ただし、集計した全ての郵便番号の中で数が1〜9の場合は
> 「△」という名前にして集計表の最後に表示する。
> (この△の場合、郵便番号欄が△という名称になる)
集計とは、同じ郵便番号を数えるのか?
郵便番号 集計数
1940001 5
2280002 20
3010005 6
だったら、
この1940001のデータは、△にする?
そして、表の最後に持ってくる。
とすると、3010005の6個も?△となる、そして最後に移動すると、
郵便番号 集計数
2280002 20
△△△ 5
△△△ 6
となるのか?
>5選別した1〜5の色を分ける
まぁ、イロを付けるとして、
>5印刷の幅が決まっていて、郵便番号欄・集計数のセル幅が8.50、
> セルの高さが13.50 A4用紙横で並べてゆき、足りない場合は
> 改ページを行う。(エクセルでの高さ、幅)
これは、横に並べる、
郵便番号 集計数 郵便番号 集計数 郵便番号 集計数
2280002 20 2280003 15 2280005 20
△△△ 5
△△△ 6
と、左から右、次の行か?
それとも、縦に並べて、上から下、次の列?
郵便番号 集計数 郵便番号 集計数 郵便番号 集計数
2280002 20 2600003 15 330005 20
2280003 15
2280005 12
・
・
△△△ 6
----------------
と、疑問点を相手に伝え、回答を待つ。
メールで軽く質問したけど、
質疑応答表(票)
^^^^^^^^^^^^^^^^
なんて感じで、日付・回答期限・回答者など付いた、
正式なフォーマットを使用している会社もあると思うので、
^^^^^^^^^^^^^^^^^^先輩に聞いてみてください。
/*
* 4.回答をもらったら、疑問がつぶれたか確認する
*/
質疑応答表(票)を送ると(質問・疑問を送ると)
しばらくすると、回答が来ます。
こちらの疑問がつぶれたか、心の中のヤバイ空気、ドス黒い疑問が晴れたか確認します
さらに、疑問が発生したら、その疑問に対して、また質問を投げかけます。
もらった回答は、下記のような感じです。
(かなり、見えてきましたね)
下記、もらった回答です。
--------
イメージの補足についてご説明させていただきます。
>
> まず、元データがExcelのシートに保存されていると思います。
> これは、下記のようにA列に郵便番号が入っている、そんな感じですか?
>
> A列
> 2200001
> 1940001
> 123
> 444
>
> それとも、住所やその他、データが付いているのですか?
>
これは住所や電話番号などが、順番についています。
A列に郵便番号・B列に氏名・C列に住所・D列に電話番号・・・
とエクセルシートに横並びに入力されています。
> >条件
> >1郵便番号として入力した数値の選別・集計
> > 1.7桁そろっているもの
> > 2.3桁しかないもの
> > 3.2桁しかないもの
> > 4.その他
> > 5.△(4で説明)
>
> >2選別した郵便番号の番号順にセルに貼り付ける
> 単純に、コードの順番か?
はい。コードの順番です。
>
> >31の1.以外に該当したものは別のシートに分ける
>
> 7桁そろっているもの
> と
> 3桁しかないもの,2桁しかないもの,その他,△(4で説明)
> の2つの結果シートを作成する?
そうです。結果シートが2つになります。
>
> >4ただし、集計した全ての郵便番号の中で数が1〜9の場合は
> > 「△」という名前にして集計表の最後に表示する。
> > (この△の場合、郵便番号欄が△という名称になる)
>
> 集計とは、同じ郵便番号を数えるのか?
> 郵便番号 集計数
> 1940001 5
> 2280002 20
> 3010005 6
> だったら、
> この1940001のデータは、△にする?
そのとおりです。
> そして、表の最後に持ってくる。
> とすると、3010005の6個も?△となる、そして最後に移動すると、
> 郵便番号 集計数
> 2280002 20
> △△△ 5
> △△△ 6
> となるのか?
この場合は
2280002 20
△△△ 11(上の△部分の和)になります。郵便番号の区別無く、
△として処理、加算します。
>
> >5選別した1〜5の色を分ける
>
> まぁ、イロを付けるとして、
>
> >5印刷の幅が決まっていて、郵便番号欄・集計数のセル幅が8.50、
> > セルの高さが13.50 A4用紙横で並べてゆき、足りない場合は
> > 改ページを行う。(エクセルでの高さ、幅)
>
> これは、横に並べる、
> 郵便番号 集計数 郵便番号 集計数 郵便番号 集計数
> 2280002 20 2280003 15 2280005 20
> △△△ 5
> △△△ 6
> と、左から右、次の行か?
>
> それとも、縦に並べて、上から下、次の列?
> 郵便番号 集計数 郵便番号 集計数 郵便番号 集計数
> 2280002 20 2600003 15 330005 20
> 2280003 15
> 2280005 12
> ・
> ・
> △△△ 6
たてに郵便番号、その横に、集計数、最後に三角となります。簡単ですが
エクセルイメージを添付させていただきます。(2シートにしています)
-----
/*
* 5.設計にとりかかる
*/
疑問も解決してきたので、
これくらい、設計無しでも?といった、上級者のかたも居るかもしれませんが、
ラフでも、流れぐらいは書かないと。
OS、使用言語・動作条件など
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
あまり書かないけど、Windows2004で動かない、
Access2005でエラー発生した、、、など、環境変わった時のタメに、
キチント仕様書には、OSや言語を明記しますか。
※いちばんありうるのは、Access97とExcel97の古いマシーンでも動かしたい
なんて感じで、あとから言われるパターンかなぁ。
だったらAccess97で作ったのに・・2000で作ったからフォームが・・なんてね。
Excel2000とAccess2000の環境で、今回は作成します。
※まぁ、ぐだぐだと基本設計書、要求仕様書がこんな感じで続くけど、
今回はパスします(オイオイ)
次に詳細設計に入ります。
プログラマーさん達が最低限ほしいのは、入力のフォーマットと出力、
中身の計算、集計処理内容なので、まず、そこら辺からつぶすと、
入力データ/入力ファイルフォーマット
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
チャント分析すると、いつ・どこで・ダレが・このデータを作成する。
データの作成・閲覧・変更・削除の権限は?なんて堅いこと書くけど、
手抜きでシンプルに、
集計データはExcel2000のシートに保存されています。
A列 B列 C列 D列
郵便番号 氏名 住所 電話番号
700-0941 あべ*** 岡山県岡山市・・・ 090-9999-9999
別紙、xxxx.xls参照とかやって、逃げるのもアリかなぁ
※質問者からは、丁寧なxlsファイルをもらいました。
↑入力シートイメージ
集計処理(集計ルール)
^^^^^^^^^^^^^^^^^^^^
あとは、入力データをどんな感じで、
集計したり、加工したりするルールを書くんだけど、
1.データのインポート
Excel2000の住所データをAccess MDBへインポートする。
郵便番号の項目をインポートする
2.集計処理
郵便番号をカウントする
郵便番号が7桁そろっているものを集計する
同様に、3桁しかないもの,2桁しかないもの,その他
を集計する。
集計結果が10以下(1〜9)のデータは、最後に△で集計する。
3.結果の出力
データをExcelシートへ出力する
たぶん、上記文章で書いても作業者から質問来るので、
質疑応答票を添付して、お客さんとのやりとりを見せたほうが、
話が早かったりします。
出力データ/出力、印刷イメージ
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
出力は、Excelのシート2枚です。
シート1(7桁正しいデータ)
郵便番号 集計数
000-0001 20
000-0002 19
000-0003 18
000-0004 11
郵便番号が正しく7桁そろっているもの、
なおかつ、集計数が10以上の
ものが郵便番号の番号順に並ぶ。
↑出力シートイメージ
シート2(7桁以外のデータ)
郵便番号 集計数 郵便番号 集計数
561 15 98 13
562 16 97 56 ←郵便番号が2桁しかないもの、なおかつ
563 20 78 35 集計数が10以上のものを番号順に並べる
564 36
565 29 2 15 ←郵便番号が1桁しかないもの、なおかつ
566 39 3 20 集計数が10以上のものを番号順に並べる
567 11
568 22 △△△ 1045
569 44 ↑ 郵便番号の集計で1〜9までのモノがあれば
570 33 △△△として郵便番号が何桁であろうが
571 55 この部分に計上することになる。
572 66
↑
郵便番号が3桁しかないもの、なおかつ
集計数が10以上のものを番号順に並べる
-【けんぞう!】---------------------------------------------------------
転職関係、在宅プログラマー、SOHOの広告まとめました
http://www.ken3.org/etc/500yen/zaitaku.html いろいろとあるので転機の人はぜひ
登録料無料、匿名で探せるので在宅で小金稼ぎの人も見てね
~~~~~~~~~~~~~~~~
オレ様、私は、SE様だ、月給30万以上ボーナス100万を探すのもありだよ。
私にみたいにVBA少しできるぐらいだと仕事無いよ・・・なんて冷たく、
と軽く言われても匿名なら気にならないし(笑)
逆にこんな簡単な仕事で月給27万貰えるの?って会社もあるし、世の中イロイロ。
http://www.ken3.org/etc/500yen/job.html
------------------------------------------------------------------------
/*
* 5.終わりの挨拶
*/
今回は、
プログラム作成依頼が来たら、どんな感じで設計するか、
そんな話でした。
※なんか、うまく書けなかったけど。
何かの参考となれば幸いです。
Excel/Access大好き、三流プログラマーKen3でした。
<AccessにExcelのシートをインポートする>
どうも、三流プログラマーのKen3です。
最近、質問もらうけど、
なかなか、解答できてない三流プログラマーのKen3です。
※私のレベルで手に余る高度な質問が多くて。
/*
* 1. 今回のキッカケ
*/
前回、軽く郵便番号の集計システムの設計をしました。
今回は、データのインポート方法を探ってみたいと思います。
入力データ/入力ファイルフォーマット
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
集計データはExcel2000のシートに保存されています。
A列 B列 C列 D列
郵便番号 氏名 住所 電話番号
700-0941 あべ*** 岡山県岡山市・・・ 090-9999-9999
・
・
Excelのシートをインポートする方法を探ってみます。
/*
* 2.シートをインポートするマクロを作成する
*/
AccessでVBAで組まなくても、
繰り返し行う操作をマクロ登録する機能があります。
マクロの新規作成を選択して、
アクションを探ると、
おっ、ワークシート変換なんてのがありますね。
これを使ってみるか。
↑マクロのアクションを選択したイメージ
ワークシートの変換を選択すると、
イロイロとパラメータを入れろと画面が出てくる。
変換の種類は、インポートだろ、
次は、ワークシートの種類か、Microsoft Excel 8-10と規定値のまま使用、
テーブル名はMOTO_DATA、
ファイル名は、e:\work\data.xlsとデータの位置をセット、
フィールド名は、はいにして先頭行をフィールド名指定にしました。
範囲は、空のまま。
これを保存します。
↑パラメータの入力イメージ
保存後、実行すると、Excelのシートがインポートされます。
テストで何回か実行した後、
テーブルのデータを見てみると、
おっ?マクロを実行した回数分データが追加されているよ。
なんかイヤナ感じだけど、インポートはOKですね。
↑回数分データが追加されているがインポート後のテーブルイメージ
データを消さないとイケナイのか、
DEL_MOTO_DATAって名前の削除クエリーを1つ作ります。
通常クエリーは選択クエリーなので、
メニューのクエリから削除を選択して、
テーブル内のデータを全て削除するクエリーを作成します。
↑削除クエリーの作成イメージ
あとは、マクロのアクションに、
今作成したDEL_MOTO_DATAをインポート前に実行するように、記述します。
右ボタンを押して、挿入を選択して、
ワークシート変換の前にクエリーを開くのアクションを挿入します。
開くのは作成したDEL_MOTO_DATAです。
↑クエリー開くを追加したイメージ
このマクロを実行すると、無事、データが入りました。
/*
* 3.マクロを変換して、VBAのモジュールにする
*/
マクロが出来たので、今度は、そのマクロをVBAのモジュールに変換してみます。
※まぁ、変換しないでもいいんだけど、ネタ的に使いたかったので(笑)
変換したいマクロを選択して、
右ボタンを押して、ショートカットメニューを表示させます。
その中から、名前を付けて保存を選択します。
貼り付ける形式をモジュールにします。
~~~~~~~~~~~~~~~~~~~~~~~~~~
↑マクロを選択後、右ボタン・形式をモジュールにする
OKボタンを押すと、下記のモジュールが作成されます。
'------------------------------------------------------------
' マクロ1
'------------------------------------------------------------
Function マクロ1()
On Error GoTo マクロ1_Err
DoCmd.OpenQuery "DEL_MOTO_DATA", acViewNormal, acEdit
DoCmd.TransferSpreadsheet acImport, 8, "MOTO_DATA", "e:\work\data.xls", True, ""
マクロ1_Exit:
Exit Function
マクロ1_Err:
MsgBox Error$
Resume マクロ1_Exit
End Function
こんな感じで、Accessのマクロをモジュールに直すことが出来ます。
まぁ、
DoCmd.OpenQuery
と
DoCmd.TransferSpreadsheet
を知っていればorヘルプから調べればいいんだけど。
変換されたモジュールを見ると、
DoCmd.TransferSpreadsheet acImport, 8, "MOTO_DATA", "e:\work\data.xls", True, ""
の、"e:\work\data.xls"の部分を変更すれば、違うファイルも出来そうだし、
"MOTO_DATA"はテーブル名とか、なんとなくわかりそうだよね。
-【けんぞう!】---------------------------------------------------------
月500円、タバコなら2箱、120円缶コーヒーなら4缶分の謝礼をGetするなら
http://www.ken3.org/etc/500yen/ ←無料アンケート系の広告です。
『チッ、がんばって回答して月500円かよ』(お馬鹿なプログラマー:30歳)
------------------------------------------------------------------------
/*
* 4.終わりの挨拶
*/
今回は、
AccessにExcelのシートをインポートする方法
を探ってみました。
マクロのアクションで作って、それをVBAのモジュールに変換してみました。
なんか、あまりスマートじゃなかったけど、
こんな方法もあるってことで。
データがインポートできたので、次は、集計ですね。
何かの参考となれば幸いです。
Excel/Access大好き、三流プログラマーKen3でした。
<Access いろいろとクエリーでグループ集計をしてみる>
どうも、三流プログラマーのKen3です。
最近、質問もらうけど、
なかなか、解答できてない三流プログラマーのKen3です。
※私のレベルで手に余る高度な質問が多くて。
今回の、サンプルファイルは、
http://www.ken3.org/vba/lzh/vba129.lzh
にdb129.mdb(Access2000版)が保存されています。
※クエリーをいじって、遊んでみてください。
/*
* 1. 今回のキッカケ
*/
郵便番号の集計システムを現在やってます。
前回、ExcelのシートをAccessにインポートしました。
今回は、データを集計してみたいと思います。
集計方法(集計ルール)
^^^^^^^^^^^^^^^^^^^^^^
In message "[VBAで楽しく No.127] - 要求を聞き、疑問点をつぶし、仕様書を書く",
>2.集計処理
> 郵便番号をカウントする
> 郵便番号が7桁そろっているものを集計する
> 同様に、3桁しかないもの,2桁しかないもの,その他
> を集計する。
> 集計結果が10以下(1〜9)のデータは、最後に△で集計する。
---
なんて、ルールより、ほしい結果を見た方がわかり易いかな。
(※だったら、このわかりにくい設計書は失敗ってことでは?)
シート1(7桁正しいデータ)
郵便番号 集計数
000-0001 20
000-0002 19
000-0003 18
000-0004 11
シート2(7桁以外のデータ)
郵便番号 集計数 郵便番号 集計数
561 15 98 13
562 16 97 56 ←郵便番号が2桁しかないもの、なおかつ
563 20 78 35 集計数が10以上のものを番号順に並べる
564 36
565 29 2 15 ←郵便番号が1桁しかないもの、なおかつ
566 39 3 20 集計数が10以上のものを番号順に並べる
567 11
568 22 △△△ 1045
569 44 ↑ 郵便番号の集計で1〜9までのモノがあれば
570 33 △△△として郵便番号が何桁であろうが
571 55 この部分に計上することになる。
572 66
↑
郵便番号が3桁しかないもの、なおかつ
集計数が10以上のものを番号順に並べる
/*
* 2.単純に集計を行う
*/
早い話が、インポートされた、
MOTO_DATA テーブルを同じ郵便番号で集計して(数を数えて)
それぞれの条件で扱いやすければいいって感じで。
MOTO_DATAテーブル内のテストデータ
郵便番号 氏名 住所 電話番号
194-0012 三流 東京都町田市 070-9999-8888
228 タコスケ 神奈川県相模原市 070-9999-8889
220-0021 金城 神奈川県横浜市西区 070-9999-8890
220-0021 内川 神奈川県横浜市西区 070-9999-8891
220-0021 鈴木尚 神奈川県横浜市西区 070-9999-8892
・
・
・
まずは、単純に集計してみます。
クエリーで、MOTO_DATAを選択後、郵便番号を選び、
メニューの表示を選択、集計にして、
グループ化とカウントを入れます
↑操作イメージ
すると、郵便番号でカウントされた値が集計されたクエリーができます。
郵便番号 郵便番号のカウント
194-0012 1
220-0021 14
228 1
232 11
700-0941 1
↑クエリー結果イメージ
/*
* 3.文字数を数えてみる(演算フィールドの追加)
*/
結果が、
郵便番号 郵便番号のカウント
194-0012 1
220-0021 14
228 1
232 11
700-0941 1
と、なったけど、このままでは、使いにくいです。
194-0012 1
220-0021 14
700-0941 1
と
228 1
232 11
の2つに分けたいんだけど、何か、方法は無いのか・・・
当たり前の話、文字数が違うので、Len関数を使って、文字数を求めてみます。
桁数:Len([郵便番号])とクエリーの演算フィールドを作成してみます。
フィールドに桁数:Len([郵便番号])
集計を演算にしたフィールドを作成します。
↑演算フィールド作成イメージ
このクエリーを実行すると、
郵便番号 郵便番号のカウント 桁数
194-0012 1 8
220-0021 14 8
228 1 3
232 11 3
700-0941 1 8
上記のような結果が得られます。
↑実行結果イメージ
/*
* 4.大きく3つのパターンに分ける
*/
郵便番号 郵便番号のカウント 桁数
194-0012 1 8
220-0021 14 8
228 1 3
232 11 3
700-0941 1 8
ここまで、なんとか、クエリーでもってこれました。
これを
パターン1
郵便番号7桁(−付で8桁)、カウント10以上
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
郵便番号 郵便番号のカウント 桁数
220-0021 14 8
パターン2
郵便番号7桁以外(−付で8桁以外)、カウント10以上
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
郵便番号 郵便番号のカウント 桁数
232 11 3
パターン3
カウント数が10以下(1〜9)※郵便番号が何桁であろうが
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
郵便番号 郵便番号のカウント 桁数
194-0012 1 8
228 1 3
700-0941 1 8
に分けてみたいですね。
元のクエリーに条件を付けて、
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
3つのクエリーを作成してみたいと思います。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
パターン1 Q_YUBIN_7
郵便番号7桁(−付で8桁)、カウント10以上
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
郵便番号 郵便番号のカウント 桁数
220-0021 14 8
---
条件は >=10(10以上) で =8(桁数は8桁)
↑設定・実行結果イメージ
パターン2 Q_YUBIN_ETC
郵便番号7桁以外(−付で8桁以外)、カウント10以上
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
郵便番号 郵便番号のカウント 桁数
232 11 3
---
条件は >=10(10以上) で <>8(桁数はNot 8桁)
↑設定・実行結果イメージ
パターン3 Q_YUBIN_1to9
カウント数が10以下(1〜9)郵便番号が何桁であろうが
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
郵便番号 郵便番号のカウント 桁数
194-0012 1 8
228 1 3
700-0941 1 8
---
条件は <10 (10以下) で (桁数の条件は無し)
↑設定・実行結果イメージ
-【けんぞう!】---------------------------------------------------------
月500円、タバコなら2箱、120円缶コーヒーなら4缶分の謝礼をGetするなら
http://www.ken3.org/etc/500yen/ ←無料アンケート系の広告です。
『チッ、がんばって回答して月500円かよ』(お馬鹿なプログラマー:30歳)
------------------------------------------------------------------------
/*
* 5.終わりの挨拶
*/
今回は、
グループ化の集計方法
を探ってみました。
3つのグループを作成することが出来ました。
あとは、この集計結果をExcelへ出力です。
なんか、あまりスマートじゃなかったけど、
こんな方法もあるってことで。
今回の、サンプルファイルは、
http://www.ken3.org/vba/lzh/vba129.lzh
にdb129.mdb(Access2000版)が保存されています。
※クエリーをいじって、遊んでみてください。
何かの参考となれば幸いです。
Excel/Access大好き、三流プログラマーKen3でした。
ページフッター(リンクや広告など)
[三流君(TOP ken3.org へ戻る) ]
-- [VBA系TOPへ ]
---- [VBA系バックナンバー目次へ移動 ]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application") ]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application") ]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application") ]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作 ]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作 ]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数 ]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する ]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する ]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他 ]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作 ]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説 ]・・・その他、グダグタ解説してます
広告
-- [通販系の売れ筋広告へ ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記 ] ← 日々の作業を少々
-- [通販あしあと ] ← 通販ページの足跡を一覧で羅列
情報を探す
情報を探すならGoogleかな?
↓Web全体、サポート情報(support.microsoft.com)や三流君VBA(ken3.org)から検索する
書籍の購入
Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??
コンピュータ書籍の発送がハヤイ専門店
コンピュータの本・専門店
※種類が豊富 で探し易いです。※在庫ありが48時間以内発送 が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり
amazon.co.jpでキーワード別チェック
下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する ] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP ] -- システムはデータベース設計が重要
[ADO接続を探る ] -- VBAなのでADO接続を押さえておく
[Windows APIを探る ] -- さらにAPIになて知ってれば強力だ!
[.NETを探る ] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係 ] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発 ] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成 ] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・