VBA タブ区切りテキスト出力 ダブルクォーテーションつけない 初めて知恵袋を...
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枚
ベストアンサーに選ばれた回答
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
ちょい足しを取り消しますが
よろしいですか?
- 取り消す
- キャンセル
この質問につけられたタグ
恋愛に悩める子羊を助けて!
回答受付中の質問
- 連携サービス
- ブログ
- textream(掲示板)
- ペット
- Chocotle(動画アプリ)