質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

2回答

1038閲覧

メモ帳の内容をタイトルと内容に分け別々のファイルにする方法

kanako_313

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

1クリップ

投稿2021/07/18 06:25

○○1.bat aaaaa
○○2.bat bbbbb
○○3.bat ccccc


のように書かれたメモ帳(.txt)を書き出しました。これをそれぞれ分けたいです。例えば○○1.batというバッチファイルを作り、中身をaaaaaとし、同じように○○2.batや○○3.bat以降も作っていきたいです。

VBAやコマンドプロンプトを使ったやり方を考えており、色々調べましたが上手くタイトルと中身を分ける方法が分かりません。メモ帳とは別にExcelファイルで似たような表を作り別々のバッチファイルを作る方法も考えましたが、上手く行きません。

どなたかわかる方いらっしゃいましたらご教示ください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanako_313

2021/07/18 08:02

busyboxというものをインストールまたはダウンロードすればできることを教えていただきました。すごく助かります。 ただ、会社のpcだとインストール、ダウンロードができないものが多く、許可されていないかも知れません。 何らかのインストール、ダウンロードなしで、例えばVBAまたはコマンドプロンプトを使って実行する方法はないでしょうか。 ご存知の方がいらっしゃいましたらご教示いただければ幸いです。
guest

回答2

0

こういうのはawkを使うのが一番簡単です。本格的にやるならMSYS2とかをインストールするのがいいのですが、ここでは一番簡単にお試しができるbusybox版を使ってみます。

  1. まず作業用ディレクトリを作ります
  2. 質問にある内容のテキストファイルを作業用ディレクトリ上に作成します(ここではtest.txtとします)。
  3. 次にawkを使えるようにします。busyboxをダウンロードしてPATHを引いたディレクトリ(よく分からなければとりあえず作業ディレクトリでいい)に置きます。
  4. コマンドラインを開きます([Windows]+[R]キーを押し、「cmd」と入力して、[Enter]キーを押す)。
  5. コマンドライン上でcd 作業ディレクトリと打ち込み、作業ディレクトリに移動します。
  6. 次のように打ち込んでawkに仕事をさせます。
busybox awk '{print $2>$1}' test.txt

これで各行の内容を反映したbatファイルが出来ているはずです。

参考:
windows上でテキストデータいじるならbusyboxを使ってみよう! もうエクセル要らないかもよ - Qiita

投稿2021/07/18 07:17

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanako_313

2021/07/18 07:28

ご回答ありがとうございます。 的確な回答をいただき嬉しいです。 明日確認してみますが、会社の規則でbusyboxをインストール出来ないかもしれないです。 コマンドプロンプトやExcelの表にしてVBAを使うなどでどうにかする方法はないでしょうか。 無理を言って申し訳ありません。ご存知でしたらお手隙の際にご返信いただければ幸いです。
KojiDoi

2021/07/18 07:42

busyboxは「インストール」しなくていいのが利点です。busybox64.exeがUSBメモリとかに入れてあっても構いません。USBメモリがたとえばEドライブだったとしたら、e:busybox awk ...のように呼び出せます。
kanako_313

2021/07/18 07:59

ありがとうございます。調べてみました。 インストールだけでなく、ダウンロードも制限されているので、出来ないかもしれませんが、明日確認してみます! お付き合い下さりありがとうございました!
guest

0

Excelが使えるならこんな感じでどうでしょうか。

AB
1○○1.bataaaaa
2○○2.batbbbbb
3○○3.batccccc

VBA

1Sub sample() 2 Dim ws As Worksheet, i, fn, txt 3 Set ws = ActiveSheet 4 For i = 1 To ws.UsedRange.Rows.Count 5 fn = ws.Cells(i, 1).Value 6 txt = ws.Cells(i, 2).Value 7 SaveText txt, fn 8 Next 9End Sub 10 11Function SaveText(txt, fn) 12 With CreateObject("Scripting.FileSystemObject") 13 If Not .FileExists(fn) Then .CreateTextFile fn 14 With .OpenTextFile(fn, 2) 15 .WriteLine txt 16 .Close 17 End With 18 End With 19End Function

投稿2021/07/18 23:05

jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanako_313

2021/07/19 03:28

ありがとうございます!実際に実行出来ました! しかしこちらの都合でテキストのセルを3つに分けようと思いjinojiさんのコードを少し変えてみたのですが、「中断モードでコードを実行することはできません」と出てきてしまい。上手く行きません。解決方法はご存知でしょうか。 以下が実際に変えてみたものです。 Sub 新ファイルを大量に作成するマクロ() Dim ws As Worksheet, i, fn, txt1, txt2, txt3 Set ws = ActiveSheet For i = 1 To ws.UsedRange.Rows.Count fn = ws.Cells(i, 1).Value txt1 = ws.Cells(i, 2).Value txt2 = ws.Cells(i, 3).Value txt3 = ws.Cells(i, 4).Value SaveText txt1, txt2, txt3, fn Next End Sub Function SaveText(txt1, txt2, txt3, fn) With CreateObject("Scripting.FileSystemObject") If Not .FileExists(fn) Then .CreateTextFile fn With .OpenTextFile(fn, 2) With .OpenTextFile(fn, 3) With .OpenTextFile(fn, 4) .WriteLine txt .Close End With End With End Function もちろん既に教えていただいたことで十分ありがたいので、お忙しいようでしたら気にしないでください。
kanako_313

2021/07/19 03:30

.WriteLine txtを.WriteLine txt1, txt2, txt3に変えてみてもダメでした
jinoji

2021/07/19 03:45

テキストのセルが3つなら、たとえば txt = ws.Cells(i, 2).Value のところを、 txt = ws.Cells(i, 2).Value & ws.Cells(i, 3).Value & ws.Cells(i, 4).Value に変えたらいけるように思いますが。
jinoji

2021/07/19 03:49

あるいは、改行でつなげたいなら txt = WorksheetFunction.TextJoin(vbLf, True, ws.Range(ws.Cells(i, 2), ws.Cells(i, ws.Columns.Count).End(xlToLeft))) みたいな感じでいけそうな気がします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問