痔になりやすい生活習慣とは?

こんにちは

A列のA10まで、に値が入ります。
B列は、B1=IF(A1="","",A1) として、B10までフィルしました。

A1からA5までに1、2、3、4、5と入力し、A6からA10は空白にします。
B1からB5までは、1、2、3、4、5が表示され、
B6からB10までは空白です。

このSheetを、csvで保存し、テキストで開きますと

1,1
2,2
3,3
4,4
5,5
,
,
,
,
,
,


となります。

この、6行から10行の「,」がないcsvを出力したいのですが、
元のSheetの式はどうしたらよいでしょうか。

Excel2007です。

宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

>この、6行から10行の「,」がないcsvを出力したいのですが、元のSheetの式はどうしたらよいでしょうか。


そんな都合の良い数式は見当たりません。

Excelのセルに数式を入力すると計算結果で""を代入すると何もない状態ではありません。
文字数が0の文字列としてデータが入りますのでA列が何もない場合(NUL)でもB列の位置を示すカンマ(,)が出力されます。

この回答への補足

空白に見えても、文字数が0の文字列としてデータがあるわけですね。

ありがとうございました。

補足日時:2015/01/12 11:25
    • good
    • 0

どのような目的なのか?


そもそも、「,」区切りでのCSVファイルなのだから・・・
セルに入ってる空白を削除しては?
1,1
2,2
3,3
,
,
6,6
7,7
8,8
9,9
10,10
こんな感じ
1,1
2,2
3,3


6,6
7,7
8,8
9,9
10,10

この回答への補足

ありがとうございます。

そうですね。
空白に見えるところを削除するしかないでしょうか。

ありがとうございました。

補足日時:2015/01/12 11:23
    • good
    • 0

》 元のSheetの式はどうしたらよいでしょうか


式も何も入れない、完全な空白なままにしておくしか妙手はない、と思っています。
式 ="" を入力したり、アポストロフィ(')1個を入力したりするのは、目に見えないだけで空白とは異なっているから、です。

この回答への補足

>目に見えないだけで空白とは異なっているから

やはり、そうなのですね。
見た目は空白だけど、空白を区切っている訳ですね。

ありがとうございます。

補足日時:2015/01/12 11:22
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCSV形式にすると出てくる空白を消したいです。

エクセル形式で、表を作ってCSV形式で保存するのですが、
CSV形式で保存したデータをメモ帳(テキスト形式)で開くと、
エクセル・CSV形式の時には表示されていなかった空白(半角スペース)が出来てしまっています。。。


業務上必要なデータで、項目には半角英数13ケタの数字しか入力してはいけないのですが、
その空白が出来てしまってしまうので、エラー扱いにされてしまいます。

どのようにすればテキスト形式で表示したときにこの空白が生れないように出来るのでしょうか?
宜しくお願い致します。

Aベストアンサー

ご存じかもしれませんが、エクセルの仕様で12桁以上の数字を入れると表示がエラーのようにになります。
正確に言うとエラーでは、無くて指数表示になっているわけですが、13桁の数字を入力されているとのことですので、こちらは対処済みかと思います。
今回の質問は、半角スペースが入ってしまうということですよね?
前出の指数表示の表示方法の対処方法とにていますが、該当するセルの書式を設定することで回避出来ます。
設定方法は、13桁の数字の入っているセルの書式設定を開きます。
表示形式をユーザーにして、種類の一番上のサンプルを見てください。
[0_ ] ←かっこ内の部分を確認していただくとおわかりになるかと思います。
0は、数字ですが、その後ろにアンダーバーと半角スペースが入ってしまっています。
[0]だけを残し、アンダーバーとスペースを削除してください。
その後にCSV形式で、出力してあげればスペースは、消えています。
但し、再度エクセルからそのCSVを読込すると書式が、標準なのでスペースも入ってしまいますし、ケースによっては、指数表示(3.21099E12)にようになってしまうかもしれませんが、その場合は、書式の設定で直してください。
※添付の画像で赤の楕円で囲んだ部分です。

ご存じかもしれませんが、エクセルの仕様で12桁以上の数字を入れると表示がエラーのようにになります。
正確に言うとエラーでは、無くて指数表示になっているわけですが、13桁の数字を入力されているとのことですので、こちらは対処済みかと思います。
今回の質問は、半角スペースが入ってしまうということですよね?
前出の指数表示の表示方法の対処方法とにていますが、該当するセルの書式を設定することで回避出来ます。
設定方法は、13桁の数字の入っているセルの書式設定を開きます。
表示形式をユーザーにし...続きを読む

QEXCELからCSVにすると余計なカンマがつきます

こんにちは。

EXCELから固定テキストでデータの利用をするために
ファイルをCSVにしました(件数約1万)。

その後テキストエディタで確認すると
最初の数千件は
1,2,3,4,5(改行)
6,7,8,9,0
のように目的とした文字列になってくれているのですが
ある所から急に
1,2,3,4,5,(改行)
6,7,8,9,0,
と、お尻にカンマがついてしまいます。

固定長で利用したいので、このカンマは余計なのですが、
カンマがつくならつくで、すべてのレコードについていれば
構いません。
なお、何回か試しているのですが、そのつどカンマが
現れる場所が違います。
時には最初カンマなし、途中カンマあり、また途中から
カンマなしなどというファイルも作られます。

どちらかに統一できる方法をご存知の方はいらっしゃいます
でしょうか。
お知恵を拝借したく存じます。
よろしくお願い致します。

Aベストアンサー

》 固定テキストでデータの利用をするために
》 ファイルをCSVにしました

CSV にする目的が「固定テキストでデータの利用」というのが理解できません。
私なら PRN にします。此れはスペース区切りの固定長テキストデータになります。

ま、それはソレとして、範囲 A1:E1 に左から 1、2、…、5 と入力して、此れを下方にズズーッと1万行ドラッグ&ペーストしたものを CSV形式 で保存してみました。
しかしながら、仰るような「ある所から急にお尻にカンマ」が付くことはありませんでした。
ちなみに、テストしたのは Excel 2002 SP-3 です。

貴方も Excel のバージョンを明記すべきです。

QExcelマクロ 空白セルを無視してCSV出力

Excelのマクロについて質問します。

<sheet1>の内容をCSVに出力するマクロを使用しているのですが、
問題があって困っています。

<seet1>のA1~K30までは数式が入っていて、<sheet2>のA1~A30に
「OK」と表示されている場合、<sheet1>の対応した行に数値が表示されます。
「OK」以外の場合は、空白になるようにしてあります。


【sheet1】
  A    B    C    D    E …
1 100  200  300  400  500
2 100  200  300  400  500
3 100  200  300  400  500
4 100  200  300  400  500
5
6


【sheet2】
  A
1 OK
2 OK
3 OK
4 OK
5
6

<sheet1>をマクロでCSV出力する際に、「空白だけど数式が入っているセル」を
除外する方法を教えてください。

現在は「空白だけど数式が入っているセル」もCSV出力されてしまい、「,」が
連続で表示されるので、手動で「,」を削除しています。

■今使用しているマクロは以下になるので、これに追記する形で改良できないでしょうか。

Sub CSV出力()
Dim FileN As String
FileN = Application.GetSaveAsFilename( _
InitialFileName:="book1.csv", _
FileFilter:="CSV ファイル (*.csv), *.csv")

Sheets("sheet1").Copy
ActiveWorkbook.SaveAs Filename:=FileN, FileFormat:=xlCSV
ActiveWorkbook.Close Savechanges:=False
End Sub

よろしくお願いします。

Excelのマクロについて質問します。

<sheet1>の内容をCSVに出力するマクロを使用しているのですが、
問題があって困っています。

<seet1>のA1~K30までは数式が入っていて、<sheet2>のA1~A30に
「OK」と表示されている場合、<sheet1>の対応した行に数値が表示されます。
「OK」以外の場合は、空白になるようにしてあります。


【sheet1】
  A    B    C    D    E …
1 100  200  300  400  500
2 100  200  300  400  500
3 100  200  300  400  500
4 10...続きを読む

Aベストアンサー

こんばんは。

出力したものは、行の長短が出来て、凸凹になってしまってもよいということですか?

>これに追記する形で改良できないでしょうか。

Sheets("Sheet1").Copy の後で、あくまでも、空白が「文字列」になっている条件ですが、
Range("A1:K30").SpecialCells(xlCellTypeFormulas, xlCellTypeConstants).Delete Shift:=xlToLeft

とすれば出来ます。

しかし、こんなコードも考えられます。以下の場合は、複雑な条件を取りつけることが可能です。
今回は、「""」という表示になっていることが条件です。

'//標準モジュールで、出力は、ActiveSheet
Sub Test1()
 Dim FName As String
 Dim Fno As Integer
 Dim myRange As Range
 Dim i As Long, j As Long
 Dim strLine As String
 Set myRange = Range("A1", "K30") '範囲
 
 FName = Application.GetSaveAsFilename( _
           InitialFileName:="book1.csv", _
           FileFilter:="CSVファイル (*.csv), *.csv")
 If FName = "False" Or FName = "" Then Exit Sub 'キャンセルが利くようにする
 
 Fno = FreeFile()
 Open FName For Output As #Fno
 For i = 1 To myRange.Rows.Count
  For j = 1 To myRange.Columns.Count
   If Trim(Cells(i, j).Value) <> "" Then
    strLine = strLine & "," & Cells(i, j).Value
   End If
  Next j
  Print #Fno, Mid(strLine, 2)
  strLine = ""
 Next i
 Close #Fno
 Set myRange = Nothing
End Sub

こんばんは。

出力したものは、行の長短が出来て、凸凹になってしまってもよいということですか?

>これに追記する形で改良できないでしょうか。

Sheets("Sheet1").Copy の後で、あくまでも、空白が「文字列」になっている条件ですが、
Range("A1:K30").SpecialCells(xlCellTypeFormulas, xlCellTypeConstants).Delete Shift:=xlToLeft

とすれば出来ます。

しかし、こんなコードも考えられます。以下の場合は、複雑な条件を取りつけることが可能です。
今回は、「""」という表示になっていることが条件です。...続きを読む

Qエクセル→CSVにした時、スペースの数が違う

あるソフトにデータを取り込むにあたり、エクセルで作ったデータをCSVに変換しました。
変換方法は、エクセルの名前を付けて保存→ファイルの種類「CSV(カンマ区切り)」で保存して作りました。
行はそれぞれ人の名前が入っており、列にはその人の情報が入っています。
メモ帳で作成したCSVファイルを確認すると、スペースの数が違う場合があります。
具体的には、A列に名前、B列に対応する数字(例えば通し番号)が入っているとした時、
多くの人は名前と通し番号の間にスペースが10個程度入り(名前の長さで違う)、カンマで区切った後に通し番号が入ります。
しかし、一部の人にはスペースがはいらずに、名前にカンマと通し番号が続いて表示されます。
<メモ帳で作成したCSVファイルを開いた時の例>
ヤマダ○タロウ○○○○○○○○○○○○○,1,…
スズキ○ハナコ○○○○○○○○○○○○○,2,…
タカハシ○イチロウ○○○○○○○○○○○,3,…
タナカ○アイ○○○○○○○○○○○○○○,4,…
キムラ○ジロウ,5,…
サトウ○シヨウコ○○○○○○○○○○○○,6,…
※○はスペース

この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのかと、どのようにしたらこれを回避できるのか教えていただけませんか?
使うソフトの仕様通りにCSVを作成しているのに、ソフトにデータをうまく取り込めないので、こういったところに問題があるのかと考えています。

ご回答よろしくお願いします。

あるソフトにデータを取り込むにあたり、エクセルで作ったデータをCSVに変換しました。
変換方法は、エクセルの名前を付けて保存→ファイルの種類「CSV(カンマ区切り)」で保存して作りました。
行はそれぞれ人の名前が入っており、列にはその人の情報が入っています。
メモ帳で作成したCSVファイルを確認すると、スペースの数が違う場合があります。
具体的には、A列に名前、B列に対応する数字(例えば通し番号)が入っているとした時、
多くの人は名前と通し番号の間にスペースが10個程度入り(名前の長さで違う)...続きを読む

Aベストアンサー

>この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのか

CSV出力は「セルに入力されているデータが、幅調整されずに、そのまま出力」されます。

元データの末尾にスペースが付いてしまっているデータは、そのスペースがそのまま出力されます。

元データの末尾にスペースが無いデータは、スペースが無いまま、そのまま出力されます。

たぶん「エクセルのファイルを作った時に元にしたファイルが、フィールドの幅が固定されたテキストファイル」だったのでしょう。

フィールドの幅が固定されたテキストファイルを読み込んでエクセルのファイルを作ると、「文字列型」になっているセルのデータは「末尾にスペースが付いたまま」セルに取り込まれます。

一方「後から行追加して、セルに手入力したデータ」には、末尾にはスペースは付きません。

そうなると、エクセルのファイルの名前が入力された列のセルには

ヤマダ○タロウ○○○○○○○○○○○○○
スズキ○ハナコ○○○○○○○○○○○○○
タカハシ○イチロウ○○○○○○○○○○○
タナカ○アイ○○○○○○○○○○○○○○
キムラ○ジロウ
サトウ○シヨウコ○○○○○○○○○○○○

と言うように、末尾にスペースがある物と、末尾にスペースが無い物が混在する事になります。

それをそのままCSV出力すれば、質問文に書かれた状態のCSVファイルが出来上がって当然です。

元のエクセルのファイルを開いて、すべてのセルを選択状態(反転状態)にしてから、「書式」→「セル」→「フォント」タブ→「下線」から「下線」を選ぶ→「OK」ボタン、と操作してみて下さい。

添付画像は、データの末尾にスペースが付いている物と、データの末尾にスペースが無い物が混在しているエクセルの画像です。

画像左側では、末尾にスペースが付いているセルがどれなのか、見ただけでは判りません。

画像右側のように「下線付き」にすると、末尾にスペースが付いているセルが一目瞭然です。

下線を付けると「見えないスペースにも下線が付く」ので「aaaa」「bbbb」「dddd」のセルで文字の右に下線が延びてて、末尾にスペースが付いていると判ります。「ccc」は下線が伸びてないので、末尾にスペースが無いのが判ります。

この問題を解決するには、以下の2つの方法があります。

・余計なスペースを削りたい場合

TRIM関数を使って、末尾のスペースを取り除いたデータを生成し、生成したセルをコピーして「形式を指定して貼り付け→値のみ」で貼り付けて、末尾のスペースを取り除いた後、CSV出力する

・すべてスペース付きにして固定長にしたい場合

エクセルのファイルをテキストファイルに出力する際、CSV形式を選ばず、PRN形式を選んで「カンマ無しの固定長のテキストファイル」に出力する

カンマ区切りでスペース無しの不定長のテキストファイルが欲しければ前者を、カンマ無しでスペース付きの固定長のテキストファイルが欲しければ後者の方法を使って下さい。

>この例のキムラジロウの時のように、スペースの数が違って表示される理由がなぜなのか

CSV出力は「セルに入力されているデータが、幅調整されずに、そのまま出力」されます。

元データの末尾にスペースが付いてしまっているデータは、そのスペースがそのまま出力されます。

元データの末尾にスペースが無いデータは、スペースが無いまま、そのまま出力されます。

たぶん「エクセルのファイルを作った時に元にしたファイルが、フィールドの幅が固定されたテキストファイル」だったのでしょう。

フィールドの...続きを読む

QCSVで1列目を空白にする方法は?

お世話になります。
EXCEL2000で表を作っていて、それをCSVに変換します。
例えば下記表のようにA1は空白でB1は東京、C1は23が入っています。
A B C
1   東京 23
2   大阪 21
3   愛知 25

これをCSV形式で保存すると、Aの列が消えてしまいます。
  A B C
1 東京 23
2 大阪 21
3 愛知 25

CSVでAの列を空白のまま保存したいのですが、どうすれば良いでしょうか?

テキストで見ると、イメージはこのようになって欲しいのですが、
,東京,23
,大阪,21
,愛知,25

下記のようになります。
東京,23
大阪,21
愛知,24

どうすれば頭に空白の列を入れれるのですか?

Aベストアンサー

空白のセルの表示形式を文字列に変更することで出来るかと思います

Q【VBA】ExcelマクロでCSVファイルに保存したデータが""で囲まれてしまう

添付図のような、Excel2003で作成した表内のデータを
CSVで保存するマクロを作成したのですが、
図のように、CSVファイルに「""」で値が囲まれた状態で、
保存されてしまいます。

下記にマクロを記載しますので、
どうすれば文字列が「""」で囲まれずに、
カンマ区切りだけのデータで出力されるのか、
ご存知の方おられましたら、ご教示お願い致します。

Sub csv保存()
Dim フォルダ名 As String
Dim パス名 As String
Dim ファイル名 As String
Dim データ As Variant
Dim 行数 As Long, 列数 As Integer
Dim i As Integer, j As Long, k As Long

ファイル名 = "test.csv"
フォルダ名 = "csv"
パス名 = ActiveWorkbook.Path & "\" & _
フォルダ名

'csvフォルダが存在しなければ作成する
If Dir(パス名, vbDirectory) = "" Then
MkDir パス名
End If
ChDir パス名

Open ファイル名 For Output As #1

For i = 1 To Worksheets.Count
Worksheets(i).Activate
Worksheets(i).Cells(1, 1).Select
ActiveCell.CurrentRegion.Select
行数 = Selection.Rows.Count
列数 = Selection.Columns.Count

For j = 1 To 行数
For k = 1 To 列数 - 1
データ = Selection.Cells(j, k) _
.Value
Write #1, データ;
Next k
Write #1, Selection.Cells(j, 列数) _
.Value
Next j
Next i
Close #1
End Sub

添付図のような、Excel2003で作成した表内のデータを
CSVで保存するマクロを作成したのですが、
図のように、CSVファイルに「""」で値が囲まれた状態で、
保存されてしまいます。

下記にマクロを記載しますので、
どうすれば文字列が「""」で囲まれずに、
カンマ区切りだけのデータで出力されるのか、
ご存知の方おられましたら、ご教示お願い致します。

Sub csv保存()
Dim フォルダ名 As String
Dim パス名 As String
Dim ファイル名 As String
Dim データ As Variant
Dim ...続きを読む

Aベストアンサー

Write # は文字列を""で囲んで出力する仕様になっています。
そのまま出力したければ、Print #を利用すればよろしいかと。
ただし、Printの場合は区切り文字(カンマ)を自動で出力してくれませんので、併せて出力する必要があります。

For j = 1 To 行数
  For k = 1 To 列数 - 1
    データ = Selection.Cells(j, k) .Value
    Print #1, データ; ",";
  Next k
  Print #1, Selection.Cells(j, 列数).Value
Next j

なお、いらぬおせっかいですが、ドライブが複数ある環境下だと、
 ChDir パス名
だけでは必ずしもcvsフォルダ内に、ファイルが作成されるとは限りません。
 Open パス名 & "\" & ファイル名 For Output As #1
のように、フルパスで指定しておいた方が確実かと…

Qエクセルで空白セル”” と未入力セルの違い

関数で セルA1 に=if(B1=0,"","入力済")
としました。
セルの選択を素早くするためにショートカットキー「Ctrl+↓」を
利用しています。
通常の未入力空白セルは上記のショートカットで飛ばされて選択
されません。
これに対して上記関数で ""  として入力されたものを
コピーして値だけを貼り付けたとしても
上記ショートカットキーで飛ばされず選択されてしまいます。
見た目は 全く同じ 空白セルです。(関数も値貼り付けをしているので消えています。)
未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。
また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。もちろんDeleteKeyを使って未入力の空白セルに
戻るのですがそれではショートカットキーでとばせるメリットがなくなります。関数で大量に処理したいのです。
おわかりの方お教えください。

Aベストアンサー

>未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。

未入力の空白セルは「ISBLANK関数」で「真」を返します。

一方、値としての""が貼り付けられたセルは「ISBLANK関数」で「偽」を返します。

>また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。
不可能です。「式」は「値」を返すので「空白セル」と言う「状態」を返す事は出来ません。

>もちろんDeleteKeyを使って未入力の空白セルに
>戻るのですがそれではショートカットキーでとばせるメリットがなくなります。関数で大量に処理したいのです。

つまり「セルを1つづつ選択してDeleteキーで1つづつ空白セルに戻すのが面倒」なので「全部を一気に空白セルに戻す良い方法は無いか?」と言う事ですね?

だったら簡単です。

すべての式を
=if(B1=0,"","入力済")
ではなく
=if(B1=0,1/0,"入力済")
にしておきましょう。

すると、未入力の所は、空白("")にならず「#DIV/0!」になります。

そう表示されたら、シート全体を選択し「CTRL+G」を押して「ジャンプ」を出します。

「ジャンプ」のダイアログが出たら「セル選択」を押し、セル選択のダイアログを出します。

セル選択のダイアログが出たら「数式」を選び、その下のチェックは「エラー値」だけにします。

「OK」を押してダイアログを閉じると「#DIV/0!」の表示になったセルのみが選択状態になります。

「#DIV/0!」の表示になったセルのみが選択状態になったら、Deleteキーを押して、それらのセルを一気に「空白セル」にして下さい。

もちろん、大量にあっても、手順は変わりません。

>未入力の空白セルと 関数で""と入力されて値貼り付けを受けたセルではどこが違うのでしょうか。

未入力の空白セルは「ISBLANK関数」で「真」を返します。

一方、値としての""が貼り付けられたセルは「ISBLANK関数」で「偽」を返します。

>また、未入力の空白セルに 戻すには関数でどのように入力させればいいのでしょうか。
不可能です。「式」は「値」を返すので「空白セル」と言う「状態」を返す事は出来ません。

>もちろんDeleteKeyを使って未入力の空白セルに
>戻るのですがそれではショ...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Qカンマ区切りのCSVファイルから""を削除したい

初めて質問いたします

以下のような形式のCSVファイルがあります
例)
品名,数量,単価,金額
"りんご",1,150,150
"バナナ",10,200,2000
"メロン","1,000","2,000","2,000,000"

上記のように、品名にはダブルクォーテションがつき、
数量、単価、金額については桁区切りのカンマが発生する場合、ダブルクォーテーションで囲まれています

上記のようなデータを
りんご,1,150,150
バナナ,10,200,2000
メロン,1000,2000,2000000
のように別ファイルへ出力するにはどのようにすればよいでしょうか?

プログラムでの処理で、WSHを使ったものを教えていただけますと、幸いです
よろしくお願いいたします

Aベストアンサー

もう仕事は終わってしまったかもしれませんが、(^^ゞ
VBS で作ってみました。
対象CSVファイルのあるフォルダに保存して実行してみてください。
_NewFilesフォルダに保存されます。
※対象外のCSVファイルが有っても処理してしまいます

Dim oSh
Dim oFs
Dim BaseFolder
Dim newFolder
Dim f

Set oSh = CreateObject("Wscript.Shell")
Set oFs = CreateObject("Scripting.FilesystemObject")
Set BaseFolder = oFs.getFolder(oSh.currentDirectory)

newFolder = BaseFolder.Path & "\" & "_NewFiles"

If oFs.folderExists(newFolder) = False Then
oFs.createFolder (newFolder)
End If

For Each f In BaseFolder.Files
If oFs.GetExtensionName(f) = "csv" Then
Call changeIt(f.Path, newFolder)
End If
Next

MsgBox newFolder & " フォルダ内を検証"


Sub changeIt(orgFname, trgFolder)
Dim oFs
Dim orgF
Dim newF
Dim newFname
Dim buF
Dim oReg

Dim Mcol
Dim M
Dim M1, M2
Const forReading = 1
Const forWriting = 2

Set oFs = CreateObject("Scripting.fileSystemObject")
Set oReg = CreateObject("VBScript.RegExp")
Set orgF = oFs.getFile(orgFname).openAsTextStream(forReading)

newFname = trgFolder & "\" & oFs.getBaseName(orgFname) & "_New.csv"
oFs.CreateTextFile (newFname)
Set newF = oFs.getFile(newFname).openAsTextStream(forWriting)

With oReg
.Pattern = """.*?"""
.IgnoreCase = False
.Global = True
End With

Do Until orgF.atendofstream
buF = orgF.readline
Set Mcol = oReg.Execute(buF)

For Each M In Mcol
M1 = Replace(M.Value, ",", "")
buF = Replace(buF, M.Value, M1)
M2 = Replace(M1, Chr(34), "")
buF = Replace(buF, M1, M2)
Next

newF.WriteLine buF
Loop

orgF.Close: newF.Close
Set Mcol = Nothing
Set oReg = Nothing

End Sub

もう仕事は終わってしまったかもしれませんが、(^^ゞ
VBS で作ってみました。
対象CSVファイルのあるフォルダに保存して実行してみてください。
_NewFilesフォルダに保存されます。
※対象外のCSVファイルが有っても処理してしまいます

Dim oSh
Dim oFs
Dim BaseFolder
Dim newFolder
Dim f

Set oSh = CreateObject("Wscript.Shell")
Set oFs = CreateObject("Scripting.FilesystemObject")
Set BaseFolder = oFs.getFolder(oSh.currentDirectory)

newFolder = Bas...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング