Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5876 / 13646 ツリー ←次へ | 前へ→

【48404】SaveAsメソッドのxlText(タブ区切りのテキスト)での保存について かつ 07/4/16(月) 15:15 質問[未読]
【48405】Re:SaveAsメソッドのxlText(タブ区切りの... ウッシ 07/4/16(月) 15:52 発言[未読]
【48407】Re:SaveAsメソッドのxlText(タブ区切りの... かつ 07/4/16(月) 16:23 回答[未読]
【48408】Re:SaveAsメソッドのxlText(タブ区切りの... ウッシ 07/4/16(月) 17:05 発言[未読]
【48409】Re:SaveAsメソッドのxlText(タブ区切りの... かつ 07/4/16(月) 17:42 発言[未読]
【48412】Re:SaveAsメソッドのxlText(タブ区切りの... ウッシ 07/4/16(月) 19:19 発言[未読]
【48441】Re:SaveAsメソッドのxlText(タブ区切りの... かつ 07/4/17(火) 16:17 お礼[未読]

【48404】SaveAsメソッドのxlText(タブ区切りのテ...
質問  かつ  - 07/4/16(月) 15:15 -

引用なし
パスワード
   はじめまして。かつと申します。
わからないことがあり、質問させていただきました。

SaveAsメソッドのxlText(タブ区切りのテキスト)で保存すると、
カンマが含まれるセルの文字列がダブルクォーテーションで
囲まれてしまいます。
カンマが存在してもダブルクォーテーションで囲まれずに保存できる
方法がないでしょうか。

参考までにこのように保存しています。

ActiveWorkbook.SaveAs Filename:="C:\TEST\AAA.txt", FileFormat:= _
xlText, CreateBackup:=False

よろしくお願いします。

【48405】Re:SaveAsメソッドのxlText(タブ区切り...
発言  ウッシ  - 07/4/16(月) 15:52 -

引用なし
パスワード
   こんにちは

次に読み込む時はどうするのですか?

【48407】Re:SaveAsメソッドのxlText(タブ区切り...
回答  かつ  - 07/4/16(月) 16:23 -

引用なし
パスワード
   返信ありがとうございます。
質問にて書き忘れてしまいましたが、固定長のデータです。
1-8桁目:郵便番号
9-48桁目:住所
49-59桁目:電話番号
60-80桁目:名前
となり、桁数で切り分けてACCESSに取り込んでいます。
ですので、たまたま間違えて住所にダブルクォーテーションを
入れられてしまうと、全体がずれてしまい、ACCESSにうまく
取り込まれないのです。
よろしくお願いします。

【48408】Re:SaveAsメソッドのxlText(タブ区切り...
発言  ウッシ  - 07/4/16(月) 17:05 -

引用なし
パスワード
   こんにちは

「Typeステートメント」と「Put」を使って固定長で書き出すのはどうでしょうか?

【48409】Re:SaveAsメソッドのxlText(タブ区切り...
発言  かつ  - 07/4/16(月) 17:42 -

引用なし
パスワード
   ご回答ありがとうございます。
「Typeステートメント」と「Put」を使ってとのことですが、
具体的にどのようにすればよろしいのでしょうか。

VBA初心者なので、よくわからないのですが、

ActiveWorkbook.SaveAs Filename:="C:\TEST\AAA.txt", FileFormat:= _
xlText, CreateBackup:=False

の代わりに何かを記述するのでしょうか。

よろしくお願いします。

【48412】Re:SaveAsメソッドのxlText(タブ区切り...
発言  ウッシ  - 07/4/16(月) 19:19 -

引用なし
パスワード
   こんばんは

こんな感じです。標準モジュールの先頭から、

Type rFormat
  A列郵便番号 As String * 8
  B列住所   As String * 40
  C列電話番号 As String * 11
  D列名前   As String * 21
End Type

Sub test()
  Dim rFmt  As rFormat
  Dim fN   As Integer
  Dim mArray
  Dim i    As Long
  Dim j    As Long
  Dim Sh1   As Worksheet
  
  Set Sh1 = Worksheets("Sheet1")
  
  mArray = Sh1.Range("A1").CurrentRegion.Value
  j = UBound(mArray, 1)
  
  fN = FreeFile
  Open "C:\TEST\AAA.txt" For Binary As #fN
  
  For i = 1 To j
    rFmt.A列郵便番号 = StrConv(mArray(i, 1), vbNarrow) & String(8, " ")
    rFmt.B列住所 = StrConv(mArray(i, 2), vbWide) & String(40, " ")
    rFmt.C列電話番号 = StrConv(mArray(i, 3), vbNarrow) & String(11, " ")
    rFmt.D列名前 = StrConv(mArray(i, 4), vbWide) & String(21, " ")
    
    Put #fN, , rFmt
    Put #fN, , vbCrLf
  Next
  Close #fN
End Sub

【48441】Re:SaveAsメソッドのxlText(タブ区切り...
お礼  かつ  - 07/4/17(火) 16:17 -

引用なし
パスワード
   ご回答ありがとうございます。

このような考え方に及びませんでした。。。

やってみようと思います。
ありがとうございました。

5876 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free