ここから本文です

CSVの一括文字列の変換などがとても便利だったので、データベースソフト「桐」のよ...

osa********さん

2018/5/400:07:43

CSVの一括文字列の変換などがとても便利だったので、データベースソフト「桐」のようなソフトをご存知の方、いらっしゃいませんか。個人で利用したいのですが、金額が高額のため二の足を踏んでおります。

どなたかご存知でしたら教えていただけたら幸いです。CSV内の指定の文字列が一括で変換できるよ~というソフトでもいいので、教えていただけたらありがたいです!

閲覧数:
50
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

Prometheusさん

2018/5/410:06:00

「csv」ファイルは、テキストファイルですので、メモ帳などのテキストエディタで一括置換されればいいように思いますし、エクセルをお持ちでしたら、エクセルで開いて、一括置換されてもいいかと思います。

ただ、複数のファイルを一気に一括置換されたい、というような場合は、以下のプログラムをお使いください。

「VBScript」による回答ですので、「Windows限定」です。

以下のプログラムは、プログラムファイルに、一括置換したい「csv」ファイル(複数可)をドラッグ&ドロップするだけです。

最後に「Finished!」と表示しますので、「OK」を押して、終了してください。

6行目の「m = "abc"」が、一括置換したい文字列で、7行目の「r = "xyz"」が、一括置換した結果(この場合、「abc」を「xyz」に一括置換したい、ということ)の文字列です。

以下のプログラムを、メモ帳かテキストエディタに貼り付け、「~.vbs」という名前で保存します。

「~」の部分は、何でもかまいませんが、「.vbs」の部分は、必ず、半角です。

できたプログラムファイルに、文字列の一括置換をしたい「csv」ファイル群をドラッグ&ドロップするだけです。

Option Explicit
Dim a, cv, i, m, r, so, wa
Set so = CreateObject("Scripting.FileSystemObject")
Set wa = WScript.Arguments
m = "abc"
r = "xyz"
For i = 0 to wa.Count - 1
If LCase(so.GetExtensionName(wa(i))) = "csv" Then
Set cv = so.OpenTextFile(wa(i), 1)
a = cv.ReadAll
a = Replace(a, m, r)
cv.Close
Set cv = Nothing
Set cv = so.OpenTextFile(wa(i), 2, True)
cv.Write a
cv.Close
Set cv = Nothing
End If
Next
Set wa = Nothing
Set so = Nothing
MsgBox("Finished!")

簡単な説明です。

Option Explicit

「厳密に」というような意味ですが、気にしないでください。

Set so = CreateObject("Scripting.FileSystemObject")

ファイルやフォルダを扱えるようにしていますが、今回は特に、「csv」というテキストファイルを扱うのにも必要です。

Set wa = WScript.Arguments

ドラッグ&ドロップされるのを待っています。

m = "abc"
r = "xyz"

置換前(=「m」)と、置換後(=「r」)の文字列を設定。

For i = 0 to wa.Count - 1

ドラッグ&ドロップされたすべてのファイルを1つずつ処理。

If LCase(so.GetExtensionName(wa(i))) = "csv" Then

もし、拡張子が「csv」なら、

Set cv = so.OpenTextFile(wa(i), 1)

「読み込み専用」で開いています。

a = cv.ReadAll

一気に、全部読み込んでいます。

a = Replace(a, m, r)

「一括置換」しています。

cv.Close
Set cv = Nothing

閉じています。

Set cv = so.OpenTextFile(wa(i), 2, True)

今度は、「書き込み専用」で、新規作成しています(元のファイルは消えて無くなります)。

cv.Write a

一括置換した文字列を書き込んでいます。

cv.Close
Set cv = Nothing

閉じています。

End If
Next

を、すべてのファイルで繰り返しています。

Set wa = Nothing
Set so = Nothing
MsgBox("Finished!")

あとは、終了処理で、最後に「Finished!」と表示しています。

質問した人からのコメント

2018/5/4 10:22:56

ご丁寧に書いていただいてありがとうございました。後程試してみようと思います。

ベストアンサー以外の回答

1〜1件/1件中

ntt********さん

2018/5/408:46:10

桐9-2009はwin10でも普通に動作しています。
オークションで買えば13000円以下みたいですよ。
https://auctions.yahoo.co.jp/search/search?select=01&p=%E6%A1%90&ei...
桐10 ネットライセンス版は1年間3100円みたいです。
http://www.kthree.co.jp/index.html

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる