一回も披露したことのない豆知識

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

A 回答 (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」と操作します。
これでテキストファイルをスペースで区切って開けると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/11/05 14:57

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
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2005/11/05 15:03

こんにちは。



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
'--------------------------------------------
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2005/11/05 15:04

メモ帳で下記を作り、名前をつけて保存しました。


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:=にセットすればどうでしょう。
こういう質問でしょうか。
違っていたらごめんなさい。
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2005/11/05 14:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報