質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

3回答

7903閲覧

横書きに書かれたcsvデータを縦書きにするには

kumakumatan

総合スコア213

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2016/01/20 06:59

編集2016/01/20 08:16

書き方を変えてみます。

A列の行をスペース(改行コード)が出るまで読み込み、別ファイル(ここではtest2.csv)に
カンマ区切りで書き出し、test1.csvの改行コードの次の行からtest2.csvを改行して書き出す
ようにしたいと考えています。

Event[0]:
Log Name: System
Source: EventLog
Date: 2015-06-08T08:26:44.000
Event ID: 6005
Task: N/A
Level: 情報
Opcode: N/A
Keyword: クラシック
User: N/A
User Name: N/A
Computer: TEST1
Description:
イベント ログ サービスが開始されました。

Event[1]:
Log Name: System
Source: EventLog
Date: 2015-07-03T18:40:00.000
Event ID: 6006
Task: N/A
Level: 情報
Opcode: N/A
Keyword: クラシック
User: N/A
User Name: N/A
Computer: TEST1
Description:
イベント ログ サービスが停止されました。

Event[0]: Log Name: System Source: EventLog Date: 2015-06-08T08:26:44.000 Event ID: 6005 Task: N/A Level: 情報 Opcode: N/A Keyword: クラシック User: N/A User Name: N/A Computer: TEST1 Description:イベント ログ サービスが開始されました。

改行コード

Event[1]: Log Name: System Source: EventLog Date: 2015-07-03T18:40:00.000 Event ID: 6006 Task: N/A Level: 情報 Opcode: N/A Keyword: クラシック User: N/A User Name: N/A Computer: TEST1 Description:イベント ログ サービスが停止されました。

まだまだ経験が浅いので、どなたかご教授いただければと思います。

宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

izkn

2016/01/20 08:34

こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました 「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。
guest

回答3

0

ベストアンサー

まず質問文に書かれているファイル内容は CSV ではありません。
CSVとは値と値の間をカンマで区切っている形式の事を言います。

CSVの定義を調べて出直してこい!というのは乱暴なので、
質問文の通りの変換を行うプログラムを以下に記述します。

VBScript

1Dim fso 2Dim fileIn 3Dim fileOut 4Dim line 5Dim count 6 7Set fso = CreateObject("Scripting.FileSystemObject") 8Set fileIn = fso.OpenTextFile("test1.csv") 9Set fileOut = fso.CreateTextFile("test2.csv") 10 11count = 0 12Do While Not fileIn.AtEndOfStream 13 count = count + 1 14 line = Trim(fileIn.ReadLine) 15 If line <> "" Then 16 If InStr(1, line, "Event[") = 1 Then 17 If count <> 1 Then 18 fileOut.WriteLine '改行 19 End If 20 fileOut.Write line 21 Else 22 fileOut.Write Chr(&H9) 'タブ区切り 23 fileOut.Write line 24 End If 25 End If 26Loop 27fileOut.WriteLine '改行 28 29fileIn.Close 30fileOut.Close

なぜ VBScript で作りたいのか分かりませんが、
この程度のプログラムを作れないということは、
プログラムの入門書すら読んだことのない初心者以前の人ですよね?

初心者以前が悪いという訳ではありません。
みな最初は初心者以前ですから。

初心者以前の人が上記のプログラムを正しく理解・実行できるのか心配です。

投稿2016/01/20 09:27

twck

総合スコア314

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kumakumatan

2016/01/20 12:22

ご解答ありがとうございます。 今後は、もう少し自分なりに調べてからご質問させていただきます。 教えていだいたソースを自分なりに解釈しました。 ①読み込みファイルをDO whileで読み、行に値がなければ改行。一行目にeventの文言があれば、書き、 ②それ以外はタブ区切りして、書き、 ③eventの文言が出て、読み込み件数が1でなければ、改行して書く 自分なりに解釈してみました。
twck

2016/01/21 01:45

誤:行に値がなければ改行 正:行に値がなければ何も書かない 誤:一行目にeventの文言があれば 正:行の一文字目に Event[ の文言があれば 細かい間違いはありますが、大筋の理解はできているようですね。 それだけ理解できているのであれば自分で作れると思います。 単にVBScriptでファイルを読み書きする方法を知らなかっただけですかね。
guest

0

kumakumatanさんは、ご自身でVBスクリプトを書くつもりはありまか。
要件にあうVBSがあっても自身でいじる必要があります。

もし、ご希望が解決のみであるならランサーズなどごに発注した方が早いです。


質問書き換えられたようなので改めて、回答します。

この場合、私なら正規表現をつかってCSVに変換します。
正規表現が可能なテキストエディタをつかって下記の操作をします。
(項目順がそれぞれ変わらない前提です。)
0. Event[0]:のコロンを削除

  1. Description:の直後の改行を削除
  2. 行頭~:までを削除
  3. 行頭に , " を挿入
  4. リターンコードを " に変換
  5. , "Event を 改行+"Event に変換
  6. 空行を削除

CSVになっているはず(未検証です)

私の場合であれば、上記の秀丸の記録機能でマクロとして保存します。

投稿2016/01/20 07:22

編集2016/01/20 08:39
iwamoto_takaaki

総合スコア2883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

元々のフォーマットがCSVとは言えず、項目と値のセパレータがコロンになっています。
これだと独自フォーマットですので、自作する以外には無いと思います。

元々のデータが、何らかの有名なログであれば、探せば見つかるかもしれません。

なお、単純に行と列を入れ替えるならば、Excelには「形式を指定して貼り付け」という機能が有るので、それで実現できます。

投稿2016/01/20 07:10

shanxia

総合スコア1038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問