[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『コピーファイル名にセルの値』(でこ)
基準となるファイルをコピーして100人分のファイルを作成したいと思い、 検索した結果、こちらを参考にさせて頂こうと思いました。
[[20100125092426]] 『セルの値をブック名、80人分』(ひろ)
(すみません、リンクの貼り方がわかりません…) コピーしたファイルの各Sheet1のE3セルにファイル名にしたのと同じ値を 転記したいので、下記のように変更しました。 実際の保存先は下記とは違いますので、そこは修正して試しました。 結果、Copy masterPath, dstpathのところでコンパイルエラー Subまたは functionが定義されていませんというエラーになりました。
新規作成したファイルのSheet1のA1セルからA100セルにファイル名にしたい値を 入力して作業ファイルとしてコピー先フォルダに保存、このファイルにマクロを 作成しているのですが、これであっているでしょうか? またエラーに対してどこを修正すればいいのか教えて下さい。 よろしくお願いします。
Sub BookCopy() Const masterPath = "C:\Data\Master.xls" '★コピー元ファイルを指定 Const dataFolder = "C:\Data\" '★コピー先フォルダを指定
For i = 1 To 100 dstpath = dataFolder & Cells(i, "A").Value & ".xls" Copy masterPath, dstpath With Workbooks.Open(dstpath) .Worksheets(1).Range("E3") = ThisWorkbook.Worksheets(1).Cells(i, "A").Value .Save .Close End With Next End Sub
Excel2000
こんばんは FileCopy masterPath, dstpath とするとどうですか? (ウッシ)
ウッシ様へ 下記の箇所が黄色になってデバッグします。 FileCopy masterPath, dstpath なんとかなりませんか よろしくご指導ください。 (かんな)
こんにちは エラーメッセージに変化は無いですか? (ウッシ)
CreateObject("Scripting.FileSystemObject").CopyFile _ "コピー元ファイルフルパス", "コピー先ファイルフルパス", True
ヘルプより
FileCopy ステートメント ファイルをコピーします。
構文 FileCopy source, destination FileCopy ステートメントの構文は、次の名前付き引数から構成されます。
指定項目 内容 source 必ず指定します。コピーするファイル名を示す文字列式を指定します。 フォルダ名およびドライブ名を含めて指定できます。 destination 必ず指定します。コピー後のファイル名を示す文字列式を指定します。 フォルダ名およびドライブ名を含めて指定できます。
解説 ↓これじゃない? 既に開いているファイルに対して、FileCopy ステートメントを実行しようとすると、エラーが発生します。 BJ
こんにちは 開いてるファイルならばエラーメッセージも変わってるはずですね。 "C:\Data\Master.xls" が開かれてる・・・このマクロが設定されたブックなら Sub BookCopy() Const masterPath = "C:\Data\Master.xls" '★コピー元ファイルを指定 Const dataFolder = "C:\Data\" '★コピー先フォルダを指定
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly For i = 1 To 100 dstpath = dataFolder & Cells(i, "A").Value & ".xls" FileCopy masterPath, dstpath DoEvents With Workbooks.Open(dstpath) .Worksheets(1).Range("E3") = ThisWorkbook.Worksheets(1).Cells(i, "A").Value .Save .Close End With Next ThisWorkbook.ChangeFileAccess Mode:=xlReadWrite End Sub とすればいいかと思います。 (ウッシ)
今度は下記の箇所が黄色になってデバッグします。 ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly よろしくご指導お願いします。
こんにちは "C:\Data\Master.xls" が開かれてる・・・このマクロが設定されたブックですか?
原因不明なのでなんとなく、ブックが破損している感じですね。 このコードは普通に標準モジュールに書いてあるんですよね? 参照設定に参照不可の項目とか無いですよね?
Master.xls がマクロブックと仮定して、Master.xlsを別の場所に退避しておいてから、 新規ブックにシートの内容をコピーして、マクロもモジュール挿入してコピペして Master.xls という名前で 保存してから、マクロ実行してみてもらえますか?
(ウッシ)
お邪魔します。 見てて良くわからないのですが、もしかしたらこんな事なのでしょうか?
Sub test() Const dataFolder = "D:\test\" '★コピー先フォルダを指定 Dim i As Long, tbl As Variant
tbl = ActiveSheet.Range("A1").CurrentRegion.Value For i = 1 To UBound(tbl) ThisWorkbook.Worksheets("Sheet1").Range("E3").Value = tbl(i, 1) ThisWorkbook.SaveCopyAs dataFolder & tbl(i, 1) & ".xls" Next i ThisWorkbook.Worksheets("Sheet1").Range("E3").ClearContents End Sub
(momo)
こんばんは。 最初に質問したでこです。 私の方はウッシさんの回答でうまくいきました。 ありがとうございました。 もう一つ質問なのですが、ファイル数が月により変動する可能性があるのですが、 毎回For i = 1 To 100のところの数字を変更する以外にどうしたらいいのでしょうか? momoさんのコードが参考になるかもと思ったのですが、自分ではうまく修正 できませんでした。
(でこ)
わたしのコードでは tbl = ActiveSheet.Range("A1").CurrentRegion.Value のように、最初にA1セルから続けてデータが入っているセル範囲のデータを取得しています。
そして For i = 1 To UBound(tbl) のように1から取得したA1セルからの連続範囲の最後まで。 としていますので、同じように変更してから ウッシさんのコードですと Cells(i, "A").Value と ThisWorkbook.Worksheets(1).Cells(i, "A").Value の部分を tbl(i,1) に変更すれば出来ると思います。 (momo)
momo様
試してみたらうまくいきました。ありがとうございましたー。 momoさんのコードも今後の参考にさせて頂きます。
(でこ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.