• 締切済み

VBSで空白の制御ができない

勉強中の身ですが、行き詰ったので質問です。 VBSで2つのCSVファイルを読み込み、内容の異なるレコード、カラムを検知して差異があるレコードを取得させたいです。 CSV自体はカラムごとに「""」で囲ってありカンマ区切りです。 ADOで接続して各カラムごとの比較をする部分で両方とも空白のカラムを比較すると異なったときの分岐に進んでしまいます。 echoでそれぞれのデータを見ても「空白」に見え、実際のCSVも「""」となっています。 lenで長さ0で比較とかtrim後の比較をしてもどちらも同じに見えます。 どのようにすれば「同じ」データとして分岐処理を行えるでしょうか?

みんなの回答

回答No.1

NullとEmptyの違いは意識していますか?参考URLをご覧ください。 もしどうしてもうまくいかない場合は、たとえばlen=0の場合にダミー文字列を代入するような処理を比較の直前に追加するのも手だと思います。 #それによって誤動作が発生しないかの入念な検証は必要になりますが。

参考URL:
http://blackstraycatreboot.blogspot.com/2012/11/vbsnullempty.html

関連するQ&A

  • VBSでテキストファイルの文字列の桁数を調べたい

    VBSでテキストファイルを1行ずつ読み、ある桁からある項目A(20桁)が始まるとします。 項目Aは漢字が入ります。後ろ空白(1バイト空白)詰めです。 その項目Aの桁数を調べるにはどのようにVBSを組めばよいのでしょうか? VBSでMid関数とかLen関数を使ってもうまく計算してくれてないような感じなのです。 例えば 桁 →123456789012345678901234567890 data1→aaaaaaaaaこんばんわ data2→aaaaaaaaaおつかれ で strRec1 = Mid(strRecord,10,20)  とした場合、stRec1には項目Aが入る予定 data1なら5、data2なら4と返ってきてほしいのです。 ちなみにMidBでもそれぞれ10,8で返ってきてもいいです。 言い換えると、桁n~桁mまでの項目に何桁の漢字があるかを調べたいです。 よろしくお願いします。

  • sqlplusのspoolで空白行出現

    OS:Windows Server 2003 DB:Oracle10g(10.2.0) sqlplusでselect結果をcsvファイルにspoolする際に空白行が出力されて困っています。 以下のsqlを実行した場合、 ----- SET ECHO OFF SET FEEDBACK OFF SET HEADING OFF SET PAGESIZE 0 SET LINESIZE 2000 SET TERMOUT OFF SET TRIMSPOOL ON spool test.csv select '"'||col1||'","'||col2||'","'||col3||'"' from table; spool off ----- 改行を含むカラムを含む行の後に空白行が出力されます。 (2レコード目のcol3は"g"と"h"の間に改行コードがあるデータが格納されているが、何故か2レコード目と3レコード目の間に空白行が出力される) ----- "abc","def","ghi" "abc","def","g hi" "abc","def","ghi" ----- これはsqlplusの仕様でしょうか。 2行目と3行目の間の空白行を削除してspoolする方法はありますでしょうか。 なお、改行を含むカラムの改行を改行以外の文字に置換して出力した場合は、以下のように空白行が出現しません。 ----- "abc","def","ghi" "abc","def","gカイギョウhi" "abc","def","ghi" -----

  • エクセルの文字列を空白で文字数を揃えたい

    皆様のお知恵を拝借したく書き込んでいます。 どうか宜しくお願いいたします。 エクセルにあるデータをカンマ区切りCSVに したいと思っております。 *例 1,1,1,3,1,2,11,・・・ これに数値を空白で埋めて四文字(0001,等)にさせたいのですが、 どのような方法が可能でしょうか? ・試したこと 1、サクラエディタでの正規表現 でも、置換後の文字列を動的に渡せるのかわからなくて失敗。 2、セルの表示形式 数値の桁数によって変化させる方法がわからず 3、エクセルマクロ LEN関数を使ってループさせれば可能? (時間がかかりそうです) 以上、宜しくお願いします。

  • Excelで数値の先頭にある空白を削除したい。

    CSVデータをExcelで展開しているのですが、金額が入力されている列について、数値の先頭に空白が5~6個程入っており、その空白を全て削除し、金額の合計を求めたいと思っています。 以下の関数を試したのですが、先頭の空白が2個削除できないままです。 (1)=SUBSTITUTE(SUBSTITUTE(A1," ","")," ","") (2)「=TRIM(A1)」 (2)⇒(1)、(1)⇒(2)を試して見ましたが駄目でした。 全てを削除する方法についてご存知の方、ご教示の程、お願いいたします。

  • SQL*Loaderの制御ファイルについて

    改行を含むデータをLoaderで投入したいのですがうまくいく方法を伝授ください。 レコードは以下です。先頭のみ"無し、末尾は","<CRLF> 3カラム目の先頭が半角スペースで、<CRLF>がきてXXXというデータです。 いろいろ試しましたが、どうもうまくいきません。 このデータをエラー無くロードできる方法はないでしょうか? ご教授ください。 ◆CSVレコード 99999","a-1"," <CRLF>Name-A あいうえお","<CRLF> ◆制御ファイルは以下指定 LOAD DATA INFILE XXX.CSV "STR x'0D0A'" APPEND CONTINUEIF LAST != '"' INTO TABLE table_name FIELDS TERMINATED BY '\",\"' TRAILING NULLCOLS ( COL1, COL2, COL3 ) ちなみに3カラム目が<LF>だとうまくいきます。。。

  • カラムの末尾にスペースが入る

    VBAで固定長のファイルをテーブルに取り込みCSVファイルとしてカンマ区切りで書き出すというプログラムを作っています。 1111,55___,77____,5_____,77__,555____,999__      _はスペースのことだと思って下さい。 などといった感じのファイルを取り込むのですが、スペースを削除するためにTrimで切ってテーブルに取り込んでいるのですが、取り込むと必ずいくつかの決まったカラムに半角スペース6個分のスペースが入ってしまいます。 カラムの文字制限10で入力文字が2などなら、6個分のスペースが入り、 入力文字が7ならスペースは3つ入り、入力文字が10ならスペースは入らないという現象が起きています。 Trimで切っているのですから、入力文字が何文字であろうとスペースは入らないはずなのですが、決まったカラムにだけこの現象が起きています。 デバッグで見てみたところ、データを取得しているところでは、きちんとTrimで切られている形で取得することが出来ているのですが、テーブルの中を見ると半角スペースが上の規則で入っているというのが現在の現象です。 なぜこのようなことが起きるのか・・どなたか解決策が分かる方はいらっしゃいますでしょうか。お願いします。

  • FIREFOXでWebページを表示できるVBS

    VBS超初心者です。 10年くらい前に作られたVBSを修正したいのですが、さっぱりわからないため助けてください。 勤務先で、社内イントラのデータベースを参照するときに使っているVBSです。 【いまの挙動】 VBSを起動すると文書番号の入力画面が表示→入力してEnter→IEで該当ページ(http:★★★/文書番号)が表示されます。 【やりたいこと】 FIREFOXで表示したい。(先日のIE脆弱性の騒ぎの影響で、上から指示があり。。) 今は以下のようなソースで使ってます。 ---------------------- Sid = InputBox("ID を入力。") Sid = Trim(Sid) If Sid = "" Then WScript.Quit If Len(Sid) <>14 Then WScript.echo "ID が不正。" WScript.Quit End If Set objie = WScript.CreateObject("internetexplorer.Application") objie.navigate2 "http://★★★/" & Sid objie.Visible = True WScript.Quit ---------------------- 「internetexplorer.Application」ではダメなことはわかるのですが それ以上は私の知識ではお手上げでした。。 どなたか詳しいかた、アドバイスお願いします。

  • CSVファイルを読んでシートに書き込む方法

    エクセルのマクロ(VB6.5)でCSVファイルをよんでシートに書き込みたいのですが誰か教えて下さい。 例えば CSVファイルはこんな感じだとします。 ファイルID:test.csv ファイル内容  (1レコード)123,123,123,123,123,123  (2レコード)456,456,456,456,456  (3レコード)789,789,789,789 書き込むシートは「abcシート」とします。 CSVファイルはカンマ区切りですがレコード毎にカンマ区切りのデータ数が違います。 シートには指定したセルに書き込めば一番いいのですが、上から順番に書き込んでもいいです。 申し訳ありませんが、宜しくお願い致します。

  • Excelのcsv形式への書き出しについて

    Excelデータをcsv形式で保存したとき、データにカンマが入ったときは 勝手に""でくくってくれますが、空白が入った場合も同じようにできないでしょうか?

  • ExcelファイルをCSV 形式で保存するには?

    ExcelファイルをCSV 形式 (Windows、カンマ区切り) (*.csv)にして書類を提出するように言われたのですが、その方法について教えてください。 データの内容は会社の詳細で、1社につき100項目のデータがあり、それが50社あります。その場合、1社目のデータをA列に、2社目のデータをB列にというように入力すればよいのでしょうか? Excel の [名前を付けて保存] ([ファイル] メニュー) を使って、CSV (カンマ区切り) (*.csv)ファイルで保存すると、各項目がカンマで区切られるのでしょうか? 1レコード目と2レコード目はどういった区切りになるのでしょうか? またファイル形式はCSV 形式でと言うことですが、提出するファイル名の拡張子を.txtとしないといけないのですが、それはどうすればいいのでしょうか?