ここから本文です

VBA タブ区切りテキスト出力 ダブルクォーテーションつけない 初めて知恵袋を...

trombose1974さん

2014/10/1218:10:13

VBA タブ区切りテキスト出力 ダブルクォーテーションつけない
初めて知恵袋を使用しますので、仕組みがよく分かっていませんがご質問させて頂きます。

VBA超初心者です。

エクセルで作成したデータを「タブ区切りデータ」として出力していますが、【書式:桁区切り有】と設定した箇所がダブルクォーテーションでくくられてしまいます。

エクセル上:1,000
カンマ区切りテキスト変換後:"1,000"

VBAに至っては超初心者ですが、マクロの記録を元に、自分なりに調べた結果を加えた以下のマクロでテキスト変換しています。

----------
Sub Macro1()
'
' Macro1 Macro
'

'
Sheets("作成").Select
Range("A55").Select

ActiveCell.Formula = "=当日!b5"
ActiveCell.Offset(9, 0).Select

ChDir "C:\Users\trombose\Desktop\売上メール"
ActiveWorkbook.SaveAs Filename:="C:\Users\ユーザー\Desktop\売上メール\売上メール" & Format(Now(), "mmdd-hhmm") & ".txt", _
FileFormat:=xlText, CreateBackup:=False

MsgBox "上書き保存しないで閉じて下さい。" & vbCrLf & "メール送信前に4円と1円の稼働数を確認して下さい。"

End sub
----------

要は、エクセルで作成したファイルをタブ区切りtextとして変換した場合に
・桁区切りが繁栄されているがダブルクォーテーションは表示されない
・ファイル名の後に、出力時の【月日時分】を表示する。
・あくまでtext形式で出力。PRN等ではない

上記の要望を満たすには、記載したマクロに何かを足せばできるのか?マクロ自体を変更しなければいけないのか?ご教授お願い致します。

閲覧数:
757
回答数:
1
お礼:
100枚

違反報告

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

catpiakitiさん

2014/10/1221:52:00

EXCELの仕様なのでカンマ付きの数値を引用符(”)なしの状態でタブ区切りtestで保存するのは出来ないと思います

代案としてVBAで希望のファイル名で作成したtextファイルをメモ帳で開いて値を貼り付けして上書き保存するというのは如何でしょうか?

以下サンプルコードです

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Sample()
Dim WshShell
Dim fName As String

Application.ScreenUpdating = False

Sheets("作成").select
Range("A55").Formula = "=当日!b5"

Cells.Copy '元シートコピー
Workbooks.Add 'テキスト保存用ブック作成
Cells.PasteSpecial '元シートデータ貼り付け

'テキストファイル作成
fName = "C:\Users\trombose\Desktop\売上メール"
ChDir fName
fName = fName & "\売上メール" & Format(Now(), "mmdd-hhmm") & ".txt"
ActiveWorkbook.SaveAs Filename:=fName, FileFormat:=xlText, CreateBackup:=False

Cells.Copy 'メモ帳に貼り付けるデータをクリップボードにコピー

'作成したテキストファイルClose
Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True

'作成したテキストファイルをメモ帳で開く
Shell "notepad " & fName, vbNormalFocus

Sleep 1000 ’メモ帳が開く時間として1秒待つ

'メモ帳に操作するキーの組み合わせを送る
Application.SendKeys "%EA%EP%FS%FX", True
'キーの解説:"%EP"は"Alt","E","P"の順にキー操作すること(つまり全選択のこと)
'[%EA(全選択),%EP(貼付け),%FS(保存),%FX(終了)]

'SendkeysメソッドでOFFになったNumLockをONにする
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{NUMLOCK}"
Set WshShell = Nothing

Range("A55").Offset(9, 0).Select
End Sub

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

2014/10/13 01:38:53

ほんとうに有難うございます。パーフェクトなサンプルでした。最高です!

ちょい足しを取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

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

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

よしもと爆笑コント動画

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

ID/ニックネームを選択し、「追加する」ボタンを押してください。

閉じる

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

ほかのID/ニックネームで利用登録する