
新規にメモ帳を起動して、「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

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も見ています
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
カラオケの鉄板ソング
歌えばその場が絶対盛り上がる「鉄板ソング」を教えてください!
-
VBAでメモ帳にコピペをしたいのですが…
PowerPoint(パワーポイント)
-
ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存
Visual Basic(VBA)
-
エクセルマクロで同じフォルダ内のテキストファイルをメモ帳で開く方法
Excel(エクセル)
-
-
4
既存のテキストファイルを開く方法
Visual Basic(VBA)
-
5
DoEventsがやはり分からない
Visual Basic(VBA)
-
6
VBA メモ帳の上書き保存がしたい
Ruby
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
メモ帳(notepad.exe)の起動オプション
UNIX・Linux
-
9
VB.netでFindWindowExやると・・・9222812402616107008!?
Visual Basic(VBA)
-
10
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
11
ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel:任意の列だけCSV形式で...
-
教科書などに初めから書いてあ...
-
CDやDVDに書くマジックペン
-
書いたり消したりできるラミネ...
-
「覚書」、「メモ」、「備忘録...
-
小6でこの絵上手いですか? ア...
-
Windows10で、拡張子が.pyのフ...
-
メモ帳でタブ幅の設定はできる...
-
CD盤の表面
-
くっついた消しゴムかすをとる...
-
プロジェクタだと動画が映らない
-
こんな文具?工具?を探してい...
-
消しゴムがくっついて、跡が取...
-
VBAでメモ帳にコピペをしたいの...
-
パソコン買い替え時のAcce...
-
Wordで 文字の一部にモザイクを...
-
PCの画面上に文字や線を引ける...
-
テプラのテープカートリッジを...
-
手帳型のスマホケースで写真や...
-
LibreOffice Writer で線の太さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教科書などに初めから書いてあ...
-
Excel:任意の列だけCSV形式で...
-
CDやDVDに書くマジックペン
-
Windows10で、拡張子が.pyのフ...
-
消しゴムがくっついて、跡が取...
-
書いたり消したりできるラミネ...
-
「覚書」、「メモ」、「備忘録...
-
両面印刷するとき裏表とも罫線...
-
日頃、感じる不便なものってあ...
-
Wordで 文字の一部にモザイクを...
-
字が下手すぎて祝儀袋を持って...
-
プロジェクタだと動画が映らない
-
VBAでメモ帳にコピペをしたいの...
-
PCの画面上に文字や線を引ける...
-
iPhoneのメモ帳を使ってますが...
-
メモ帳のテキストがいつのまに...
-
ペンだこのようなものが親指の...
-
メモ帳でタブ幅の設定はできる...
-
パソコン買い替え時のAcce...
-
小6でこの絵上手いですか? ア...
おすすめ情報