10代と話して驚いたこと

タイトルだけではわかりづらいかもしれません。
Chat-GPTに聞いたのですが、ちゃんと意図を汲み取ってもらえなかたのか、思ったようなマクロを作ってくれませんでした。
どんなマクロを組めば思った動作してくれますか?
因みにマクロ記述はできないので、Chat-GPTに聞いたり、「マクロの記録」を使ったりする程度の知識しかありません。

質問(Chat-GPTにも同じ内容で聞いています)
--<質問>------------------------
エクセルで次のマクロ作って
・windowsアクセサリのメモ帳を開く
・エクセルのsheet1のA5セルからA11セルまでをテキストデータとしてクリップボードにコピーする
・クリップボードの内容を先に開いたメモ帳にテキストデータとして貼り付ける
・メモ帳をcp.batというファイル名でC:\TEST内のファイルを上書きする

--<回答>------------------------
ChatGPT
以下が、指定された要件に基づいてExcel VBAで作成されたマクロです。このマクロは、メモ帳を開き、A5からA11のセルのデータをクリップボードにコピーしてメモ帳に貼り付け、最後に指定のファイルパスにある既存の cp.bat ファイルを上書きします。
~~~~~~~~~~~~~
Sub OpenNotepadCopyPasteAndOverwriteFile()
Dim textData As String
Dim notepadPath As String
Dim filePath As String

' メモ帳のパス
notepadPath = "notepad.exe"

' アクセサリのメモ帳を開く
Shell notepadPath, vbNormalFocus

' A5からA11のセルを取得してテキストデータに結合
For i = 5 To 11
textData = textData & Range("A" & i).Value & vbCrLf
Next i

' クリップボードにコピー
With CreateObject("Forms.DataObject")
.SetText textData
.PutInClipboard
End With

' メモ帳にクリップボードの内容を貼り付け
Application.Wait Now + TimeValue("00:00:02") ' 2秒待機
SendKeys "^v" ' Ctrl + V

' ファイルのパス
filePath = "C:\TEST\cp.bat"

' メモ帳を保存
Application.Wait Now + TimeValue("00:00:02") ' 2秒待機
SendKeys "^s" ' Ctrl + S
Application.Wait Now + TimeValue("00:00:02") ' 2秒待機
SendKeys filePath
Application.Wait Now + TimeValue("00:00:02") ' 2秒待機
SendKeys "~" ' Enter

' メモ帳を閉じる
Application.Wait Now + TimeValue("00:00:02") ' 2秒待機
SendKeys "^w" ' Ctrl + W

End Sub
~~~~~~~~~~~~~

A 回答 (4件)

No3です。



>こんな短い記述でできるとは

短いのがお好みなら・・
以下でも同様のことが可能と思います。

Sub Sample2()
Open "C:TEMP\cp.bat" For Output As #1
Print #1, Application.TextJoin(vbCrLf, 0, Range("A5:A11"))
Close #1
End Sub
    • good
    • 0
この回答へのお礼

動作の確認させていただきます。

何度もありがとうございます。
ベストアンサーにさせていただいきます。

お礼日時:2024/01/06 21:01

こんばんは



「エクセルでマクロ」とのご質問ですが、「他のソフトを制御する」という内容自体がそもそものマクロの範疇を超えています。
(できないことはないですけれど・・)
Chat-GPTは、質問者様の指示に従ってコードを作成しようと努力しているように見えます。
(残念ながら、思ったようには動作しないようですけれど・・)


質問者様のご指示は無視してマクロの範疇で処理すれば、簡単なテキスト出力で済むと思います。
※ 記載がないので、文字コードはなりゆき(=ANSI)です。
(文字コードを変えたい場合には、得意のChat-GPTにお尋ねください)

Sub Sample()
Dim rw As Long
Const dataPath = "C:\TEST\cp.bat"

Open dataPath For Output As #1
For rw = 5 To 11
Print #1, Cells(rw, 1).Text
Next rw
Close #1
End Sub
    • good
    • 2
この回答へのお礼

ありがとうございます!
私のやりたいことが、こんな短い記述でできるとは!!

やりたいことの意図まで汲み取っていただき、ありがとうございました。

お礼日時:2024/01/05 12:13

質問をちょっとだけいじっています。


また、生成したコードでは名前をつけて保存で終わってたので、閉じるようにしてます。

--<質問>------------------------
・Excel VBAマクロ作って
・エクセルのsheet1のA5セルからA11セルまでをテキストデータとしてクリップボードにコピーする
・windowsアクセサリのメモ帳を開く
・クリップボードの内容を先に開いたメモ帳にテキストデータとして貼り付ける
・メモ帳をcp.batというファイル名でC:\TEST内のファイルを上書きする

--<回答>------------------------
Sub CopyToNotepadAndSaveAsBat()
  Dim dataRange As Range
  Dim clipText As String
  Dim filePath As String

  ' クリップボードにコピーするデータの範囲を指定
  Set dataRange = Sheets("Sheet1").Range("A5:A11")

  ' セル範囲のテキストをクリップボードにコピー
  dataRange.Copy

  ' メモ帳を開く
  Shell "notepad.exe", vbNormalFocus
  ' 少し待つ(メモ帳が開かれるまで時間がかかる場合があるため)
  Application.Wait (Now + TimeValue("0:00:02"))

  ' クリップボードの内容を貼り付け
  SendKeys "^v", True
  ' 少し待つ(貼り付けが完了するまで時間がかかる場合があるため)
  Application.Wait (Now + TimeValue("0:00:02"))

  ' ファイルパスを設定
  filePath = "C:\TEST\cp.bat"

  ' ファイルを上書き保存
  SaveToFile filePath

  MsgBox "マクロが完了しました。", vbInformation
End Sub

Sub SaveToFile(filePath As String)
  ' ファイルが存在する場合は削除
  If Dir(filePath) <> "" Then
    Kill filePath
  End If
  
  ' メモ帳の内容をファイルに保存
  AppActivate "メモ帳"
'  SendKeys "%(fa)", True
  SendKeys "%(fxs)", True
  SendKeys filePath, True
  SendKeys "%(fs)", True
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。

No.3さんのご回答で解決しました。

お礼日時:2024/01/05 12:14

ChatGPTが生成したVBAは、貴方が質問した通りの出来栄えです。


AIはまだ、「行間を読む」所まで進化していませんから、もっと具体的な仕様を提示しないと、思った通りコーディングをしてくれません。
貴方が何を欲しいのかは、この質問文では私にもChatGPT同様に不明です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>この質問文では私にもChatGPT同様に不明です

わかりづらい質問文になっているんですね。


マクロでなく手動でやろうとすれば次のようになります。

エクセルファイル、sheet1のA5からA11にテキストデータが入力されている前提で、
・メモ帳を開く
・エクセルのA5セルからA11セルをctrl+Cでコピーする
・メモ帳にctrl+vでペーストする
・メモ帳をc:\test\cp.batのネーミングで保存(既にcp.batがある場合は上書き保存)するなんですが...
よろしかったら、再度ご回答いただけませんでしょうか?

お礼日時:2024/01/04 20:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報