• ベストアンサー

WSHでエクセルのあるシートをテキストファイルに変換したい

こんにちは。 OSはWin2K,WSHは5.6,Excelは2002を使用しています。 「月計表.xls」には「1月」から「12月」と「合計」 というシートがあります。 このうち「合計」シートをテキストファイル(タブ区切り) としてデスクトップに保存したいのですが、 VBScriptではどのように記述すればよろしいでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
回答No.1

↓こんな感じになります。 Dim wb 'WorkBook Set wb = GetObject("C:\Test.xls") wb.Sheets("合計").Select wb.Sheets("合計").Copy wb.SaveAs "C:\Documents and Settings\User\デスクトップ\合計.txt", -4158 Call MsgBox("Complete.",vbInformation) デスクトップのフォルダ名の "User" の部分はユーザーによって変わりますので、適当に変えてください。

enako
質問者

補足

tsukasa-12rさん、こんにちは。 教えていただいたスクリプトでうまくいきました。 ありがとうございました。 ところで、"-4158"とは何の指定でしょうか? また、このようにWSHでExcelをいろいろ操作 することを解説しているURLがあるようでした らあわせて教えていただきたいと思います。 よろしくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.4

ごめんなさい。 デスクトップ% って書いちゃった。 それと、 デスクトップのパスを環境変数でやるとうまくいかないみたい それと、 Excel2002をインストールしてみたんですが、 xlCurrentPlatformText(-4158)だと ≪未知の実行時エラー≫がでちゃいました。 xlUnicodeText 42 だとうまくいきました。 で、書き直しました。 'タブ区切り 'Excel2000の場合 'Const xlCurrentPlatformText = -4158 'Excel2002の場合(Excel2000では未確認) Const xlUnicodeText = 42 'カンマ区切り Const xlCSV = 6 Set objArgs = WScript.Arguments Set WshShell = WScript.CreateObject("WScript.Shell") strDesktop = WshShell.SpecialFolders("Desktop") Set Exl=CreateObject("Excel.application") Exl.Visible=True popup objargs(0) & " を読み込みます" Exl.Workbooks.Open objargs(0) Set ExlWorkSheet = Exl.Workbooks(1).Sheets("合計") 'popup "カンマ区切りで保存(CSV形式)" 'WorkS.SaveAs "Book1.txt",6 popup "タブ区切りで保存" ExlWorkSheet.SaveAs strDesktop & "\Book1.txt",xlUnicodeText popup "Excelを終了" Exl.Workbooks(1).Close (False) Exl.Quit WScript.Quit sub popup( msg ) if WshShell.Popup( msg ,,,1) = 2 then WScript.Quit end if end sub で、勉強の資料なんですが。 Excelの「マクロの記録」を使用してみる。 Visual Basic Editorでマクロを見てみる Windows Script Hostの本家へ行き http://www.asia.microsoft.com/japan/msdn/scripting/default.asp 「Windows Script 5.6 ドキュメント ダウンロード (exe 形式; 1.67 MB)」 を頂く。 そして、 WSHからアプリケーションを操作するには オブジェクトの中身を見なければ駄目なときがあるので、 その時役立つのが、 Officeにある スクリプトエディタ(MSE)です。 これはofficeの「追加と削除」から Officeツール  +HTMLソース編集   +Webデバックツール です。 これをインストールしてもプログラムメニューに出てきません。 Officeアプリの「ツール」→「マクロ」から起動させるのが普通ですが プログラムの場所は Program Files\Microsoft Office\Office10\MSE7.EXE がそうです。 これを直接起動させることも可能です。 、 MSEを起動させて 表示→「その他のウィンドウ」→「オブジェクトブラウザ」をクリック オブジェクトブラウザ ウィンドウの「カスタマイズ」をクリック 「追加」をクリック Excel2002なら 一覧の Microsoft Excel 10.0 Object Library をダブルクリックして追加します。 すると、オブジェクトブラウザにExcelが追加されるでしょ? 例えば 「SaveAsはどこ?」は Excel  +Worksheet を開きます。 「SaveAsの引数で [ByVal FileFormat]ってなに?」 は Excel  +XlFileFormat(分かりづらいです) を開きます。 xlCurrentPlatformTextっていうのが -4158 って定数になっています。 xlUnicodeText は 42 ね。 (これがタブ区切りっていうを判断するには実際にやってみるしかないです。) マイクロソフトのアメリカサイトには参考ページがあるかも。 ちなみに、カンマ区切りは xlCSV が 6 なので、 ExlWorkSheet.SaveAs strDesktop & "\Book1.txt",6 と記述します。 Webページとして保存したいときは xlHtml が 44 なので、 ExlWorkSheet.SaveAs strDesktop & "\Book1.htm",44 です。 全部の定数が使用できるわけではないです。

enako
質問者

お礼

ittochanさん、こんにちは。 細かい解説ありがとうございます。 あの数値の意味が納得できました! 「スクリプトエディタ」という存 在を初めて知りました。 なるほど、役に立ちそう、というよ り必須のものとなりそうです。 どうもありがとうございました!!

全文を見る
すると、全ての回答が全文表示されます。
  • ittochan
  • ベストアンサー率64% (2667/4137)
回答No.3

すでに回答が付いていたんですね。 でもせっかくだから投稿しときます。 ↓こんな感じ?(Excel2000) このファイルへ xlsファイルをドラッグします。 Const xlCurrentPlatformText = -4158 Set objArgs = WScript.Arguments Set WshShell = WScript.CreateObject("WScript.Shell") Set Exl=CreateObject("Excel.application") Exl.Visible=True popup objargs(0) & " を読み込みます" Exl.Workbooks.Open objargs(0) Set ExlWorkSheet = Exl.Workbooks(1).Sheets("合計") popup "タブ区切りで保存" ExlWorkSheet.SaveAs "%USERPROFILE%\デスクトップ%\Book1.txt",xlCurrentPlatformText popup "Excelを終了" Exl.Workbooks(1).Close (False) Exl.Quit WScript.Quit sub popup( msg ) if WshShell.Popup( msg ,,,1) = 2 then WScript.Quit end if end sub

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

>ところで、"-4158"とは何の指定でしょうか? "-4158" は、ファイル形式をテキストファイル(タブ区切り)に指定する値です。 Excel で「ツール」→「マクロ」→「新しいマクロの記録」とやって、手動で「名前を付けて保存」→「テキストファイル(タブ区切り)」とすると、 Excel のモジュールに >ActiveWorkbook.SaveAs Filename:= _ > "C:\Documents and Settings\Usr\デスクトップ\合計.txt", FileFormat:=xlText, _ > CreateBackup:=False のようにできたんですが、xlText をそのまま使うとエラーになるので、エクセルVBA のイメディエイトウィンドウで ?xlText としたら、-4158 が出てきた、という次第です。 URL はよくわかりません。あしからず・・・。

enako
質問者

お礼

tsukasa-12rさん、こんにちは。 地道な作業までしていただいて 本当に感謝しております。 どうもありがとうございました!!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel(2000)形式のファイルを一括でタブ区切りテキストに変換

    Excell形式の複数のファイル(あるフォルダの中にある全てのxlsファイル)を一括で、タブ区切りのテキストファイルに変換する必要があります。 このような操作をできるツールまたはマクロを教えていただけませんでしょうか。 ExcelはExcel2000を使っています。

  • WSHで.RMIファイルを再生

    こんにちは。 OSはWIN2K SP-4,WSHは5.6を使用しています。 c:x.RMIファイルをWSHを利用して再生するには どのようなスクリプト(wscript)を記述すれば よろしいでしょうか? よろしくお願いいたします。

  • エクセルの各シートに複数のテキストファイルを取り込むには?

    はじめまして。データの整理で困っています。 お力をお借りできたらと思います。 複数のテキストファイルがあります。 これらをエクセルのシートに取り込み、 各シート名を取り込んだファイル名としたいのですが、 何か良い方法はないでしょうか? 例えば、 No1_1001_1.txt、No1_1001_2.txt、No1_1002_1.txt、... というファイル群を Data_No1.xls のSheet1 <- No1_1001_1.txt Data_No1.xls のSheet2 <- No1_1001_2.txt Data_No1.xls のSheet3 <- No1_1001_3.txt ... というようにしたいのですが。よろしくお願いします。

  • VBAでテキストファイルのデータを読み込んでExcelで開く+α

    テキストファイルをExcelファイルとして読み込む事が多く、その量に加えデータの並び方が特殊な為困っております。 テキストファイルのデータの並びをExcelで上下逆順に読み込ませるにはどのようにすればいいでしょうか? また、まとめて複数のテキストファイルを上記の状態で自動的にシートごとに分けて出力させたりしたいのですが。 (例-1行目は無視) ---テキストデータ(タブ区切り)--- 0 0 10 02 11 05 02 15 01 20 25 12 15 10 ---Excelシートデータ--- 0 0 12 15 10 01 20 25 05 02 15 10 02 11

  • excel マクロでシート名取得

    VBscriptでエクセルファイルのフルパスを記述したテキストファイルから 読み込んで、そのエクセルファイルにあるシート名をすべて 違うテキストファイルに出力したいのですが、どうすればよいのでしょうか?

  • Excelで、大量のファイルをテキストファイルにまとめて変換する方法はありますか?

     大量のExcelファイルを自動的にすべてテキストファイルに変換する方法はありますか? aaa.xls, bbb.xls, ccc.xls, ... zzz.xls         ↓ aaa.txt, bbb.txt, ccc.txt, ... zzz.txt と行った具合にです。  対象となるExcelは複数のワークシートからなりますが、いずれも変換したいシートをアクティブにした状態で保存してあります。 (でも、そうでない場合にも、例えば各ファイルの1枚目のシートを選んでテキスト形式で保存する方法があれば、それも教えていただけるとなお助かります。)  よろしくお願いします。

  • COBOLで作ったテキストファイルをエクセルファイルにした時、文字を赤く変える方法

    質問なのですがCOBOLで作ったテキストファイル(CSV、改行付きタブ区切りファイル)をエクセルファイル(拡張子をxlsに変えただけ)にした時に、マイナスの数字をを赤い文字に変える方法を誰か知っている方がいたら教えてほしいのですー結構無理やりの方法でもいいので教えて下さい! お願い致しますV(^0^)

  • excelからtab区切りテキストへの変換で…。

    過去の質問を検索しましたが、無い様ですので質問させてください。 excelでためたデータベースをtab区切りテキストに変換したのですが、 できあがったtab区切りテキストをテキストエディタで開きますと、 (" ")が勝手にデータの両端についてしまうのです。 例えば(18,000)という数字データがあったとします、 それをタブ区切りテキストに書き出すと、("18,000")という風になってしまいます。 そこで、とりあえずすべてのデータの書式を文字列にしてやりますと、(18000)となってしまいますから、 文字列として(,)を追加したのですが、 やっぱりtab区切りテキストに変換すると(" ")がついてきます。 ただし、普通の文字のフィールドは大丈夫です。 (" ")を消す方法はないでしょうか? 少々わかりにくい説明ですが、何卒よろしくお願いします。 あと、追加で質問なのですが、桁数の多い数字が勝手に16進数?に変わってしまいます。 こちらの方も原因が分かりませんので教えていただければ幸いです。 ちなみに検証してみたexcelのバージョンは Win版 Excel2000 Mac版 Excel98 です。 設定は特にいじっていませんので、初期設定だと思います。 よろしくお願いします。

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

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

  • EXCELをテキストファイルにする時に

    EXCELをテキストファイルにする際、 「フォーマットしないでテキストファイルにしろ」と言われたのですが、どうすればよいのでしょうか? テキストにする事自体がフォーマットなのではないのかと思うのですが。。。 ちなみに、そのファイルをFFFTPで海外のサーバーに送ります。タブ区切などですると読めないらしいのです。。