[三流君] −−> [VBAで楽しく] −−> [バックナンバー一覧]
−−> No.142 単体部品を結合する、接着剤は変数で?

単体部品を結合する、接着剤は変数で?

メルマガ発行内容

<単体部品を結合する、接着剤は変数で?>

(VBScriptでTextからExcelシートへデータセット) こんにちは、三流プログラマーのKen3です。 今回は、 VBScriptでTextからExcelシートへデータセットしてみます。

/* * 1. 今回のキッカケ */

VBScriptでTextからExcelシートへのデータをセットする、 そんな処理の依頼を受けました。 依頼内容を勘違いをしつつ、まとめまた話は下記を見て笑ってもらって、 今回は、私の作成方法を軽く書いてみたいと思います。 依頼内容: No.140 ヒアリング、プログラム時にほしい情報をもらい設計する http://www.ken3.org/backno/backno_vba29.html#140 で、 処理概要 xxxx.vbsをダブルクリックしたら、 xxxx.txt 入力ファイル名を入力(できたら選択) xxxx.xls 出力ファイル名を入力(できたら選択) シートへのデータセット処理を開始する。 入力ファイル仕様 sheet_1 A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1.・・・ A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2.・・・ A3,B3,C3,D3,E3,F3,G3,H3,I3,J3,K3,L3.・・・ A4,B4,C4,D4,E4,F4,G4,H4,I4,J4,K4,L4.・・・ ・ ・ ・ sheet_2 A1,B1,C1,D1,E1,F1,G1,H1,I1,J1,K1,L1.・・・ A2,B2,C2,D2,E2,F2,G2,H2,I2,J2,K2,L2.・・・ 先頭6文字がsheet_の行は、シート名の行で、ここでシートを切り替える その他の行は、データで、A1〜L4へセットする。 と まとめました。(ほぼ、質問そのままなんだけど(オイオイ)) No.141 箇条書きで必要部品を洗い出し単体テストする http://www.ken3.org/backno/backno_vba29.html#141 で、 必要と思われる機能を洗い出し、単体でチェックしました。 今回は、それをつなげて、1つのプログラムにしてみます。

/* * 2.単体部品を結合する、接着剤は変数? */

単体で、関数の機能や環境/言語特性など確認できたら、 機能をつなげて、1つのシステム(システムはオオゲサカな)を作成します。 例をあげると、 ファイル名入力のプログラム ~~~~~~~~~~~~~~~~~~~~~~~~~~ strPATH = InputBox("ファイル名を入力してね","入力ファイル","d:\work\a.txt" ) MsgBox strPATH & "を入力しました。" と Excelファイルを開くプログラム ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Dim oApp Set oApp = CreateObject("Excel.Application") oApp.Visible = False '不可視にする oApp.UserControl = True 'Excelファイルを開く oApp.Workbooks.Open "E:\work\b.xls" なら 冗談で、タイトルをつなげると、 ファイル名入力、Excelファイルを開くプログラム ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ strPATH = InputBox("ファイル名を入力してね","入力ファイル","d:\work\a.txt" ) Set oApp = CreateObject("Excel.Application") oApp.Visible = False '不可視にする oApp.UserControl = True 'Excelファイルを開く oApp.Workbooks.Open strPATH となります。 変数を接着剤じゃないけど、固定で作成したテストプログラムを参考にして、 可変部分を変数を使いながら値を渡し、コントロールします。

/* * 3.そんなこんなで作成してみた。 */

下記のようなスクリプトを作成してみました。 部品の単体チェックで精度が上がっているので、 つなげるだけでできました。 (ホントかよ?なんかウソくさいんだよね・・・) 'test.vbs 'エラーチェックしてないけど 'xxxx.txt 入力ファイル名を入力(できたら選択) strIN = InputBox("入力txtは?","入力ファイル","e:\work\a.txt" ) '入力ファイルのオープン ' FileSystemObjectを生成します、、って英文、そのままジャン。 Set objFS = CreateObject("Scripting.FileSystemObject") '読取専用モードで開く Set ts = objFS.OpenTextFile(strIN, 1, True) '※ファイルの存在チェックしろよ↑ 'xxxx.xls 出力ファイル名を入力(できたら選択) strOUT = InputBox("セットするxlsは?","使用ファイル","e:\work\b.xls" ) '出力ファイルのオープン Set oApp = CreateObject("Excel.Application") oApp.Visible = True '可視にする oApp.UserControl = True 'Excelファイルを開く oApp.Workbooks.Open strOUT '※エラーチェックしろよ・・・ '入力ファイルがなくなるまでループ(データのセット) nYLINE = 1 '1行目でシート選択に行くので意味無いけど初期化 Do While ts.AtEndOfStream = False '*6ファイルの終端になってない間ループ strDATA = ts.ReadLine 'ファイルからデータを一行を読む If Left(strDATA, 6) = "sheet_" Then 'シートの切り替えか?チェックする On Error Resume Next oApp.Sheets(strDATA).Select 'シートを選択する If Err.Number <> 0 Then 'シート選択エラーなら 'シートが無いなら、シーと作んなきゃね oApp.Sheets.Add 'シートを追加する oApp.ActiveSheet.Name = strDATA '名前を変更する Else 'エラーが発生してない(正常時は)シート内のデータをクリアする '前回の食べ残しデータをキレイにするか oApp.Cells.Delete '全てのセルを削除する End If 'セットする行番号を1に初期化する nYLINE = 1 Else 'データのセット 'データを分解する strBOX = Split(strDATA, ",") '分解されたデーターをセットする For i = 0 To UBound(strBOX) 'UBound使用インデックス最大値までループ oApp.Cells(nYLINE, i+1) = strBOX(i) 'i番目のデータをセットする Next nYLINE = nYLINE + 1 'セット行位置を次の位置へ End If Loop '後始末 '入力ファイルクローズ ts.close '使ったファイルは閉じようよ '出力ファイルクローズ oApp.ActiveWorkbook.Save 'ファイルの保存 'Excel終了確認 If Msgbox("Excelを閉じますか?", 4) = 6 Then oApp.Quit 'Excelアプリの終了 End If '--------------------- -【けんぞう!】--------------------------------------------------------- 月500円、タバコなら2箱、120円缶コーヒーなら4缶分の謝礼をGetするなら http://www.ken3.org/etc/500yen/ ←無料アンケート系の広告です。 『チッ、がんばって回答して月500円かよ』(お馬鹿なプログラマー:31歳) ※家族4人分の登録でも月2000円、、、なんとかプロバイダー代くらいかなぁ。 ------------------------------------------------------------------------

/* * 4.終わりの挨拶 */

今回は、 単体で確認済みのモジュール/プログラム を 変数を使って、結合して、1つのプログラムとしました。 No.141 箇条書きで必要部品を洗い出し単体テストする http://www.ken3.org/backno/backno_vba29.html#141 もあわせて確認して、 こんな作業の進め方もあるんだなぁ・・・と思っていただければうれしいです。 何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.142を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります

ページフッター(リンクや広告など)


[三流君(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)から検索する
Google
Web www.ken3.org
www.microsoft.com support.microsoft.com

あとは、項目別にMSでお勉強かな?
◆ マイクロソフト サイトの歩き方
◇ How-To インデックス
◇ FAQ インデックス
◇ スキルレベル別おすすめコンテンツ
◇ テクノロジ マップ
◇ テーマ別技術資料一覧

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・