こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

EXCEL VBAでファイル名を変更してコピー

決められたフォルダーの中にある決められた名称のファイル(仮にc\document\aaa.xls)を、決められたフォルダーにコピー元のファイル名+毎回指定した数字を付加したファイル名(仮に\document\aaa9999.xls)としてコピーする方法をエクセルのVBAで実現する方法を教えてください。指定する数字の9999はプログラム起動後にダイアログBOXで指定できればベストですが、難しければ指定のセルに毎回入力でもかまいません。

投稿日時 - 2004-08-20 21:14:47

QNo.969476

暇なときに回答ください

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

下記のような感じで、



Const STR_FILE_NAME_1 As String = "a:\document\aaa.xls"
Const STR_FILE_NAME_2_1 As String = "a:\document\aaa"
Const STR_FILE_NAME_2_2 As String = ".xls"

Const STR_MSG As String = "数字を入力して下さい。"


Dim strFileNum As String
Dim strFileName_2 As String



strFileNum = InputBox$(STR_MSG)

If Len(Trim$(strFileNum)) = O Then Exit Sub

strFileName_2 = STR_FILE_NAME_2_1 & Trim$(strFileNum) & STR_FILE_NAME_2_2
Call FileCopy(STR_FILE_NAME_1, strFileName_2)



実際には、ダイアログBOXの入力値の数字チェックや使用不可文字チェック(\など)がさらに必要かと思います。

投稿日時 - 2004-08-21 01:39:34

お礼

完璧にほしいものが得られました。本当にありがとうございます。記述を見るとなんとなくわかるのですが、自分で作るとなるとまだまだスキル不足です。今回のものを参考にさせて頂き少しでも自分で作れるように勉強します。

投稿日時 - 2004-08-21 09:32:36

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

パスを分割する部分をどう処理するかですね。
Excel2000で確認しています、ご参考に。

Sub Test()
Dim fName, newName As String, fs As Object
 On Error GoTo ER:
 fName = Application.GetOpenFilename("ExcelFile(*.xls), *.xls")
 If fName = False Then Exit Sub
 Set fs = CreateObject("Scripting.FileSystemObject")
 newName = Application.InputBox("Add?", "Add", "0001", Type:=2)
 newName = fs.GetParentFolderName(fName) & "\" & _
      fs.GetBaseName(fName) & newName & "." & _
      fs.GetExtensionName(fName)
 MsgBox "元:" & fName & vbCrLf & _
     "新:" & newName
ER:
 Set fs = Nothing
End Sub

投稿日時 - 2004-08-20 23:51:54

ANo.2

ファイル名が
c\document\aaa.xls(正しくはc:\documents\aaa.xls?)
のブックを読みこんで、ブックの名前をc:\documents\aaa9999.xlsで保存し、必要あればそのブックで作業する。
それをVBAで書けば良いのではないですか。
名前を変えて保存するのはブックのコピーですよね。
そのやり方では、XXだからだめと言うことであれば、XXを指摘し補足して見てください。

投稿日時 - 2004-08-20 21:33:40

補足

早速の回答ありがとうございます。
実は大量のデータを一括で処理したいので、読み込むことなくコピーしたいです。初心者なのでこんなことできればというアイデアはあるのですがなかなか作れないもので。全部作っていただければすごくありがたいのですが、虫がよすぎると思われるならもう少しヒントをいただければうれしいです。

投稿日時 - 2004-08-20 21:43:01

ANo.1

http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_090.html

ファイルコピーのサンプルコード。

参考URL:http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_090.html

投稿日時 - 2004-08-20 21:27:45

お礼

ありがとうございました。
今回の問題だけでなくいろいろ参考になりそうです。

投稿日時 - 2004-08-21 00:06:00

あなたにオススメの質問