- ベストアンサー
エクセルデータをメモ帳へ貼り付け - マクロ作成方法とは?
- 仕事で使用するためのマクロを作成する際に、エクセルデータをメモ帳へ貼り付ける方法について知りたいです。具体的には、エクセルデータの一部をコピーしてメモ帳に貼り付け、それを繰り返す手順が分かりません。マクロを組むための理屈も理解したいです。
- エクセルデータをメモ帳に貼り付けるためには、以下の手順を繰り返します。 1. エクセルデータの一部をコピーする 2. メモ帳を起動して貼り付ける 3. メモ帳の内容を保存する 上記の手順を繰り返すことで、エクセルデータの複数の部分をメモ帳に貼り付けることができます。
- マクロを組むためには、まずエクセルのVBA(Visual Basic for Applications)エディタを開きます。エディタ上で各手順に対応するVBAコードを書き、実行することで自動化された作業を行うことができます。具体的なVBAコードは、エクセルデータの範囲指定やメモ帳への貼り付け、保存などの操作に応じて記述します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Sub Macro5() Dim sht As Worksheet Dim cnt, idx As Long Application.ScreenUpdating = False Application.DisplayAlerts = False Set sht = ActiveSheet On Error GoTo end0 For idx = 1 To sht.Range("A65536").End(xlUp).Row Step 20 cnt = cnt + 1 ActiveSheet.Cells(idx, "A").Resize(20, 1).Copy Workbooks.Add ActiveSheet.Paste ActiveWorkbook.SaveAs Filename:="Z:\" & cnt & ".txt", _ FileFormat:=xlText, CreateBackup:=False ActiveWorkbook.Close Next idx end0: Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub 自作のマクロを掲載するならともかく、それをしないで注文ばかりされるのはいかがなものかと…
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
この質問の課題は、質問者には荷が重過ぎるのだと思います。 (1)メモ帳を仲立ちにする方法はメモ帳がVBAのようなものが無いので、貼り付けたり名をつけて保存したりするのが難しい。初心者の思いつきの方法です。SendKeysというもので苦し紛れにできると思うが。 普通オフィス以外のソフトをプログラムで動かそうなんて超ベテラン(プロ)のやることです。 (2)テキストで保存し、そのテキストファイルを20行ずつ読んで、所定の名前をつけたテキストファイルとして書き出す。これを繰り返す。コード自体は簡単な方法もありますが、プログラムの訓練を受けていないと、これも難しいでしょう。 (3)エクセルの20行のセルの値を1行分ずつ読み出して、それの20行分を1つのテキストファイルに書き出すという方法もあります。 (2)では A.シーケンシャルファイルを読むコード B.書き出すコード をWEBで見つけて勉強すること。 C.それに20行ごとに繰り返す制御 (3)では A.セルの20行の値を読むコード B。20行ごとの繰り返しする制御構造 C。付随してファイルのCloseやOpenの仕方 などを1つずつ勉強してから、質問すべきです。
補足
アドバイスありがとうございます。 確かに荷が重いです。。。が、「できません」とは言えないのです。 指示されている方法とは異なったやり方を選択するにしても、 結果は指示されているように出さないといけません。 仕事なので・・・ 私が考えているのは(1)です。 指示されていることを素直に実行しようとすると(1)となり、その他の方法が見つけられないので。 頂いたアドバイスできになったのが(3)です。 こちらは(1)とは違うのでしょうか? 「書き出す」と言うことについてもう少し教えていただけないでしょうか?
- outerlimit
- ベストアンサー率26% (993/3718)
そのExcel表をテキスト形式で保管して、テキストファイルを操作したほうが簡単なのでは
補足
アドバイスありがとうございます。 「テキストファイルを操作」するというのは、手作業で20行ずつ切り分けて保存すると言うことでしょうか?
補足
アドバイスありがとうございます。 こういった場合、自作のマクロを掲載した方がいいのですね。 すみませんでした。 質問では「何百行」としていますが、とりあえずテスト的に60行のデータをメモ帳3つに保存させるために作ったマクロを掲載します。 貼り付けをエクセルの別のセルで試したところ正しくできたので、コピーまでは大丈夫なのだと思っています。 メモ帳も起動し保存まで行くのですが、起動するメモ帳は合計で3つでいいのになぜか9つ起動してしまします。 また、下の状態で実行したところ「2.txt」と「3.txt」の2つしか自動で保存されませんでした。 また、ファイル名と中身は昇順になるはずなのになっていませんでした。 (ファイル名が1つ保存されていないせいでしょうか。) Private Sub Kjtxt() Dim down, choice down = Worksheets("Sheet1").Range("a" & Rows.Count).End(xlUp).Row For choice = 1 To down Step 20 Worksheets("Sheet1").Range("a" & choice & ":" & "a" & choice + 19).Copy Dim i As Integer For i = 1 To 3 Dim kidou1 kidou1 = Shell("notepad.exe", 1) AppActivate ("無題 - メモ帳") CreateObject("wscript.shell").SendKeys "^v" CreateObject("wscript.shell").SendKeys "%{f}{a}" CreateObject("wscript.shell").SendKeys "c:\" & i & ".txt" CreateObject("wscript.shell").SendKeys "%{S}" CreateObject("wscript.shell").SendKeys "%{f}{x}" Next Next End Sub これからアドバイスしていただいたマクロを試してみようと思います。 よろしくお願いします。