dポイントプレゼントキャンペーン実施中!

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

A 回答 (4件)

↓こんな感じになります。


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" の部分はユーザーによって変わりますので、適当に変えてください。

この回答への補足

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

補足日時:2004/02/20 08:23
    • good
    • 0

ごめんなさい。


デスクトップ%
って書いちゃった。

それと、
デスクトップのパスを環境変数でやるとうまくいかないみたい

それと、
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/scripti …

「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
です。

全部の定数が使用できるわけではないです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/02/23 11:12

すでに回答が付いていたんですね。



でもせっかくだから投稿しときます。

↓こんな感じ?(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
    • good
    • 0

>ところで、"-4158"とは何の指定でしょうか?



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

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

お礼日時:2004/02/20 13:47

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