質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

4回答

4409閲覧

VBA メモ帳で保存

kitagawasho

総合スコア28

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/11/12 04:43

編集2019/11/12 04:50

前提・実現したいこと

VBAで一部のデータをメモ帳に貼り付けしてデスクトップに保存するシステムを作っています。
現在は個人のPCのデスクトップに出力していますが、どのPCでもデスクトップに出力できるようにしたい。

発生している問題・エラーメッセージ

一人のユーザーしか保存ができなく、ほかの人がマクロをいじるのがめんどくさい +αで出力する際、ソースコードだとtest(1).txtで、保存にしているのに()が抜けた状態で出力される。

該当のソースコード

VBA

1Sub std_1() 2 Application.ScreenUpdating = False 3 If Range("L4").Value = "10" Then 4 If Range("M4").Value = "10" Then 5 If Range("N4").Value = "10" Then 6 Worksheets("■").Select 7 Range("A6:E701").Select 8 Selection.Copy 9 Shell "notepad.exe", 1 10 SendKeys "^v" '「Ctrl」+「V」 11 SendKeys "^s" '「Ctrl」+「S」 12 SendKeys "C:\Users\aaa\Desktop\test(1).txt " '保存先入力" 13 SendKeys "{Enter}" 'ダイアログ ボックス確定" 14 SendKeys "%{F4}" '「Alt」+「F4」 15 End If 16 End If 17 End If 18End Sub

試したこと

補足情報(FW/ツールのバージョンなど)

Excel2016
Windows10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2019/11/12 04:47

コードはマークダウン記法のインラインコードではなく、コードブロックにしてください。 コードブロックは下記の書式になります。 ```vba ここにコードを記述 ```
guest

回答4

0

WSH.SpecialFolders を使ってください。

Office TANAKA - Excel VBA Tips[特殊フォルダを取得する]

投稿2019/11/12 04:50

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

デスクトップのパスの取得は下記を参考に。

Office TANAKA - Excel VBA Tips[特殊フォルダを取得する]

あと、質問内容からは外れますが、ちょっと気になったので。

メモ帳で保存ということですが、要するにテキストファイルで保存ということなので、
メモ帳を開かずとも直接テキストファイルとして保存すればいいかと思います。

エクセルVBAでテキストファイルに書き出す最も簡単なプログラム

他アプリをSendKeysで操作するのは不安定ですのでお勧めできません。

投稿2019/11/12 04:54

hatena19

総合スコア33699

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kitagawasho

2019/11/12 05:11

一部のデータをテキストファイルで保存できますか? シートの内容すべてを保存できるのは知っていましたが、部分的な保存の仕方がわからなく、SendKeysを使っていました。
stdio

2019/11/13 00:23

保存する時「ファイル名が被ってはいけない」というときOSのルールさえ守れば、セル単位での保存も可能です。 行列番号をファイ名の後につければ、良いだけ何ですけどね...
guest

0

ベストアンサー

エクセルのシートのセル内にパス設定用のセルを設けて、保存場所はそのセルを読み取るという設定にすれば個々の設定ができるようになると思います。
保存場所をここに設定できるようなのに変更すれば、自分で設定する手間も省けると思います。
個人的には
・社内のローカルサーバー等があればそこにメモ保存用のフォルダを作って出力する
・エクセル経由でデータベース上に記録させてから、メモ帳に出力する(ログも残せるし、のちに今までのデータをデータ分析する場合に役に立つため)
が良いと思います。

投稿2019/11/12 05:09

hiro_hiro_hiro

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

SendKeys "C:\Users\aaa\Desktop\test(1).txt " '保存先入力"

の名前を変えればいいだけです。
ディスクトップに固定でなくても、ThisWorkbook.Pathでそのエクセルのある位置に書き出せば良いのではないでしょうか?

投稿2019/11/12 04:51

stdio

総合スコア3307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問