プロが教えるわが家の防犯対策術!

指定のファイルをフォルダAからフォルダBへ移動させるというvbaを
見つけたのですが、
サンプルの表記は「"C:\Data\A"」と直接場所をしていしたものなので、
参照するフォルダ場所として、セルC1を参照させようと、
「Range("C1")」と書き直したところ、
「コンパイルエラー:定数式が必要です」とエラーになってしまいます。
どの様に書き直せばよいのでしょうか?
どなたかご存じでしたら、ぜひお教え下さい。
よろしくお願いします。
エクセル2010を使用しています。


Sub CheckAndMoveFiles()


Const FolderA = Range("C1") 'エラー発生
'Const FolderA = "C:\Data\A" サンプルの表記
  Const FolderB = "C:\Data\B"

Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")


Dim ws As Worksheet
Set ws = ActiveSheet


Dim lastRow As Long
lastRow = ws.Range("A" & Rows.Count).End(xlUp).Row


Dim r As Long
Dim fileName As String
For r = 1 To lastRow
If ws.Cells(r, "A").Value <> "" Then
' fileName = ws.Cells(r, "A").Value & ".xls"
fileName = ws.Cells(r, "A").Value
If fso.FileExists(FolderA & "\" & fileName) = True Then
fso.moveFile FolderA & "\" & fileName, FolderB & "\" & fileName
End If
End If
Next
End Sub

A 回答 (1件)

こんにちは。



Const FolderA = Range("C1") のConstは「リテラル値の代わりに使う定数を宣言」するステートメントです。

定数を宣言するのだから、可変になるような記述は出来ないのでエラーになるのです。

セルに入っている値を使いたいのであれば

Dim FolderA As String
FolderA = Range("C1").Value

のようにするといいでしょう。
    • good
    • 2
この回答へのお礼

M-SOFT さま

できました!
大変わかりやすい説明も付けていただいて、理解もできてたすかりました。
ありがとうございますm(_ _)m

お礼日時:2013/11/01 13:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!