• ベストアンサー

アクセス VBA ファイル操作

ノートパッドなどテキストエディタで開くことができる、拡張子がtxtではないファイルがあります。 そのファイルをテキストエディタで開いて、名前を変えて、テキストファイルとして保存したいのです が、どのようなコードになりますでしょうか? 下記で開くのですが、 Shell "NOTEPAD C:\test\sampl\abc.ini" その後、 SaveAs FileName:="C:\test\temp\xyz.txt", のように処理しようと思ったのですが、上手くいきません。 お手数ですがご教示ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

ファイルの名前を変更するだけならテキストエディタで開く必要はありません。また、テキストエディタで開いたのなら、テキストエディタから名前をつけて保存できると思います。 VBA からファイルの名前を変更するには Name ステートメントを使います Name 古い名前 as 新しい名前 で変更できると思います。 例: Name "C:\test\sampl\abc.ini" as "C:\test\temp\xyz.txt"

nonboo
質問者

お礼

速やかなご回答ありがとうございます。あまりにもあっさり上手くいった ので少々驚きました。

関連するQ&A

  • テキストファイルとして開く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 どうも違うようです 御教示ください

  • Vistaの検索結果をフルパスで並べ替える方法

    たとえば、Cドライブに「filename.txt」が3個あるとします。  c:\abc\01\filename.txt  c:\abc\02\filename.txt  c:\xyz\01\filename.txt これを検索して、フォルダで並べ替えると、  filename.txt  01(c:\abc\)  filename.txt  01(c:\xyz\)  filename.txt  02(c:\abc\) になってしまいます。 これをフルパスで並べ替える方法はないでしょうか。  filename.txt  01(c:\abc\)  filename.txt  02(c:\abc\)  filename.txt  01(c:\xyz\) どなたかお詳しい方がいらっしゃればお教えください。 よろしくお願いいたします。

  • テキストファイルを開きたいです。

    まだC言語を勉強し始めて4ヶ月です。宜しくお願い致します。 cygwinをWindowsに入れて作成しています。 テキストファイルを画面上に開きたいのですが、system( )以外にありますでしょうか? system("notepad c:/test/test.txt"); (¥では上手くいかず、↑なら開けました) しかし、上記だと特定の1つのファイルしか開けないので、困っています。 例えば、名前、年齢を入力させて、テキストファイルを名前.txtで作成し、 作成直後に確認のため、名前.txtを開くといった事をしたいです。 namefile[128]といった文字列に"notepad c:/test/test.txt"を入れて、 system(namefile)としたところ、 シェルで認識できませんといった内容が表示されてできませんでした。 (やり方が悪いとは思いますが・・) これができれば、名前をからめてアドレスを文字列にできるかなと・・(泣)。 何か案があれば教えて下さい。 環境:WindowsXP     cygwinにてコンパイル(gcc)     sakuraエディタにて作成

  • 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; }

  • バッチファイル 文字列操作のやり方

    お世話になります。 バッチファイルのコマンドについてですが、 for文の中で 一番下の階層のファイル名の先頭5バイトが "abcde"のものだけ処理対象にしたいと考えています。 例えば、 C:\tempに以下のファイルがあったら C:\temp\abcdefg.txt    ・・・(1) C:\temp\xxxxxxx.txt    ・・・(2) C:\temp\abcde.txt    ・・・(3) C:\temp\abc.txt    ・・・(4) C:\temp\abcdezzzz.txt    ・・・(5) (1)、(3)、(5)だけを処理させたいと考えています。 実装方法として、以下を考えましたがうまくいきません。 dir /s /b /a-d C\Temp > file.txt for /f "delims=" %%F in (file.txt) do ( set A=%%~nF% if "%%A:~0,5%"=="abcde" ( <処理コマンド> ) ) おそらくfor文の中で何個も命令を記述できないということと、 パラメータ修飾子の指定が間違っているからだと思われますが、 うまくできない理由を知りたいです。 よろしくお願いいたします。

  • エクセルマクロで同じフォルダ内のテキストファイルをメモ帳で開く方法

    「マクロを記述したエクセルファイルと同じフォルダにある、 特定のファイル abc.txt を、メモ帳で開く」ということをしたいのですが、マクロの記述をご教授下さい。 フォルダ名を固定すると、 Shell "notepad C:\--\abc.txt", vbNormalFocus という形でできたのですが、 フォルダの名前は、固定ではなく、変わります。 ですので、フォルダ名が含まれると都合が悪くなってしまうんです。 エクセル2000、WINDOWS XP を利用しています。 どうぞよろしくお願いいたします。

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

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

  • EXCEL VBAでカンマ区切りテキストファイルに変換する方法

    EXCELで作成したシートをVBAでカンマ区切りテキストファイル(CSVファイルではなく)に変換する方法を教えてください 下記のプログラムではテキストファイルに変換されますが、カンマ区切りになりませんでした。 Sub Samp() ActiveWorkbook.SaveAs Filename:="C:\WINDOWS\aa.txt", FileFormat _ :=xlText, CreateBackup:=False End Sub

  • 日付順にテキストを開いて書き込むエクセルマクロ

    あるフォルダの中に「abc#1xyz_201308.txt」という形のテキストファイルがあり、 ボタンを押すと、直近1年分のファイルに対して中身のデータをシート3に書き込むような マクロを作りたいのですが、直近1年分のものに対して所定の操作を行うやり方が分かりません 例として、「C:\Users\Owner\Documents」に「abc#1xyz_201308.txt」の形のファイルが 1年以上分ある場合で教えていただけますか? (テキストは日付以外は同じ名前、つまりabc#1xyz_201307.txtやabc#1xyz_201306.txtが存在し それ以外の名前のものはこのフォルダにはありません。またフォルダ内には順番通り入っていませんが シートに書き込むのは古いものから順にしたいです)

  • バッチファイル 現在のフォルダ名をファイル名に置き換える

    こんにちは。超初心者なのですが教えてください。 ある複数フォルダに格納されている.txtファイルを、現在の フォルダ名を取得して、別フォルダにリネームして 格納するバッチファイルを作成したいと考えています。 for文を繰り返し使わなければいけないことはわかっているのですが、それをどう表現していいのか全然わかりません。 例えば、 データ取得元として以下のファイルがあったら C:\temp\20100101\data1.txt C:\temp\20100101\data2.txt C:\temp\20100101\data3.txt C:\temp\20100102\data1.txt C:\temp\20100102\data2.txt C:\temp\20100103\data1.txt C:\temp\20100103\data2.txt これを別フォルダに、現在のフォルダ名をファイル名にくっつけて 以下のように一つのフォルダに纏めて格納したいと思っています。 ファイルの中身はそのままコピーしたいので、どこかでcopyコマンド を使うかもしれないです。 C:\test\data1_20100101.txt C:\test\data2_20100101.txt C:\test\data3_20100101.txt C:\test\data1_20100102.txt C:\test\data2_20100102.txt C:\test\data1_20100103.txt C:\test\data2_20100103.txt 実装方法として以下までは考えましたが、これ以上は無理そうです。 rem set A=C:\temp rem set B=C:\test for %%A in (C:\temp\) do ( if not "%%A"=="" ( pushd "%%A" for /d %%B in (*) do ( if not "%%B"=="" ( pushd "%%B" for /d %%C in (*) do ( if not "%%C"=="" ( pushd "%%C" ) ) ) ) popd? ) ) 申し訳ありませんが、お助け願います。

専門家に質問してみよう