[三流君] −−> [プログラマー業務の愚痴] −−> [バックナンバー一覧]
−−> No.034 手抜きの進め?、、

手抜きの進め?、、


本文(発行内容)


<手抜きの進め?、、>
目次
1.はじめの挨拶
2.読者より、面白いページ教えてもらいました。
3.読者より、質問。
4.CSVから固定長(普通の)に変換 楽して、、、
5.しかたない、、、自分で作ろう、、、
6.おわりの挨拶
----------------------------------------------------------------------------
/*
 * 1.こんにちは
*/
こんにちは。
なんか、最近、ネタ消化不良ぎみで、
発行間隔があいてしまいました。

今回の内容は、
手抜きです。。。

えっ、いつもダロ、、、なんて、こと言わないで、、
少しお付き合いください。

/*
 * 2.読者より、面白いページ教えてもらいました。
*/

読者より、面白いページ教えてもらいました。

リンクフリーなので、載せます。
http://www.interq.or.jp/kansai/kanae/
このページの作者のほうが、切り口、面白いです(いい味だしてます)

まぁ、十人十色だから、いっかな。

お時間のある人は、見てみてください。
(試食してください、味は、Ken3好みですよとても、、、)

最近、ネタ消化不良だからって、手抜きするなよな。。。
えっ、たまたま、おいしいお店?を紹介しただけですよ。
そんなことしてると、大切な読者、取られちゃうよ?
あっ、そっか。。。

/*
 * 3.読者より、質問。
*/
メールで直接、下記の質問、来ました。
ありがたいです、、、最近、サボリぎみなのに、、、

---------
>それでは、CSVから固定長(普通の)に変換はどうでしょうか?
>サンプルデータは会員番号1(8桁)、漢字氏名(20桁)、ローマ字
>(18桁)、生年月日(10桁)、会員番号2(10桁)、暗証番号
>(3桁)で構成されています。
>簡単すぎるでしょうが、宜しくお願いします。
---------

なんか、私の実力、誤解されてるような、、、
三流プログラマなんで、期待しないで下さい。。。

---------
>以前、BASICで、行列関数を使って、支店ごとの仕入れ金額計算と、販売数量把握の
>ための、プログラムを作ったことがあるのですが、BASICから、VBAに移行するには、
>どうしたらよいのでしょうか。
---------

BASICから、VBへの移植かぁ、、、なんか、仕事でもあったような。
ポイント、どこだろう?、、、まとめてみる価値、ありそうですね。
*今後の課題ネタですね

---------
>VBA等の単語の意味を書いた本があれば紹介してほしいのですがよろしくお願いしま
>す。
---------

冷たく、ヘルプを見る、、じゃなくて、う〜ん、
どの本だろう?
私は、コレがキッカケでおぼえました、、の本、大募集。
私もHPに、Ken3の書籍一覧、載せます(予定)
*毎月買ってる本、昔買った本の一覧を載せてみようと思います
 バカ正直に、エロ本載せるなって、、
 わかってますよ、コンピュータ関係だけですよ。まったく、、
 (また、女性読者減少だね、、まったく、、もう、、、)

すこし、疲れてるので、このへんで?








/*
 * 4.CSVから固定長(普通の)に変換 楽して、、、
*/
CSVから固定長(普通の)に変換
かぁ、、、
Excelの機能で、できないかなぁ、、、
チョット、やってみますか。
( hosoku/034/index.html 参照 )

まず、Excelを起動して、
ファイル開くのテキストファイル、、、

ファイル名を指定して、
おっと、次は、カンマやタブなどの区切り文字、、
を選択して、、

区切り文字の種類をカンマにレ(チェック)を付けて、

文字列にして、取り込み、、、完了。

あとは、固定長で、テキストを保存すれば、OKかな。。。

あれ、、名前を付けて保存に、固定長テキストファイルが無い???
えっ、なんで???Excelの機能にないの?
(↑、、これ、Ken3のマチガイかもしれないので、要調査です、、)

/*
 * 5.しかたない、、、自分で作ろう、、、
*/ 
自分で、作ることにします。
Accessのテーブルに入れれば、なんかできそうな気がする
けど、Excel VBAでカッコわるく作ります。
(とりあえず、固定で、汎用性の無いプログラムで、、、)

マクロ記録で、途中まで作ります。。。
オイオイ、そんなんで、いいの?
まぁまぁ、、、途中までは、適当に、、最後の味付けだけ、
今回は、がんばります。
( hosoku/034/index.html#009 参照 )

ツール、マクロ記録を選択。
先ほどの手順で、テキストファイルを読み込みます。

ALT+F11を押すと、
すると、下記のようなモジュールができてます。
*あいかわらず、Excel君すごいような、、
 バカ正直なようなコード書いてくれます
 (ほんと、助かります、三流の私は、、、)

Sub Macro1()
'
' Macro1 Macro
' 録日 : 1999/12/21  
'

'
    Workbooks.OpenText FileName:="D:\034\Sample.txt", StartRow:=1, DataType:= _
        xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
        Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False _
        , FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 5), Array(5, 2), _
        Array(6, 2))
End Sub

まぁ、意味わかんないけど、これで、CSVがExcelになります。

あとは、このコードに肉づけして、、、

Sub Macro1()
    
    Dim strINFname  As String
    Dim strOUTFname As String
    
    Dim nYLINE As Integer
    Dim x      As Integer
    Dim OUT_FNO%
    
    Dim nOUTSIZE(10) As Integer     '10もいらないでしょ、、、
    Dim strOUTBUF As String
    
    ' csvtotxt.xls のパスを使用して、INファイル、Outファイルの
    'ファイル名を作成する
    strINFname = ActiveWorkbook.Path & "\Sample.txt"
    strOUTFname = ActiveWorkbook.Path & "\out.txt"
    
    'お行儀良く、入力ファイルがアルか、チェックしますか、、、
    If Len(Dir(strINFname) & "") = 0 Then
        MsgBox strINFname & "ファイルが見つかれません"
        Exit Sub  'モジュールを抜ける
    End If
    
    '入力ファイルをCSVで開く      ↓変数に変更
    Workbooks.OpenText FileName:=strINFname, StartRow:=1, DataType:= _
        xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
        Tab:=False, Semicolon:=False, Comma:=True, Space:=False, Other:=False _
        , FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 5), Array(5, 2), _
        Array(6, 2))
        
    '出力テキストファイルを作成する
    'シーケンシャル ライト モードで開きます
    OUT_FNO = FreeFile
    Open strOUTFname For Output As #OUT_FNO
    
    '出力先のサイズを代入
    'サンプルデータは会員番号1(8桁)、漢字氏名(20桁)、ローマ字
    '(18桁)、生年月日(10桁)、会員番号2(10桁)、暗証番号
    '(3桁)で構成されています。
    nOUTSIZE(1) = 8
    nOUTSIZE(2) = 20
    nOUTSIZE(3) = 18
    nOUTSIZE(4) = 10
    nOUTSIZE(5) = 10
    nOUTSIZE(6) = 3
    
    'データが無くなるまでループ(A列が空白になるまで)
    'おいおい、データが1行しかなかったら、どうなるの?<<<知らない、、
    nYLINE = 2   'タイトルを抜かし、2行目から、スタート
    While Len(Cells(nYLINE, 1) & "") <> 0
        For x = 1 To 6 'AからF列まで処理
            strOUTBUF = LeftB(Cells(nYLINE, x), nOUTSIZE(x))
            Print #OUT_FNO, strOUTBUF; '←を付けると改行されない
        Next x
        Print #OUT_FNO, ""     '改行のみする
        nYLINE = nYLINE + 1  '忘れないようにカウントアップ
    Wend
    
    Close #OUT_FNO                  ' ファイルを閉じます。

    '結果をメモ帳表示
    Shell "notepad.exe " & strOUTFname, vbNormalFocus
        
End Sub


こんな感じで、、、、

あれ、、、うまく行かない、、、
今日は、あきらめます(すみません)
strOUTBUF = LeftB(Cells(nYLINE, x), nOUTSIZE(x))
これが、おかしいみたいですが、、、

/*
 * 6.終わりの挨拶
*/
今回も、積み残しました。
ユニコード、、、わかっていないのが、
バレましたね。。。

次回にナントカ、、、


ページフッター

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

リンクや広告など

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

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

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

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

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



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