![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
新規にメモ帳を起動して、「test」と入力したいです。そして保存はしたくないです。
Sub Sample()
Dim rc As Long
rc = Shell("notepad.exe", vbNormalFocus)
End Sub
これだと、新規にメモ帳は起動できますが、書き込みができません。
Sub Sample2()
Dim strList As String
Dim adoSt As ADODB.Stream
Set adoSt = CreateObject("ADODB.Stream")
With adoSt
.Type = adTypeText
.Charset = "UTF-8"
.Open
End With
adoSt.WriteText "test", adWriteLine
adoSt.SaveToFile "c:\test.txt", adSaveCreateOverWrite
adoSt.Close
Set adoSt = Nothing
End Sub
これだとメモ帳を作成して書き込めますが、保存されてしまいます。
新規にメモ帳を起動→文字を書き込む
までをvbaで行い、その後は×ボタンで消せる状態にしたいのですが、
どうすればいいか教えてください。
No.3ベストアンサー
- 回答日時:
メモ帳をイミディウェイトウィンドウ代わりに使ってやろうかと以前に作成したものです。
・メモ帳のウィンドウサイズを小ぶりに設定し、最前面表示させています。
・二重起動するとおかしな事になりますが、未対策です。
ご参考まで。
使用例
☆標準モジュール
Sub test()
Dim myDebug As myDebugPrintClass
Set myDebug = New myDebugPrintClass
myDebug.debugprint "てすと"
myDebug.debugprint "ついき"
End Sub
☆クラスモジュール myDebugPrintClass
※VBEで挿入/クラスモジュールで生成されるClass1に貼り付けて、Class1から改名して下さい。
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" _
(ByVal hwndParent As Long, ByVal hwndChildAfter As Long, _
ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal Msg As Long, wParam As Long, lParam As Long) As Long
Private Declare Function SendMessageAny Lib "user32.dll" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal Msg As Long, wParam As Long, lParam As Any) As Long
Private Declare Function MoveWindow Lib "USER32" _
(ByVal hWnd As Long, ByVal x As Long, ByVal y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, _
ByVal bRepaint As Long) As Long
Private Declare Function SetWindowPos Lib "USER32" _
(ByVal hWnd As Long, _
ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function SetFocusAPI Lib "USER32" Alias "SetFocus" (ByVal hWnd&) As Long
'Edit Control 制御用定数
Private Const EM_GETSEL = &HB0 '選択開始位置と終了位置の取得
Private Const EM_SETSEL = &HB1 '選択開始位置と終了位置の設定
Private Const EM_REPLACESEL = &HC2 '選択文字列を指定の文字列に置換
Private Const WM_SETTEXT = &HC 'テキストの設定
Private Const WM_GETTEXT = &HD 'テキストの取得
Private Const WM_GETTEXTLENGTH = &HE 'テキストの長さの取得(NULLを含まず)
Private Const WM_IME_CHAR = &H286
Private Const SWP_NOMOVE = 2
Private Const SWP_NOSIZE = 1
Private Const FLAGS = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOPMOST = -1
Private Const HWND_NOTOPMOST = -2
Private lnghWnd As Long 'hWnd of top level (Parent) window
Private lnghWndTarget As Long 'hWnd of target (Child) window
Private myText As String
Private Sub Class_Initialize()
Dim lngRc As Long
lngRc = Shell(Environ("WINDIR") & "\NOTEPAD.EXE", vbNormalFocus)
Sleep 100
lnghWnd = FindWindowEx(0, 0, "Notepad", "無題 - メモ帳")
lnghWndTarget = FindWindowEx(lnghWnd, 0, "Edit", "")
lngRc = SetWindowPos(lnghWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS)
lngRc = MoveWindow(lnghWnd, 0, 10, 300, 200, 1)
End Sub
Public Sub debugprint(newValue As Variant)
Dim lngRc As Long
Dim ndx As Long
Dim newText As String
If TypeName(newValue) = "String" Then
newText = newValue
Else
newText = CStr(newValue)
End If
'Editへの追記
ndx = SendMessage(lnghWndTarget, WM_GETTEXTLENGTH, 0, 0&)
If ndx <> 0 Then
SetFocusAPI lnghWndTarget
lngRc = SendMessage(lnghWndTarget, EM_SETSEL, ndx, ndx)
newText = vbCrLf & newText
lngRc = SendMessageAny(lnghWndTarget, EM_REPLACESEL, 0, ByVal newText)
Else
lngRc = SendMessageAny(lnghWndTarget, WM_SETTEXT, 0, ByVal newText)
End If
End Sub
![「新規にメモ帳を起動して、「test」と入」の回答画像3](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/2/1359307_5497ea8aecec8/M.jpg)
No.2
- 回答日時:
後半のソース
> これだとメモ帳を作成して書き込めますが、保存されてしまいます。
なぜ
> adoSt.SaveToFile "c:\test.txt", adSaveCreateOverWrite
は必要なんですか?
No.1
- 回答日時:
メモ帳は使いたいわけなんですよね?
たとえばメッセージボックスで表示するのは却下?
1案のメモ帳を立ち上げてからだと
Sendkeys で文字列を送る方法がありますが
タイミングが合わないと全く別の所へ送ってしまうことがあります。
また、NumLock キーが外れる場合があるのはよくしられた事です。
Sub NoteP()
Dim rc As Long
rc = Shell("notepad.exe", vbNormalFocus)
Application.Wait (Now + TimeValue("0:00:1"))
SendKeys "test"
End Sub
この場合だと×点で閉じようとすると保存するか聞いてきます。
2案でしたらメモ帳で開いた後にファイルを Kill してしまえば
×点で閉じようとした場合に確認メッセージは出ません。
前略
adoSt.Close
Set adoSt = Nothing
Shell("notepad.exe" & " " & "c:\test.txt")
kill "c:\test.txt"
End Sub
用途に合わせてどうぞ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない 2 2023/05/24 15:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) Excel・ユーザーフォームの情報を受け渡したい 4 2022/06/08 10:11
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
このQ&Aを見た人はこんなQ&Aも見ています
-
今年はじめたいことは?
今年はこれをはじめたい!ということを教えてください!
-
いちばん失敗した人決定戦
あなたの「告白」での大失敗を教えてください。
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
テレビやラジオに出たことがある人、いますか?
テレビやラジオに取材されたり、ゲスト出演したことある方いますか?
-
泣きながら食べたご飯の思い出
泣きながら食べたご飯の思い出を教えてください。
-
VBAでメモ帳にコピペをしたいのですが…
PowerPoint(パワーポイント)
-
ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存
Visual Basic(VBA)
-
エクセルマクロで同じフォルダ内のテキストファイルをメモ帳で開く方法
Excel(エクセル)
-
-
4
既存のテキストファイルを開く方法
Visual Basic(VBA)
-
5
DoEventsがやはり分からない
Visual Basic(VBA)
-
6
VB.netでFindWindowExやると・・・9222812402616107008!?
Visual Basic(VBA)
-
7
メモ帳(notepad.exe)の起動オプション
UNIX・Linux
-
8
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
9
アウトルックが起動しているかどうかを取得するには?
Visual Basic(VBA)
-
10
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
11
VBA メモ帳の上書き保存がしたい
Ruby
-
12
ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教科書などに初めから書いてあ...
-
消しゴムがくっついて、跡が取...
-
CDやDVDに書くマジックペン
-
くっついた消しゴムかすをとる...
-
プロジェクタだと動画が映らない
-
ノートPCにデスクトップPCをつ...
-
「覚書」、「メモ」、「備忘録...
-
両面印刷するとき裏表とも罫線...
-
字が下手すぎて祝儀袋を持って...
-
職場でもらったメモ、付箋をそ...
-
物のなくなる職場(愚痴です)
-
PCの画面上に文字や線を引ける...
-
「心」という漢字の3画目は、は...
-
ExcelVBAでスペースキー操作したい
-
パソコン買い替え時のAcce...
-
ペンだこのようなものが親指の...
-
CD盤の表面
-
Excel:任意の列だけCSV形式で...
-
指を動かす人・・・。
-
熱で溶けた車内用滑り止めシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教科書などに初めから書いてあ...
-
日頃、感じる不便なものってあ...
-
Excel:任意の列だけCSV形式で...
-
消しゴムがくっついて、跡が取...
-
CDやDVDに書くマジックペン
-
Windows10で、拡張子が.pyのフ...
-
書いたり消したりできるラミネ...
-
「覚書」、「メモ」、「備忘録...
-
CD盤の表面
-
両面印刷するとき裏表とも罫線...
-
プロジェクタだと動画が映らない
-
字が下手すぎて祝儀袋を持って...
-
小6でこの絵上手いですか? ア...
-
Wordで 文字の一部にモザイクを...
-
VBAでメモ帳にコピペをしたいの...
-
メモ帳でタブ幅の設定はできる...
-
メモ帳のテキストがいつのまに...
-
LibreOffice Writer で線の太さ...
-
iPhoneのメモ帳を使ってますが...
-
ペンだこのようなものが親指の...
おすすめ情報