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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存 2 2022/04/18 13:15
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) 【VBA】Excelの特定範囲のセルを画像で保存したい 2 2023/01/25 13:06
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBAでの SendKeysの変数指定方法
Excel(エクセル)
-
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存
Visual Basic(VBA)
-
-
4
VBAでメモ帳にコピペをしたいのですが…
PowerPoint(パワーポイント)
-
5
VBAでエクセル内の情報を他のアプリケーションへ自動入力したいです
Visual Basic(VBA)
-
6
【sendkeysメソッドが動かずに苦慮しております】
Visual Basic(VBA)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA一覧取得 再投稿
-
エクセルvbaでdocuworksprinter...
-
VBAでパワーシェルを実行したい...
-
ExcelVBAの使い方 ¥の使い方...
-
バッチファイル 二つ上のディ...
-
初心者powershellのPS1ファイル...
-
VBAでフリーエディターのテキス...
-
パスワード保護されたExcelファ...
-
Eclipse
-
Accessで「ファイルを開く」ダ...
-
指定したフォルダ内の最新ファ...
-
C#でのProcess.Startと変数path
-
【VBA】ExcelマクロでCSVファイ...
-
リストボックスにファイル名の...
-
Access2000のテーブルにPDFファ...
-
SaveAsの保存先について
-
xcopyコマンドの進行状況を表示...
-
file://について
-
1行単位のデータをテキストファ...
-
【VB.NET】App.configにファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 二つ上のディ...
-
エクセルvbaでdocuworksprinter...
-
エクセルVBAで一つ上の階層...
-
Excel 相対パス
-
【VB.NET】App.configにファイ...
-
xcopyコマンドの進行状況を表示...
-
【VBA】ExcelマクロでCSVファイ...
-
EXCEL(VBA)で指定フォルダ内の...
-
エクセルのマクロで特定フォル...
-
パスワード保護されたExcelファ...
-
ExcelVBAの使い方 ¥の使い方...
-
開いているファイルを削除し、...
-
SaveAsの保存先について
-
初心者powershellのPS1ファイル...
-
VBA★PDFをPDFアプリで印刷し...
-
fopenでのパス指定
-
【Excel VBA】Power Qurry のソ...
-
指定したフォルダ内の最新ファ...
-
A列に記載されているフォルダ...
-
ExcelのVBAで上書き保存を確...
おすすめ情報