人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

番号、文字列1、文字列2、、、文字列N というフィールドで1レコード(行)作られているCSVファイルを1レコード(行)毎にバラバラにし、番号.txt というファイルにする簡単な(早い)方法を教えてください。Windows XP上で作業可能な方法でお願いします。Excelは持ってます。

●質問者: adan
●カテゴリ:コンピュータ
✍キーワード:Excel txt Windows XP ファイル フィールド
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Kenju
●68ポイント

プログラムでやってしまえば、どれでも同じですが。

やっぱりExcelマクロが早いですかね。

hozonDir は保存先です。\マークを忘れずに。

列の連結は間になにもはさんでないのでくっついて出てきますが、必要なら

fpbuf = fpbuf & txtSheet.Cells(txtRow, txtCol).Value

この&の間に文字をいれてやればいいです。

使用方法は、CSVをエクセルで開いてAlt + F11でSheet1っていうのが右にあると思うのでそれをダブルクリック。

以下を貼りつけ、「|>」三角のマークを押します。

Sub main()

 Const hozonDir = "C:\"

 Dim txtRow As Long

 Dim txtCol As Integer

 Dim txtRowEnd As Long

 Dim txtColEnd As Integer

 Dim txtSheet As Object

 Dim writeFile As Integer

 Dim fpbuf As String

 Set txtSheet = ThisWorkbook.Worksheets(1)

'最終行を算出

 With txtSheet

  txtRowEnd = .Cells(.Rows.Count, 1).End(xlUp).Row

  txtColEnd = .Cells(1, .Columns.Count).End(xlToLeft).Column

 End With

'行が終わるまで繰り返す

 For txtRow = 1 To txtRowEnd Step 1

 'ファイルを開く

  writeFile = FreeFile

  Open hozonDir & txtSheet.Cells(txtRow, 1).Value & ".txt" For Output As #writeFile

  fpbuf = ""

 '最終列を算出

  With txtSheet

   txtColEnd = .Cells(1, .Columns.Count).End(xlToLeft).Column

  End With

 '列を1行単位で連結

  For txtCol = 2 To txtColEnd Step 1

   fpbuf = fpbuf & txtSheet.Cells(txtRow, txtCol).Value

  Next

  Print #writeFile, fpbuf

 'ファイルを閉じる

  Close #writeFile

 Next

 MsgBox "実行終了"

End Sub

◎質問者からの返答

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


2 ● Nanja
●2ポイント

下記のようにするのが手っ取り早いかと思います。

1.CSVファイルをExcelで開く

2.値のあるセルをすべて選択

3.別のセルへ形式を選択して貼り付け

このとき、行/列を入れ替えのチェックをオンにする

4.名前をつけて保存

ファイル形式をテキスト(タブ区切り)にする

いかがでしょうか?

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ