• 締切済み

VBAで、テキストファイルの編集

プログラムの初心者です。 困ってます。お教え下さい。 VBA上の制御で、あるテキストファイルのデータをコピーして、 別のテキストファイルに貼り付けして、別保存したいのですが、 分かりません。 テキストファイルを開くだけでしたらできたのですが、 それからが・・・・ Call Shell("C:\WINNT\system32\notepad.exe c:\text1.txt") すいません、お教え下さい。

  • ynaka
  • お礼率16% (3/18)

みんなの回答

回答No.4

どのような処理を最終的にご希望かわかりませんが、 以前私が作ったマクロを紹介します。 http://wordvba.cocolog-nifty.com/blog/2009/06/post-dc88.html こちらのブログに掲載してあるのですが、フォルダ内の 全ての(複数の)ワード文書をひとつのワード文書に コピペするマクロです。 ブログの説明にも記載していますが、プログラム文を 変更すれば、テキストファイルにも対応します。 もしかしたら参考になるかと思いました。 テンプレートをダウンロードすれば、コードはそのまま 読めますので、ご参考まで。

参考URL:
http://wordvba.cocolog-nifty.com/blog/
  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.3

1~10のファイルを一つのファイルにしたいということですか? であれば 関数として Function AppendFile(InputFile as string,Fp as Integer) as Integer dim Fp2 as Integer Fp2 = freefile OPEN InputFile for Input As fp2 Do While Not EOF(fp2) Line Input #fp2, TextLine1 Print #fp, TextLine1 Loop close fp2 End Function を作成して 呼び出し側 sub Main() dim Fp as Integer dim rtn as integer Fp = freefile OPEN "最終ファイル" for Output As fp rtn = AppendFile("file1.txt",fp) rtn = AppendFile("file2.txt",fp) rtn = AppendFile("file3.txt",fp) rtn = AppendFile("file4.txt",fp) ・ ・ ・ close fp end Sub とするのかな DOSのコマンドを呼び出しするなら shell("COPY FILE1.TXT+FILE2.TXT+FILE3.TXT 結合ファイル名")

  • yanmaa
  • ベストアンサー率45% (207/457)
回答No.2

vbaの関数であればOPEN文、PRINT文、WRITE文、INPUT文、LINE INPUT文 この程度を理解すれば対応できると思います。 ヘルプを調べてみればよいでしょう。

ynaka
質問者

補足

ご指摘の通りしてみました。 しかし、この方法だと複数のテキストを一つに まとめれないんですが、できるのでしょうか? ちなみに、こんな感じで作ってみました。 Open "c:\text.txt" For Output As #2 Open "c:\text1.txt" For Input As #1 Do While Not EOF(1) Line Input #1, TextLine1 Print #2, TextLine1 Loop ' Close #1 Open "c:\text2.txt" For Output As #3 Do While Not EOF(2) Line Input #3, TextLine2 Print #2, TextLine2 Loop ' Close #2 Close #3

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

何のVBAをお使いでしょうか? 単純に内容を別ファイルにするなら「COPY 元ファイル 新ファイル」で コピーできそうに思います。 開いて内容を編集して、という場合は別処理が必要ですが Excel、Word、ACCESSなど、利用可能なオブジェクトが異なります。

関連するQ&A

  • テキストファイルの右クリックメニューに印刷を追加す

    win7 64bitを使っています。 pdfファイルを右クリックすると印刷という項目があるのですが テキストファイルではこれがなぜかありません。 これを追加する方法を教えてください。 印刷ジョブにD&Dにテキストファイルを入れてみても このファイルを印刷できません。正しいアプリケーションからファイルを開いてから、印刷してください。 というエラーがでて印刷できません。 レジストリを確認してみると、 HKEY_CLASSES_ROOT\txtfile\shell\print というキーには %SystemRoot%\system32\NOTEPAD.EXE /p %1 が入っています。 system32をsystemに書き換えてみましたがうまくいきませんでした。 いまテキストファイルは秀丸エディタに関連付けられているため、 HKEY_CLASSES_ROOT\hidemaru.txt を確認してみましたが "C:\Program Files (x86)\Hidemaru\Hidemaru.exe" /p %1 が入っています。 印刷できるかは別としてprintというキーは存在するため 右クリックメニューに印刷という項目は出てきても良いと思うのですが なぜうまくいかないのでしょうか?

  • VBAでコマンドプロンプトを呼び出す記述で

    やりたいことはVBAからコマンドプロンプトにてBCP.EXEを呼び出してSQL文を実行することです。 コマンドプロンプトで直接打つと以下のようなコマンドになります。SQL文は長いので省略しました。 ************************* "c:\WINNT\system32\cmd.exe /k" "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\bcp.exe " "SQL文" ************************* これをVBAで以下のように記述しました。 ////////////////////////////////////////////////// stAppName = "c:\WINNT\system32\cmd.exe /k" stAppName = stAppName & "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\bcp.exe " stAppName = stAppName & "SQL文" Call Shell(stAppName, 1) ///////////////////////////////////////////////// 上のような記述だとコマンドプロンプトでは パスのダブクォテーションがなくなり ************************* c:\WINNT\system32\cmd.exe /k C:\Program Files\Microsoft SQL Server\80\Tools\Binn\bcp.exe ”SQL文” ************************* のように実行されBCP.exeのパスが通らず以下のエラーになります。 ///////////////////////////////////////////////// 内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 ///////////////////////////////////////////////// どなたかVBAでコマンドのパスにダブルクォテーションをつける方法を教えてください。

  • VBAのSHELLを用いてEXEファイルを起動したものの、微妙にうまくいかない

    エクセルのVBAのshellを用いて、exeファイルを起動させてました。 exeファイルはCを用いたシンプルなもので、テキストファイルを作成します。(ソースは下記参照) C:\testのディレクトリにエクセルファイルを作成し、 Shell "C:\test\test.exe" を実行させたところ、ファイルはC:\testのディレクトリに出来ずに、マイドキュメントに出来ました。 このexeファイルを直接ダブルクリックしたときは、C:\testのディレクトリにテキストファイルが作成されます。 ダブルクリックしたときと同じように、C:\testのディレクトリにテキストファイルを作成する方法があれが教えてください。 よろしくおねがいします。 (ソース、hello.txtというファイルをつくり、hello!を書く) main( ) { FILE *fp; /* ファイルポインタ */ fp = fopen( "hello.txt", "w"); fprintf(fp,"hello!\n"); fclose(fp); return 0; }

  • VBAで他のプログラムを動かす

    VBAで他のプログラムを動かす時、 shellがあると思うのですが、これはexeファイルしか指定できないのですか? 具体的には指定したtxtファイルをメモ帳等で実行したいのです。 x=shell("目的のプログラム.txt",1) とやってもエラーが起こってしまいます。 どのようにしたらいいのでしょうか?

  • VBからファイル・アプリケーションの起動はどうやれば?

    VB6にて、簡単なプログラムを作っています。(個人的にです) コマンドボタンを押すと、保存してあるテキストファイル (例:"C:\a.txt")や、単純にノートパッドなどのアプ リケーション(C:\WINNT\NOTEPAD.exe)がオープンする ようにしたいのですけど、本やネットで検索してもイマイ チわからないです。 どうやればよろしいのでしょうか? 環境はWin2000ProのVB6(SP5)です。 よろしくお願いします。

  • VBAのShellの同期的実行

    ExcelVBAについての質問です。コマンドプロンプトで実行するプログラムをCで作成しました(これをXXX.exeとします)。このプログラムは計算が終了した後で、その結果のファイルを作成します(これをYYY.txtとします)。このプログラムを操作し、結果を表にして出力するために、ExcelVBAでshellを使って以下のようなプログラムを作成しました。   shell("XXX.exe")   call Output Outputでは、XXX.exeが作成したファイルYYY.txtからデータを読み込んでシートに結果を出力するのですが、うまくファイルを読み込みません。多分、shellにより実行したXXX.exeが終了する前にOutputが呼ばれているのだと思うのですが、もしそうだとしたらどのような解決方法があるのでしょうか。よろしくお願いします。 WinXp、Excel2000です

  • ACCESS2003 VBAテキスト編集

    テキストファイルに必要な部分だけ、別テキストに吐き出したいのですが、 元テキストの例 00,05,"0002027600002010102703154301253645 0001" 01,00,"STATUS-C " 02,00,"* あああああ 15時44分 *" 02,00,"* ABCDE 15時44分 *" 02,00,"* 123687あああ 15時51分 *" 上記のような、テキストファイルより、" "の間の内容を別テキストに 吐き出したいのですが、VBAでどのように記述したら良いですか? 開始の"は7桁目と決まっていますが、終わりの"は文字の最後に付くので 桁数は決まっていません。 別テキストに吐き出すときは、" "も取り除いて落としたいです。 簡単な説明で申し訳ありませんが、ACCESS2003 VBAのコーディングを 教えてください。

  • VBAでEXEファイルを動かす方法について

    エクセルのVBAをつかってC++で作ったexeファイルを起動させるプログラムを書きたいと思いますが、うまくいきません。 プログラムは下記です。 Sub Macro1() Shell ("C:\test.exe") End Sub エラーは出ないのですが、計算をしません。 ・VBEの参照設定のmicrosft scripting runtimeはクリックいれてます。 ・test.exe自体はクリックすると起動して計算します。 もし、対応策をご存知なら教えていただければ助かります。 よろしくお願いします。

  • テキストファイルとして開くVBA

    フォルダC:\Users\USER\Desktop\あいう において このダイアログを開いて そのなかのファイル(A.xml)を txtファイルとして開いて その名前を テキスト.txt として 同名で保存したいのですが Dim FileName As Variant Dim NewFile As TextFile FileName = Application.GetOpenFilename() Set NewFile = TextFile.Open(FileName) NewFile.SaveAs "テキスト.txt" Activetxtfile.SaveAs FileName:="C:\Users\PC\Desktop\あいう\テキスト.txt", FileFormat:=TextFile どうも違うようです 御教示ください

  • VBA Shell

    VBA のコマンドボタンで他のソフトを起動したいのですが Private Sub CommandButton1_Click() Shell "C:\Windows\Notepad.exe", 1 End Sub でノートパットは起動しますが マイドキュメントに置いてある XX.EXEを起動したくて Private Sub CommandButton1_Click() Shell "C:\Users\X\Documents\XX.exe", 1 End Sub としても起動しません この方法で マイドキュメントに置いてある XX.EXEを起動することは出来ないのでしょうか

専門家に質問してみよう