アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel2016を使っております。

「データ」というフォルダ中に複数のフォルダが入っており、そのフォルダ名をG2セルに入力すると、入力したフォルダ名のフォルダに入っている全ファイルのデータをコピペするマクロを作りたいと思っています。
最初に「Const FolderPath As String = "D:\データ\" & Range("G2").Value」と書いて実行すると、「定義式が必要です。」とのコンパイルエラーが表示されて、valueに黄色のマーカーがついて動きが止まってしまいます。
変数の定義ができていないのかと思い「Dim FolderPath As String」と追記しても変わらずに止まってしまいます。

どのように書けばよいのか、ご教示願います。

A 回答 (4件)

こんにちは。


一応、VBAの場合は、定数(Const)と宣言してある部分に、変数(変化する値)を置いたら、VBAが通るはずがありませんね。

Dim i As Long
i = 1
× Const A = "abc" & i '←i は変数

Range("G2").Value これも変化する値ですね。いわば変数です。

"D:\データ\" これが定数(Const = constant value)
だから、私なら、
Const BASEFOLDER As String ="D:\データ\"
'-------------------------------------
Dim FolderPath As String
  FolderPath = BASEFOLDER & Range("G2").Value
  
などと書きます。
    • good
    • 0
この回答へのお礼

わかりやすく説明していただきありがとうございます。
理解できました。

お礼日時:2018/01/26 14:49

No2です。


>しかし、「Const FolderPath As String = "D:\データ\" & Range("G2").Value」を消した状態でその2行を書くとエラーにはならないもののファイルのコピペ等の処理が行われずに終了してしまい、

この場合、この2行以外の他の箇所に問題があり、前のエラーが取れたことにより、その問題が今、表にでてきたと考えられます。
マクロの全てを提示していただかないと、それに対する回答はできません。


>消さずにその2行を追加すると同じく「定義式が必要です。」のエラーになってしまいました。
どこに問題があるのでしょうか。。

その「Const FolderPath As String = "D:\データ\" & Range("G2").Value」を消してないので、そのエラーで最初に止まっている
状態です。この行は、消さないと前に進みません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
失礼いたしました。最初に回答していただいたとおりに書き換えると動きました。

お礼日時:2018/01/26 14:47

以下のように2行に分けて書いてください。


Dim FolderPath As String
FolderPath = "D:\データ\" & Range("G2").Value

1行にかいてダメな理由は省略します。
    • good
    • 1
この回答へのお礼

ありがとうございます。
しかし、「Const FolderPath As String = "D:\データ\" & Range("G2").Value」を消した状態でその2行を書くとエラーにはならないもののファイルのコピペ等の処理が行われずに終了してしまい、消さずにその2行を追加すると同じく「定義式が必要です。」のエラーになってしまいました。
どこに問題があるのでしょうか。。

お礼日時:2018/01/26 10:21

こんばんは!



G2セルのファイル名にはちゃんと拡張子まで含まれていますか?

開くファイルがExcel2007以降のファイルであれば
Const FolderPath As String = "D:\データ\" & Range("G2").Value&".xlsx"

としたらどうなりますか?m(_ _)m
    • good
    • 1
この回答へのお礼

ありがとうございます。
しかし、G2セルの値はファイル名ではなく、フォルダ名です。

お礼日時:2018/01/26 09:53

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A