cistronezkのプロフィール

@cistronezk cistronezk
ありがとう数306
質問数0
回答数526
ベストアンサー数
120
ベストアンサー率
38%
お礼率
0%

  • 登録日2009/07/31
  • VBSでCSVのキー項目の取得

    VBSでCSVファイル(UnicodeBE BOMなし)内のデータを キー項目(コード)ごとに分け、 それぞれ別のCSVファイルに出力しようとしています。 (ファイル名にコードを付与することで別々にします。) しかし、キー項目の取得に失敗しているようで 分岐処理が正しく行われていません。 CSVファイル(test_in.csv)は以下のような形式です。 (実際のファイルに項目行はありません) 連番,コード,フラグ,日付 1,0001,A,20091001 2,0002,A,20091001 3,0002,U,20091002 4,0001,D,20091003 以前、こちらで質問し、ご回答頂いた内容を基に 処理を実装しました。 Option Explicit Dim iSt Dim tPath Dim oFso Dim stdOut Dim aLine Dim field Dim wk Set iSt = WScript.CreateObject("ADODB.Stream") iSt.Open iSt.Type = 2 'バイナリ iSt.Charset = "UTF-16BE" iSt.LoadFromFile("test_in.csv") iSt.LineSeparator = -1 'CRLF iSt.Position = 0 tPath = "E:\\test_out.csv" Set oFso = CreateObject("Scripting.FileSystemObject") Set stdOut = CreateTextFileBE(oFso,tPath) Do While Not iSt.EOS aLine = iSt.ReadText(-1) field = split(aLine,",") aLine = join(field,",") if field(1) = "0002" then WriteLine stdOut,aLine end if Loop iSt.Close oFso.Close Set iSt = Nothing Set oFso = Nothing WScript.Quit Function CreateTextFileBE(fso,Path) fso.CreateTextFile(Path).Write Chr(&HFE) & Chr(&HFF) Set CreateTextFileBE=fso.OpenTextFile(Path,8,,True) End Function Sub WriteLine(stdOut,Line) stdOut.Write Line & vbCrLf End Sub 0002のレコードが入ったCSVファイルを出力しようとしましたが、 レコードなしのCSVファイルが作成されてしまいます。 コードごとにファイルを分ける処理についてもよくわからず、 取りあえずコードを限定し1ファイルだけの出力にしています。

  • エクセルに関しての質問です!

    図のようにB13にB列の最大値を求めたいのですが、 A列が"■"だった場合の条件付で最大値を求めたいです。 B13にどうのような数式を使えばよろしいでしょうか? よろしくお願いします┏O  ※B13=MAX(INDEX((A1:A11="■")*B1:B11,)) という回答を別の質問スレで頂いたのですが、なぜかエラーになってしまいます。 OpenOffice.org3.1を使っていますが、エクセルだといけるのにOpenOfficeだとエラーになってしまうのでしょうか・・・

  • マクロを組んで作業するのは実力ではないですか?

    私の職業は一般事務(派遣)ですが 少しVBAがわかるのでルーチン化できるものはマクロを組んでいます。 そうすることによってエクセルで1時間かかる作業が1分で終わることがあります。 なので職場では「仕事が早い、仕事ができる」と評価されることがありますが 先日先輩に怒られました。 内容は ・VBAを使うのはずるい ・それは実力ではない ・仕事が早いというのは同じ環境でどれだけ間違いがなく効率よく作業ができるかだ。 ・マクロを組むのはズルとしているのを同じ と。 確かに手作業で行なえば周りの人と同じくらいの速さなので 周りと同じ環境であれば(マクロを組まなければ)仕事が早いとは言えないかもしれません。 しかし業務をどう効率よくして作業をするかを考え実践するのも仕事のうちだと思うのですが 私の考えは間違ってますか? 入力ミスもチェックするコードを書いたので、ミスはありません。 「マクロを組んだ方が仕事が早くなるが それが仕事ができる人には繋がらない」 のでしょうか? 職場にはマクロを組めるのは私しかいません。 仕事が早く終わったからって遊んでるわけではないし 時間が余れば さらに効率化できないかを考えたりしています。

    • 1wer56
    • 回答数44
  • Excel2003で列数制限以上のCSVファイルを読み込む方法

    初めて投稿いたします。 仕事で使うCSV形式のテキストファイルをExcel2003に読み込ませようとしています。1つのデータ群が数値50個の連続データで構成されていますが、改行情報が入っていないため、データ群が多くなると列数制限(256列まで)でファイル自体が単純に読めない状態です。 データ群毎に改行すれば、1枚のワークシートで読み込めると思います(下記イメージ)。何とか頑張ってVBAマクロで作成したいと思います。 参考になるサンプルマクロとかをご存じないでしょうか?CSVエディタとの併用も考えましたが、Excelだけで完結できればありがたいです。 どうぞよろしくお願い申し上げます。 [現在のデータ形式イメージ] a1,a2,…,a50,b1,b2,…,b50,c1,c2,…,c50,d1,d2,…,d50,……… (1行で連続したデータ) [変更後のデータ形式イメージ] a1,a2,…,a50 b1,b2,…,b50 c1,c2,…,c50 d1,d2,…,d50 e f … (1行あたり50列のデータ)

  • VBSでCSVのキー項目の取得

    VBSでCSVファイル(UnicodeBE BOMなし)内のデータを キー項目(コード)ごとに分け、 それぞれ別のCSVファイルに出力しようとしています。 (ファイル名にコードを付与することで別々にします。) しかし、キー項目の取得に失敗しているようで 分岐処理が正しく行われていません。 CSVファイル(test_in.csv)は以下のような形式です。 (実際のファイルに項目行はありません) 連番,コード,フラグ,日付 1,0001,A,20091001 2,0002,A,20091001 3,0002,U,20091002 4,0001,D,20091003 以前、こちらで質問し、ご回答頂いた内容を基に 処理を実装しました。 Option Explicit Dim iSt Dim tPath Dim oFso Dim stdOut Dim aLine Dim field Dim wk Set iSt = WScript.CreateObject("ADODB.Stream") iSt.Open iSt.Type = 2 'バイナリ iSt.Charset = "UTF-16BE" iSt.LoadFromFile("test_in.csv") iSt.LineSeparator = -1 'CRLF iSt.Position = 0 tPath = "E:\\test_out.csv" Set oFso = CreateObject("Scripting.FileSystemObject") Set stdOut = CreateTextFileBE(oFso,tPath) Do While Not iSt.EOS aLine = iSt.ReadText(-1) field = split(aLine,",") aLine = join(field,",") if field(1) = "0002" then WriteLine stdOut,aLine end if Loop iSt.Close oFso.Close Set iSt = Nothing Set oFso = Nothing WScript.Quit Function CreateTextFileBE(fso,Path) fso.CreateTextFile(Path).Write Chr(&HFE) & Chr(&HFF) Set CreateTextFileBE=fso.OpenTextFile(Path,8,,True) End Function Sub WriteLine(stdOut,Line) stdOut.Write Line & vbCrLf End Sub 0002のレコードが入ったCSVファイルを出力しようとしましたが、 レコードなしのCSVファイルが作成されてしまいます。 コードごとにファイルを分ける処理についてもよくわからず、 取りあえずコードを限定し1ファイルだけの出力にしています。