
仕事で使うためのマクロを作成しているところです。
1.エクセルで作成したデータ(A列に何百行も入っています。1行目から最終行まで空白セルはありません)を上から20行コピー
2.メモ帳を起動して貼り付け
3.Cドライブの直下に『1.txt』として保存し、メモ帳を閉じる
4.1.でコピーした次の行から20行コピー
5.メモ帳を起動して貼り付け
6.Cドライブの直下に『2.txt』として保存
・・・と言うように繰り返していきたいのですがどうしたらいいのかわかりません。
色々調べると一つ一つの工程のマクロは見つけられるのですが、
理屈がわからない状態なので「こんな感じかな?」とそれぞれをつなげてもさっぱり動いてくれません。
どなたか上記の一連のマクロのやり方を教えては頂けないでしょうか?
また、できましたらどういう理由からそうなるのかも教えていただきたいと思います。
(仕事上、期限があるのでそう時間はないのですが、
勉強のためにその理屈から自力で作成したものと頂いた回答の答え合わせができたらなぁ。と考えております。)
わがままな要望で大変申し訳ありませんが、よろしくお願いします。
No.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
自作のマクロを掲載するならともかく、それをしないで注文ばかりされるのはいかがなものかと…
この回答への補足
アドバイスありがとうございます。
こういった場合、自作のマクロを掲載した方がいいのですね。
すみませんでした。
質問では「何百行」としていますが、とりあえずテスト的に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
これからアドバイスしていただいたマクロを試してみようと思います。
よろしくお願いします。
No.2
- 回答日時:
この質問の課題は、質問者には荷が重過ぎるのだと思います。
(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)とは違うのでしょうか?
「書き出す」と言うことについてもう少し教えていただけないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教科書などに初めから書いてあ...
-
Excel:任意の列だけCSV形式で...
-
書いたり消したりできるラミネ...
-
両面印刷するとき裏表とも罫線...
-
VBAでメモ帳にコピペをしたいの...
-
ぺたろうの代わりが欲しい パソ...
-
CDやDVDに書くマジックペン
-
日頃、感じる不便なものってあ...
-
消しゴムがくっついて、跡が取...
-
プロジェクタだと動画が映らない
-
ラミネートに記入するペンについて
-
水泳帽の学年書き直し
-
メモ帳でタブ幅の設定はできる...
-
Wordで 文字の一部にモザイクを...
-
印刷の際に浮き出ない色につい...
-
日本語の言い回しで「後で見る...
-
くっついた消しゴムかすをとる...
-
ノートPCにデスクトップPCをつ...
-
「覚書」、「メモ」、「備忘録...
-
テプラのテープカートリッジを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教科書などに初めから書いてあ...
-
CDやDVDに書くマジックペン
-
Excel:任意の列だけCSV形式で...
-
書いたり消したりできるラミネ...
-
消しゴムがくっついて、跡が取...
-
「覚書」、「メモ」、「備忘録...
-
大学を平日一日休んで運転免許...
-
VBAでメモ帳にコピペをしたいの...
-
日頃、感じる不便なものってあ...
-
Windows10で、拡張子が.pyのフ...
-
ぺたろうの代わりが欲しい パソ...
-
パソコン買い替え時のAcce...
-
両面印刷するとき裏表とも罫線...
-
職場でもらったメモ、付箋をそ...
-
Wordで 文字の一部にモザイクを...
-
水泳帽の学年書き直し
-
テプラのテープカートリッジを...
-
分子量とマーカー移動度の片対...
-
色鉛筆の箱の修理について
-
メモ帳でタブ幅の設定はできる...
おすすめ情報