[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『複数のファイルに名前をつける』(にたい)
こんにちは。 VBA初心者で初めて質問書込みさせていただきます。
OSはWinXp、エクセルは2007を使用しています。早速ですが質問の内容を以下に記載いたします。
質問:ファイル(ブック)が1000個あるのですが、そのファイルそれぞれに名前をつけたいと考えています。その各々のファイルのsheet1のA1、B1、C1のセルにはそれぞれ
【A1は番号、B1は名前、C1は日付】が入力されています。
ファイル名としてA1B1C1を結合したもの(5314にたい2009/5/1という感じの名前をイメージしています)を作成したいと考えているのですが、
ファイル数が多いので出来るだけ多くの工程を自動化したいと考えております。
VBA、マクロについてはまだ3ヶ月程度しか触れておらず、どの部分まで自動化できるかもわからないのですが、皆様のお知恵をお借りできればと思います。よろしくご教授お願いします。
FileSystemObject を使えば可能だと思います。 なお、ファイル名にはスラッシュが使えません。 (ROUGE)
=CONCATENATE(A1,B1,TEXT(C1,"yyyy年m月d日"))
とすれば目的には達するのですが、この式をVBAでの式に反映させることができていないのも悩んでいるところです。
FileSystemObjectを調べてみます。
文字列の連結には「&」が使えます。 また、TEXT関数に対応するVBAでの関数はFORMAT関数となります。 (独覚)
始めは&でしていたのですが、年月日だけきちんと表示してくれなかったので(2009年1月5日が39818と表示されたので)苦肉の策でこのようにしました。
FORMAT関数ですね。一度試してみます。(にたい)
こんな感じになるのかな?
検証していないので、参考までに。(ROUGE)
Sub test()
Dim f, txt As String, fn As String
Const myPath As String = "C:\test\"
With CreateObject("Scripting.FileSystemObject")
For Each f In .GetFolder(myPath).Files
fn = "'" & .GetFile(f.Path).ParentFolder & "\[" & f.Name & "]Sheet1'!R1C"
txt = ExecuteExcel4Macro(fn & "1") & ExecuteExcel4Macro(fn & "2") & Format(ExecuteExcel4Macro(fn & "3"), "yyyy年m月d日")
f.Name = txt & "." & .GetExtensionName(f.Path)
Next
End With
End Sub
早速組み込んで実行してみましたところ、
コンパイルエラーとなりtxt=の所のExecute4Macroが反転されておりました。
お時間が大丈夫な時にご検証いただければ幸いです(にたい)
失礼しました。 Execute4Macro ⇒ ExecuteExcel4Macro に3箇所修正してください。 (ROUGE)#コードを直接修正 2010/1/13 17:43頃
同じく参考まで Name Statementで
Sub test()
Dim myDir$, fn$, myFormula$
myDir = "c:\test\"
fn = Dir(myDir & "*.xls")
If fn <> "" Then
Do While fn <> ""
myFormula = "'" & myDir & "[" & fn & "]Sheet1!'"
NewName = ExecuteExcel4Macro(myFormula & "R1C1&" & myFormula & "R1C2&Text(" & _
myFormula & "R1C3,""yyyy年m月d日"")") & ".xls" '<- 修正 15:53
Name myDir & fn As myDir & NewName
fn = Dir
Loop
End If
End Sub
(seiya)
ROUGEさんのものを実行させていただきましたところ(これは私の方の設定が正しくできていないからなのかもしれませんが)、
【パスが見つかりません】となりVBEを開くとf.Name = txt & "." & .GetExtensionName(f.Path)←の部分が黄色く示されておりました。
理解力がなく申し訳ないのですがよろしくお願いします。(にたい)
Const myPath As String = "C:\test\"
~~~~~~~~~~
この部分は(にたい)さんが書き換える必要があります。
(ROUGE)
Cドライブ内にtestフォルダーを作成して試していたつもりだったのですが、このパソコンがC:システム、D:データと分けているのをうっかりしてました。。。お恥ずかしい。。。
"d:\test\"と書き変えさせていただくことで、できるようになりました!
ROUGEさんをはじめ独覚さん、seiyaさんご返信ありがとうございました!
(にたい)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.