<手抜きの進め?、、> 目次 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.終わりの挨拶 */ 今回も、積み残しました。 ユニコード、、、わかっていないのが、 バレましたね。。。 次回にナントカ、、、
ここまで、読んでいただきどうもです。ここから下は、三流君のホームページの紹介・案内です
目的の情報が見つかったか?少々心配しつつ、、、
項目別に本音?それとも建て前?的な記事をまとめました。
気になったジャンル↓を選択してください。 |
Blogとリンク:[三流君の作業日記]/ [愚痴(Bookmark)]/ [広告Blog(Bookmark)]