- ベストアンサー
スペース区切りのテキストファイルをExcelで開く
テキストファイルをExcelファイルとして読み込む必要が多いです 毎回Excelの 開く を使ってテキストファイルを開くのは面倒なので、右クリックの 送る にExcelの実行ファイルをコピーしてそこに送っています ただ、この方式だとスペース区切りで改列出来ず、タブと改行(エンターキー)のみ反映したファイルが開きます 最初からスペース区切りも列区切りにした形でテキストファイルを開く方法(Excelの 開く を使わずに)はないでしょうか
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
もっと簡単な方法があるかもしれませんが、 VBScriptを利用してはいかがでしょう? 以下の内容をメモ帳にコピーして、拡張子を .vbsにしてSendToフォルダーに保存します。 (名前は何でも良い。 例・・・"TEST.vbs") Dim txtFile Dim xlApp Dim xlWb If WScript.Arguments.Count=1 Then txtFile = WScript.Arguments(0) Set xlApp = WScript.CreateObject("Excel.Application") Set xlWb = xlApp.Workbooks.Open(txtFile) with xlWb.Worksheets(1) .Columns("A:A").TextToColumns .Range("A1"), 1, 1, True, False, False, False, True, False end with xlApp.Visible = True Set xlApp = Nothing Set xlWb = Nothing Else Wscript.Echo "一度に複数ファイルは処理できません。" End If 開きたいテキストファイルを右クリックして 「送る」→「TEST.vbs」と操作します。 これでテキストファイルをスペースで区切って開けると思います。
その他の回答 (3)
- Raistlin
- ベストアンサー率63% (65/102)
masa_019さんと路線は同じですが、複数ファイルも処理できます。 Wendy02さんの案が簡単で良いような気がしますが、同じ拡張子でも処理方式を変えたい等、自由度が欲しい場合にどうぞ。 区切り文字の扱い方を変更したい場合は、EXCELのヘルプを参考に、objXL.Workbooks.OpenText~ の行を修正します。 何も変更しない状態では、 カンマ、タブおよびスペース有効、連続する区切り文字は1文字として扱う、文字列の引用符はダブルクォーテーション となっています。 制限事項: Excelが未起動の状態からテキストを開いた場合に、手動で新たなファイルを開かないまま、最初に開いたファイルを閉じると、Excelが非表示になってしまうことがあります。 その場合は、何かExcelに関連付けられたファイルを開いて、Excelの表示を戻してください。 動作確認環境: WindowsXP SP2, Excel97 SR-2, Windows Script Host 5.6 *****以下ソース*****行頭全角スペースは使用前に半角スペースに置換してください '指定した区切り文字でテキストをExcelに読み込み '下はExcel VBA OpenTextメソッドの構文 'expression.OpenText(Filename, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo) Const xlMacintosh = 1, xlWindows = 2, xlMSDOS = 3 'Origin Const xlDelimited = 1, xlFixedWidth = 2 'DataType Const xlTextQualifierDoubleQuote = 1, xlTextQualifierSingleQuote = 2, _ xlTextQualifierNone = -4142 'TextQualifier Dim objXL, strTxt On Error Resume Next Set objXL = GetObject(, "Excel.Application") '起動済Excelの取得 If TypeName(objXL) = "Empty" Then '起動済Excelが無い時新規作成 Set objXL = CreateObject("Excel.Application") End If On Error goto 0 For each strTxt in WScript.Arguments '引数(テキストのパス)全てについてOpenText objXL.Workbooks.OpenText strTxt, xlMSDOS, 1, xlDelimited, _ xlTextQualifierDoubleQuote, True, , True, True Next objXL.Visible = True Set objXL = Nothing
お礼
ありがとうございました
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 Personal.xls(個人用マクロブック)の ThisWorkbook に、以下のコードを貼り付けてください。そして、「送る(SendTo)」に送って開いてみてください。 '<Personal.xls の ThisWorkbook のみ> '-------------------------------------------- Private Sub Workbook_Open() On Error Resume Next If ActiveWorkbook.Name Like "*txt" Then With ActiveWorkbook.ActiveSheet .Columns(1).TextToColumns ConsecutiveDelimiter:=True, Space:=True End With End If End Sub '--------------------------------------------
お礼
ありがとうございました
- imogasi
- ベストアンサー率27% (4737/17069)
メモ帳で下記を作り、名前をつけて保存しました。 12 asd 2345 123 rty 45 345 ertttt 23456 スペースの所は1スペースで区切っています。多桁スペースでも良いと思います。改行はENTERで改行してます。 これをエクセルで開くと、テキストファイルウイザードが現れますが その後の操作が面倒なのでしょうか。 であれば、マクロの記録をオンにして、その後の操作も行って記録を 終了すると下記のようになりました。 Sub Macro1() Workbooks.OpenText Filename:= _ "C:\Documents and Settings\xxx\My Documents\text6.txt", Origin:=932, _ StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=True, Tab:=True, Semicolon:=False, Comma:=False, _ Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3 _ , 1)), TrailingMinusNumbers:=True End Sub このうちなくても良い項目は削除し、ファイル名をInputBox 関数ででも、毎回聞いて、FileName:=にセットすればどうでしょう。 こういう質問でしょうか。 違っていたらごめんなさい。
お礼
ありがとうございました
お礼
ありがとうございました この方法で出来ました