
はじめて質問をします。 monnomestと申します。
vbaのマクロを実行して、シートを作成するwsh(by jscript)を作成しました。そのシートを保存する際にchrdirで保存場所を明示したいのですが、指定の仕方が分かりません。(wshを置いておくdirectoryにしたい。)
ChDirは、エクセルのmethodではないため、以下のようでは、エラーになりますし、
var objXL = WScript.CreateObject("Excel.Application");
objXL.Visible = true;
with(objXL){
var tar=workbooks.Open(scriptpath+vba);
try{
Run("'"+vba+"'!'"+command+"'");
}catch(e){
}
tar.Close();
ChDir("xxxxxxx"); ← とは出来ない。
}
もちろん、wshを使わず、vbaをそのまま立ち上げればこんなことする必要はないのですが、
諸々の事情がありまして、wshで行えれば都合がよいのです。
objectが何なのかが分かれば解決でしょうか。
どなたかご教示いただけますでしょうか。
No.3ベストアンサー
- 回答日時:
こんばんは。
あまり、私が、ごちゃごちゃ言ってもしょうがないですね。
ちょっと、度が過ぎたかもしれません。不適切な言葉があったら、申し訳ありません。
ChDir で直接影響を受けるのは、本来、GetOpenFilename等の、この手のダイアログだけだと思います。保存する場合に、ChDir は不要です。単に、ディレクトリを書かなくて済むだけです。
もし、あえて変えるなら、[Application.]DefaultFilePath で規定になっているフォルダを変えればよいのです。そこを一次的に変えれば、開く時には、そこを開けますし、保存する時も、そこになります。
> もし、あえて変えるなら、[Application.]DefaultFilePath で規定になっているフォルダを変えればよいのです。
なるほど、そうですよね。納得です。
ありがとうございました。
No.2
- 回答日時:
こんにちは。
ここのログの範囲だけでは、ChDir は必要ないように思います。その必然性が分からないです。何か、基本的な誤解が生じているようです。
>保存ダイアログを開く際にそのユーザーがクリックしたwsfのdirectoryが開く。」というのが目的です。
どのアプリケーションでも、ユーザーにフォルダを選ばせる時に、当初は、[使用ユーザー]のMy Documents やC:\から開くのが一般的だと思うのです。そこで、ダイアログを開いて、自由選択させて、ファイルを保存するわけです。
ブック tar.Close してからなら、ChDir ではなく、FileSystemObject で、MoveFileメソッドを行えばよいのですが、それは、常識的ではありません。
wsfであろうがなかろうが、ChDir というのは、アプリケーションの対象のカレントディレクトリが変わるという目的で、VBAの中で通用する話で、VBAの外に出たら、保存のフォルダは直接関係ありません。通常は、フォルダ名を入れないで保存や開くことをする以外は、ChDir は使いません。
ダイアログは、JavaScript やVBScipt なら、CreateObject("WScript.Shell") のSpecialFolders オブジェクトなどで出して、フォルダを取得して、それを保存フォルダの変数、例えば、#1 の newdir に渡せば良いわけでは?
再びありがとうございます。
> 当初は、[使用ユーザー]のMy Documents やC:\から開くのが一般的だと思うのです。
ぅーん。ただ、チームで共同作業をしていて、サーバー内のすでに決まっているdirectoryに保存する必要がある場合、curdirを指定してしまいたいこともあると思います。たとえば毎月ちがうしかも階層の深いところにあるdirectoryに収めるのだけれど、vbaに参照情報をつけたりするのは、スマートでないと思うわけで、軽いwsfを予定の保存先においてそこに完成したシートを保存したかっただけです。
(別のパターンでcsvを加工して、展開させるwsf+vbaを作って活用していますが、そのcsvのdirectoryにvba内でchdirしています。しかし、質問させていただいているケースでは、netからの情報を自動集計するvbaなので、元データもない。)
でも、考えてみたら書類名は、ある程度決まっているものだし、 Activeworkbook.SaveAs (scriptdir+'newname');
でいいんでした。それを発見できて助かりました。
(別の問題と混ざり合ってターゲットがずれていってしまったようです。)
ところで、必然性はともかく、ChDirのやりようはあるかの疑問は残るのですが、、、
No.1
- 回答日時:
こんばんは。
> ChDir("xxxxxxx"); ← とは出来ない。
>objectが何なのかが分かれば解決でしょうか。
これを動かすには、Visual Basic For Application のタイプライブラリを呼び出しておかないと動かないかもしれませんが、必要あるのでしょうか?
>そのシートを保存する際にchrdirで保存場所を明示したいのですが、指定の仕方が分かりません。
単に、別のマクロを作って、command2 をRunさせるか、
Run("'"+vba+"'!'"+command2+"'"); ←これで動くかは分かりませんが。
保存するなら、以下のようなすれば良いです。
//
newdir ="x:\\xxxxxx\\";
DisplayAlerts = false;
tar.SaveAs (newdir + tar.Name);
DisplayAlerts = true;
tar.Close False;
//
この回答への補足
回答ありがとうございます。質問内容が明確でなくてすみません。
wsfで実行するのは、シートの作成までで、
あくまで「ユーザーに多少の加工の後に好きな場所に好きな名前で保存してもらいたく、保存ダイアログを開く際にそのユーザーがクリックしたwsfのdirectoryが開く。」というのが目的です。
ご指摘のとおりVBAにアクセスすればChDirを扱えると思うのですが、
「CreateObject("Excel.Application")のようなものが必要かかな」
というところで終わってしまって、、、、
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
google chrome ブックマークの...
-
Gom PlayerでCaptureに保存され...
-
クロームの、パスワードの保存...
-
PhotoshopCS5でWeb用に保存のア...
-
(WEBページ)「名前を付けて保...
-
ホームページ・ビルダーのデー...
-
ダウンロードが99%で止まって...
-
コクヨのフリーソフト、合わせ...
-
動画の保存とダウンロードの違い
-
PDF-Xchange viewerのツールバ...
-
mystartsearchの消し方
-
NAS上の共有フォルダにパスワー...
-
ブラウザの「opera」でブックマ...
-
ブラウザで、ダウンロードせず...
-
Leawo Blu-ray Playerをダウン...
-
firefoxでダウンロードに失敗し...
-
androidスマートフォンのchrome...
-
firefox は動作を停止しました
-
「お気に入り」項目の ”並び順”...
-
FirefoxでzipのDL処理設定がお...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Googleの履歴などについて。 Go...
-
ダウンロードすると画像サイズ...
-
google chrome ブックマークの...
-
PhotoshopCS5でWeb用に保存のア...
-
LISMO(リスモ)に取り込...
-
ブックマークの違法性。
-
ホームページ・ビルダーのデー...
-
Firefoxテーマの保存先について
-
ロボフォームで楽天RMSにログイン
-
Firefoxで画像を保存する良いア...
-
WEBページの全てを保存させない...
-
media player classic 画像キャ...
-
紹介していただいたソフトを入...
-
おすすめのGoogle Chromeの拡張...
-
Firefox にこんなアドオンはな...
-
【FireFox】リンク先の画像をク...
-
エクセルで、請求書を作るとき...
-
クロームの、パスワードの保存...
-
【激困り】検索エンジンのキャ...
-
ウェブ魚拓とgoogleのキャッシ...
おすすめ情報