• ベストアンサー

スペース区切りのテキストファイルをExcelで開く

テキストファイルをExcelファイルとして読み込む必要が多いです 毎回Excelの 開く を使ってテキストファイルを開くのは面倒なので、右クリックの 送る にExcelの実行ファイルをコピーしてそこに送っています ただ、この方式だとスペース区切りで改列出来ず、タブと改行(エンターキー)のみ反映したファイルが開きます 最初からスペース区切りも列区切りにした形でテキストファイルを開く方法(Excelの 開く を使わずに)はないでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
  • masa_019
  • ベストアンサー率61% (121/197)
回答No.2

もっと簡単な方法があるかもしれませんが、 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」と操作します。 これでテキストファイルをスペースで区切って開けると思います。

surumeika
質問者

お礼

ありがとうございました この方法で出来ました

その他の回答 (3)

  • Raistlin
  • ベストアンサー率63% (65/102)
回答No.4

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

surumeika
質問者

お礼

ありがとうございました

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 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 '--------------------------------------------

surumeika
質問者

お礼

ありがとうございました

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

メモ帳で下記を作り、名前をつけて保存しました。 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:=にセットすればどうでしょう。 こういう質問でしょうか。 違っていたらごめんなさい。

surumeika
質問者

お礼

ありがとうございました

関連するQ&A