Excelで、セル範囲にある文字列をファイル名として使う。
この記事は自分用の覚え書きです。
エクセルで、あるファイルの連続したセルに入っている文字列をそれぞれファイル名にして、別のファイルを別名保存する。
■例:名簿ファイルのA列に入っている氏名をファイル名に使って、申告書のファイルを別名保存する。
Sub 名簿ファイルの氏名を申告書のファイル名にする()
Dim shimei As Variant
Dim FN1 As Variant
Dim FN2 As Variant
Range("A1").Select
'セルA1を基点にして、列方向にデータが存在する範囲を選択
Selection.CurrentRegion.Select
'選択された範囲にあるセルの値を代入
shimei = ActiveWindow.RangeSelection.Value
'To の右の値は、A列のセルの数(ファイル名にする氏名の数)と合わせる。
'100人なら100になる。
FN1 = "1"
For FN2 = 1 To 100
Workbooks.Open Filename:=ThisWorkbook.Path & "\申告書.xls"
'変数 shimei に代入された文字列を、
'変数 shimei の1列目(A列)の2行目(セルA2の値)から抽出していき、
'別名保存のファイル名として使う。
ActiveWorkbook.SaveAs Filename:= _
ThisWorkbook.Path & "\" & shimei(FN2, FN1) & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWindow.Close
Next FN2
End Sub
■制約
ファイル名の元になる名簿ファイルと、申告書ファイルは、同じフォルダへ入れておく。
名簿の氏名はセルA1から列方向に入力する。
名簿の人数や、申込書.xlsのファイル名が変わったら、マクロの中も合わせて変える。
名簿ファイルで、ファイル名の元になる氏名が入力されているシートを開いてから実行する。
・運用テストの結果
Windows XP Pro SP2。メモリ1GB。Genuine Intel(R) CPU U1300 @ 1.06GHz のPCで、1500人で約35分。申告書のサイズは118KB。
・評価
マクロの使い勝手は最高ではないが、ファイル保存にかかる時間や手間を削減できた。チーム内で使うには、この程度でよい。
Excel 2002、Excel 2003
Windows XP、 Windows Vista Business
| 固定リンク | コメント (0) | トラックバック (0)


最近のコメント