
VBAの以下プログラムがあります。
Dim DblID As Double '変数DblIDを定義
DblID = Shell("notepad.exe", vbNormalFocus) '元のサイズと位置でメモ帳を起動する
Range("A1").CurrentRegion.Copy '空白のセルで囲まれた範囲をコピーする
AppActivate DblID 'メモ帳をアクティブにする
SendKeys "^v", True 'コピーしたセルをメモ帳に貼り付ける
SendKeys "%fa", True '名前を付けて保存のダイアログ画面を表示する
Call Sleep(1000) '1秒だけ処理を休止する
SendKeys ThisWorkbook.Path & "\Memo.txt", True 'ファイル名をフルパスで指定する
SendKeys "%s" 'ファイルを保存する
引用元:
<< http://www.excel-vba.net/excel-function-018.html >>
> SendKeys ThisWorkbook.Path & "\Memo.txt", True
この部分ですが、名前を付けて保存のダイアログ画面のファイル名の欄に
フルパスを入力していますが、パスが一部欠けて入力されてしまうため、
エラーとなってしまいます。
ちゃんと入力されて保存まで完了することもあります。
毎回正常に動作させるためには、どのように工夫すればよろしいのでしょうか?
ご教授いただけると幸いです。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
略
SendKeys "%fa", True '名前を付けて保存のダイアログ画面を表示する
Call Sleep(500) '0.5秒だけ処理を休止する
SendKeys ThisWorkbook.Path & "\Memo.txt", True 'ファイル名をフルパスで指定する
Call Sleep(500) '0.5秒だけ処理を休止する
SendKeys "%s" 'ファイルを保存する
こうっすかね。バッファかな?メモリかな?ってところですが正確には原因は特定できませんでした。
自身で1秒処理を止めている辺り気付いているんでしょうけど、一番のボトルネックになっているのは視覚効果かと推測。
ttp://www.yakushima-tonbo.com/windows/Windows7/Windows7_reiryo_2.htm
Windows8や10は知らんですが、似たようなオプションがあるので切るという手を試してみてください。
上記よりもうちょい確実に、と考えるなら数回に分けるのが無難かと思います。
・SendKeysで半角スペースをファイル名欄に送る、またはDELかBSを送ってデフォルトの「*.txt」を消させる
・SendKeysで本来のパスを送る
(フルパスの先頭が空白だったら無視されるのでそのまま保存できる)
これだと1回目のSendKeysでコケても問題は出ないと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトのコピー関...
-
エクセルVBAで一つ上の階層...
-
Excel VBAでテキストファイルを...
-
【VB.NET】App.configにファイ...
-
【Excel VBA】Power Qurry のソ...
-
エクセルvbaでdocuworksprinter...
-
Dosバッチでファイルパスからフ...
-
(GCCコンパイラ)動的リンクを絶...
-
Excel2010VBAでエラーが出る相...
-
エクセルのマクロで特定フォル...
-
VBA★PDFをPDFアプリで印刷し...
-
VBSを起動後にファイルをドラッ...
-
Pythonのバージョンに関する質...
-
VBS パスに変数を入れたい
-
パワーポイントの文字数
-
エクセルのプロパティーでセキ...
-
ファイルサーバ上のファイルが...
-
会社のネットワーク上のファイ...
-
エクセル UserForm 呼び出しで...
-
エクセルファイル名に更新日時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
Excel 相対パス
-
実行ファイルのパスを取得したい
-
xcopyコマンドの進行状況を表示...
-
【VB.NET】App.configにファイ...
-
ExcelのVBAで上書き保存を確...
-
コマンドプロンプトのコピー関...
-
VBAでパワーシェルを実行したい...
-
エクセルのマクロで特定フォル...
-
Eclipse
-
VBAでの共有パスにつきまして
-
VBA★PDFをPDFアプリで印刷し...
-
C#でのProcess.Startと変数path
-
【VBA】ExcelマクロでCSVファイ...
-
ExcelVBAの使い方 ¥の使い方...
-
fopenでのパス指定
-
EXCEL(VBA)で指定フォルダ内の...
-
A列に記載されているフォルダ...
-
VBAで、VBのapp.pathと同じ機能...
おすすめ情報