![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
Excel2002を使用しており以下のようなデータがあります。
例
生年月日 氏名 郵便番号 県名
1999/2/2 @@@@ 115-0023 東京都
1998/7/2 @@@@ 335-0005 埼玉県
これを最終的に「.txt」の形式にして「”」でそれぞれのセルを
囲った状態にしたいのです。
(ダブルコーテーション間は半角スペース1個)
"生年月日" "氏名" "郵便番号" "県名"
"1999/2/2" "@@@@" "115-0023" "東京都"
"1998/7/2" "@@@@" "335-0005" "埼玉県"
Excelの機能を使ってテキスト形式に書き出すとタブ区切りになります。
メモ帳の置換機能を使ってタブ区切りになっている部分を「" "」に
置き換えるという方法をとってみたのですが、件数が2000件以上項目数も10項目以上あるため非常に時間がかかる上、「応答なし」で止まってしまいます。
不慣れなAccess2002を使用して、なんとかダブルコーテーションで
くくった状態で書き出せたのですが、表記が一部変わってしまいました。
数字 5 ⇒ 5.00
生年月日 1998/7/2 ⇒ 1998/7/2 0:00:00
Accessを使用すればよいようなのですが、具体的にどのように
実行すれば答えにたどり着けるのかが分かりません。
ご存知の方いらっしゃいましたらお力をお貸しください。
お手数おかけいたしますがよろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
テキスト形式関連のファイルについて、旧Basic時代から
データの表し方は
全て""でデータ項目を囲う
文字列だけ囲う、数字は裸
数字も文字列も裸
区切りは
カンマ CSV
タブ TXT
1スペース TXT
1-複数スペース Prn方式(データは”などつけない)
そのまま印刷したとき、表の見た目のように文字列左詰め先頭そろえ、数字右詰最後尾そろえ(印刷するとそのまま罫線なしの表のような感じ)位置あわせは複数スペースを埋め込みか)
ーー
これのそれぞれの可能な組み合わせバリエーションが採られる。
ーー
質問者の望む形式は、古臭い形式で、実現するなら、ソフトを探すか
自作するほか無いでしょう。正規表現で加工が出来るかもしれない。
数字””なし、文字列””囲うならぴったりのステートメントが旧Basicにあるが。
ーー
2000行にもなるとデータを加工するので多少時間がかかるでしょう。>件数が2000件以上項目数・・は??ですが。
ーー
Sub test01()
Close #1
Open "test011.txt" For Output As #1
d = Range("A65536").End(xlUp).Row '最下行
r = Range("IV3").End(xlToLeft).Column '最右列
MsgBox r
MsgBox d
For i = 2 To d '2はスタート行
s = ""
For j = 1 To r
s = s & Chr(34) & Cells(i, j) & Chr(34) & Chr(44)
Next j
MsgBox Left(s, Len(s) - 1)
Print #1, Left(s, Len(s) - 1)
Next i
Close #1
End Sub
例データ エクセル A2:E4
1999/2/2山田115-0023東京都123423
1998/7/2宮田335-0005埼玉県234
2009/8/2村山335-0006千葉県1122233
結果 メモ帳で
"1999/02/02","山田","115-0023","東京都","123423"
"1998/07/02","宮田","335-0005","埼玉県","234"
"2009/08/02","村山","335-0006","千葉県","1122233"
ーーーー
当初少数データでやってメモ帳で確認した後、Msgboxを省き実行してみてください。
お礼 遅くなってしまい申し訳ありません。
皆さんにお教えいただいた方法をもとに
いろいろ試してみます。
もっと勉強しないといけませんね。
ありがとうございました。
No.3
- 回答日時:
こんにちは。
昔、作ったマクロがありますので、それに多少手を加えました。
[標準モジュール]に貼り付けてください。このマクロは、ExcelのCSVの出力表現が限られているものに対して、バリエーションを加えるためのものです。空白セルに対しては、"" となります。
Sub OutputCSV()
'CSV["" (クォーテーションマーク)]付き出力
Dim myPath As String
Dim myFname As Variant
Dim Fno As Integer
Dim buf As String
Dim i As Long
Dim j As Long
Const QT As String = """"
'「""」を入れるかどうか
'0 =すべて, 1 =書式文字列のみ, 2 =すべてない
'注:数値でも、'02 や書式文字列にしていれば、文字列として認識する
Const SWITCH As Integer = 0
'区切り文字
Const DELIM As String = " " '半角空白
'拡張子
Const EXT As String = "*.txt"
myFname = Application.GetSaveAsFilename("", "テキスト ファイル (" & EXT & "), " & EXT)
If myFname = False Then
Exit Sub
ElseIf Dir(myFname) <> "" Then
If MsgBox("同じ名前のファイルがあります。上書きしますか?", vbQuestion) = vbCancel Then
Exit Sub
End If
End If
With ActiveSheet.UsedRange
If WorksheetFunction.Count(.Cells) = 0 Then
MsgBox "データが一つもありません。", vbCritical
Exit Sub
End If
Fno = FreeFile
Open myFname For Output As #Fno
For i = 1 To .Rows.Count
For j = 1 To .Columns.Count
If Not IsEmpty(.Cells(i, 1).Value) Then
If SWITCH = 0 Then
buf = buf & DELIM & QT & .Cells(i, j).Text & QT
ElseIf SWITCH = 1 Then
If VarType(Cells(i, j).Value) = vbString Then
buf = buf & DELIM & QT & .Cells(i, j).Text & QT
Else
buf = buf & DELIM & .Cells(i, j).Text
End If
Else
buf = buf & DELIM & .Cells(i, j).Text
End If
End If
Next j
Print #Fno, Mid$(buf, 2)
buf = ""
Next i
End With
Close #Fno
End Sub
御礼遅くなりましてすみません。
ものすごい記述ありがとうございます。
もっと勉強しなければと痛感します。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- その他(Microsoft Office) EXCELの1行を1枚の用紙にそれぞれ印刷したい。 3 2022/10/10 11:35
- その他(プログラミング・Web制作) テキストデータ変換(プログラミング、linux、python) 8 2023/08/08 16:39
- Excel(エクセル) 【Excel】住所に郵便番号を付記する方法 3 2022/05/07 17:15
- Excel(エクセル) 至急です><Excelの関数を教えてください。 2 2022/03/22 17:56
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- 銀行・ネットバンキング・信用金庫 ゆうちょ銀行に口座を持つ方、ゆうちょ銀行に詳しい方に聞きます。 9 2023/08/03 20:24
- Yahoo!メール YahooIDをパスワード形式にしただけなのに、利用規約違反とされて電話番号が使えなくなりました 3 2023/03/25 04:08
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
ACCESSの表で罫線を使うと縦方...
-
エクセルの1セル内の文字列操作。
-
VBAで指定した「文字数」だけ切...
-
エクセルで数値を全角文字(カ...
-
CSVの定義
-
テキストファイルの区切りが " ...
-
[Word]フィールドの分数表示で[...
-
Excel 住所の分割(文字数制限...
-
JPY ¥1,500.00は日本円でお幾ら?
-
何故、日本は未だに数字を3桁...
-
「カンマ」と「コンマ」は同じ...
-
スペースで区切られた氏名から...
-
正しいメールアドレスの形式で...
-
Accessでのグループ化で全角・...
-
PowerShellでテキストの空白行...
-
完全一致のデータだけを検索で...
-
シャープ(#)の受け渡し
-
全角入力
-
全角英数字の必要性が理解できない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
データにカンマが入ったCSVデー...
-
EXCELからCSVにすると余計なカ...
-
エクセルで数値を全角文字(カ...
-
マクロを使ってフォルダー内に...
-
カンマ区切りの数字をCSVフ...
-
WORDで改ページすると時々グレ...
-
CSVの定義
-
[VBA][Excel]クリップボードか...
-
カンマ区切り
-
ひとつの命令を複数行に記述
-
「カンマ」と「コンマ」は同じ...
-
VBAでtxtファイルを読み込む際...
-
何故、日本は未だに数字を3桁...
-
エクセルの区切り位置の設定方法
-
PHP カンマをエスケープしたい...
-
C#で、テキストボックスの入力...
-
海外のケータイ(GSM携帯)はハ...
-
3桁ごと?4桁ごと?コンマの...
-
openoffice calcで#DIV/0! の...
おすすめ情報