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" の部分はユーザーによって変わりますので、適当に変えてください。
この回答への補足
tsukasa-12rさん、こんにちは。
教えていただいたスクリプトでうまくいきました。
ありがとうございました。
ところで、"-4158"とは何の指定でしょうか?
また、このようにWSHでExcelをいろいろ操作
することを解説しているURLがあるようでした
らあわせて教えていただきたいと思います。
よろしくお願いいたします。
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/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
です。
全部の定数が使用できるわけではないです。
ittochanさん、こんにちは。
細かい解説ありがとうございます。
あの数値の意味が納得できました!
「スクリプトエディタ」という存
在を初めて知りました。
なるほど、役に立ちそう、というよ
り必須のものとなりそうです。
どうもありがとうございました!!
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 はよくわかりません。あしからず・・・。
tsukasa-12rさん、こんにちは。
地道な作業までしていただいて
本当に感謝しております。
どうもありがとうございました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/16 14:36
- Excel(エクセル) vba シートの並び替え 1 2023/04/19 13:44
- その他(Microsoft Office) エクセルの休日について教えてください。 1 2023/01/06 15:45
- Excel(エクセル) vba 同じブック内での転記について 4 2023/01/15 14:42
- Excel(エクセル) 別のシートの最終行の値を参照するには 5 2022/12/15 13:18
- Visual Basic(VBA) 2つの条件に合うセルにデータを転記したい 4 2022/12/02 11:05
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) エクセルシートの合計の変動 5 2022/04/05 15:56
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
マクロを使ってフォルダー内に...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
3桁ごと?4桁ごと?コンマの...
-
カンマ区切りの数字をCSVフ...
-
CSVの定義
-
データにカンマが入ったCSVデー...
-
C#で、テキストボックスの入力...
-
Excel VBA: Inputステートメ...
-
WORDで改ページすると時々グレ...
-
カンマ区切り
-
エクセルの区切り位置の設定方法
-
[VBA][Excel]クリップボードか...
-
VBScript 日付の比較について
-
ひとつの命令を複数行に記述
-
カンマ区切りでないテキストをc...
-
perlでのSTDINについて
-
VBAでtxtファイルを読み込む際...
-
wordの数字の列をexcelに貼り付...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSVファイルの中で、「 , 」カ...
-
データにカンマが入ったCSVデー...
-
EXCELからCSVにすると余計なカ...
-
エクセルで数値を全角文字(カ...
-
マクロを使ってフォルダー内に...
-
カンマ区切りの数字をCSVフ...
-
WORDで改ページすると時々グレ...
-
CSVの定義
-
[VBA][Excel]クリップボードか...
-
カンマ区切り
-
ひとつの命令を複数行に記述
-
「カンマ」と「コンマ」は同じ...
-
VBAでtxtファイルを読み込む際...
-
何故、日本は未だに数字を3桁...
-
エクセルの区切り位置の設定方法
-
PHP カンマをエスケープしたい...
-
C#で、テキストボックスの入力...
-
海外のケータイ(GSM携帯)はハ...
-
3桁ごと?4桁ごと?コンマの...
-
openoffice calcで#DIV/0! の...
おすすめ情報