• 締切済み

Excel vba ファイルの移動について

excelのvbaでファイルを管理するツールを作り始めました。vba自体初めて間もないのですが、ファイル移動に関してわからなかった点がありますので、質問させていただきます。 インターネットで調べたところ、固定のファイルを移動及びファイル名の変更をする場合には以下の記述でできそうなんですが、 ************************************************ Option Explicit Private Const cnsSOUR = "C:\AAA\SAMPLE1.txt" Private Const cnsDEST = "C:\BBB\SAMPLE2.txt" Sub MOVE_SAMPLE1() Name cnsSOUR As cnsDEST End Sub ************************************************** この"C:\AAA\SAMPLE1.txt"及び"C:\BBB\SAMPLE2.txt"を 変数で記述するとエラーになってしまい、プログラムが通りません。 何かいい方法がございましたら、ご教授ください。 過去の質問を調べてもいまいちわかりませんでした。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

Const宣言には定数式が必要で、変数(コントロールのプロパティなど)の代入には適しません Constは一度代入されたデータが変化しないもの対して使います ご使用の用途には Dim宣言の変数を使いましょう Dim sSrc as String, sDist as String といった具合に宣言しておいて sSrc = TextBox1.Text sDist = TextBox2.Text Name sSrc as sDist といった具合に使います

回答No.1

うちでは動きましたが・・ どういうエラーがでましたか?

diouf9
質問者

補足

早速の返信ありがとうございます。 すみません・・・説明不足でした。 Private Const cnsSOUR = "C:\AAA\SAMPLE1.txt" の部分を Const cnsSOUR = SAMPLE.Value と、テキストボックスに入力したフルパスでファイル名を 取ってくるように作ったのですが、 ”定数式が必要です”とコンパイルエラーになってしまいます。

関連するQ&A

  • VBA-MyExcelファイルをコピー

    目的は今開いているExcelファイルを適宜バックアップする。 方法として自身Excelに下記VBA「FileCopy」文を記述して実行⇒実行エラーにて失敗。 対処方法又は妙案をご教授ください。 Option Explicit Private Const MyFile = "C:\Tmp\Sample.xls" '自身ファイル Private Const DsFile = "C:\Tmp\Sample_01.xls" '複製ファイル Sub SAMPLE() ThisWorkbook.Save FileCopy MyFile, DsFile End Sub

  • Excel VBAでフォルダ作成及び一括移動

    特定のフォルダの中身を別フォルダに一括移動させるVBAを作りたいと思っています。 実行の都度、移動先のフォルダ内に年月日時分秒のフォルダを作成して、そこに ファイルを移動させたいのですが、フォルダの作り方がわかりません。 固定フォルダで一括移動はいろいろなサイトを回って以下のような感じでできたのですが。 Const cnsSOUR = "C:\Users\abc\Desktop\SAMPLE\*.*" Const cnsDEST = "C:\Users\abc\Desktop\SAMPLE2\" Dim objFSO As FileSystemObject Set objFSO = New FileSystemObject ' FSOによるファイルコピー objFSO.MoveFile cnsSOUR, cnsDEST Set objFSO = Nothing お詳しい方ご教授願います。

  • Excel VBA サブディレクトリの取得について

    Excel VBA についての質問です。 私は、VBAの初心者です。 フォルダ選択ダイアログを開き、あるフォルダを選択させます。 選択したフォルダ配下のファイルとサブフォルダにあるファイル一覧とそのファイルのパス取得したいです。 【例】D:\TEMP\AAA フォルダを選択 D:\TEMP\AAA  D:\TEMP\AAA\BBB\CCC.txt D:\TEMP\AAA\BBB\DDD\EEE.txt D:\TEMP\AAA\BBB\DDD\FFF.txt GGG.txt が存在する。 まず、フォルダAAAまで選択されたら、 以下の結果がエクセルに出力したいです。 BBB         CCC.txt BBB\DDD        EEE.txt BBB\DDD        FFF.txt               GGG.txt うまく伝えないかもしれないですが、ご教授お願いいたします。

  • VBAで、ファイルを移動する方法を教えてください。

    こんにちは。VBAの記述について質問させてください。 VBAのレベルは、簡単なマクロ処理(コピー、貼り付けしたり、シートの追加、削除をしたりできる程度です)を VBAで書けるくらいの初心者です。 インターネットに掲載されている事例を見ながら一週間ほど試行錯誤しましたが、 どうしても、下層フォルダも含め、複数のファイルをまとめて移動する方法がわかりません。 いろいろ考えたところ、 1.下層フォルダも含め、ファイル名をまとめて取得 2.それをExcelに書き出してリストを作る 3.そのリストにあるものをすべてひとつのフォルダにまとめて移動する という流れでやればいいのかな、と思いますが、 やり方がわかりません。 ※そもそもこの考え方が違っていたら、ご指摘ください。 インターネットを参照すると、 まず、1、2は、次の方法でできることがわかりました。 参照サイト VBA応用 http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html ============================ Option Explicit ' 指定したフォルダ内のファイルの一覧を取得 Sub ファイル名一覧取得() Const cnsTitle = "フォルダ内のファイル名一覧取得" Const cnsDIR = "\*.*" Dim xlAPP As Application Dim strPATHNAME As String, vntPathName As Variant Dim strFileName As String Dim GYO As Long Dim Shell, myPath Set xlAPP = Application ' InputBoxでフォルダ指定を受ける vntPathName = xlAPP.InputBox("参照するフォルダ名を入力して下さい。", _ cnsTitle, "C:\") ' (1) strPATHNAME = vntPathName ' フォルダの存在確認 If Dir(strPATHNAME, vbDirectory) = "" Then MsgBox "指定のフォルダは存在しません。", vbExclamation, cnsTitle Exit Sub End If ' 先頭のファイル名の取得 strFileName = Dir(strPATHNAME & cnsDIR, vbNormal) ' ファイルが見つからなくなるまで繰り返す Do While strFileName <> "" ' 行を加算 GYO = GYO + 1 ' 先頭は1行目 Cells(GYO, 1).Value = strFileName ' 次のファイル名を取得 strFileName = Dir() Loop End Sub ============================ これを行うと、A列にすべてのファイル名が書き出されます。 また、 動かしたいファイルが入っているフォルダと、ファイル名がわかっている場合は、 nameで動かせるのはわかりました。 例 ============================ Name "C:\AAA\SAMPLE1.txt" As "C:\BBB\SAMPLE1.txt" ============================ ※こうすると、AAAというフォルダにあったSAMPLE1が、BBBに移動します。 この組み合わせで何とかできるのではないかと思うのですが、 ここから先が見えません。 実際に行いたい処理は、 図面がたくさん入っているフォルダが対象のフォルダになります。 ※図面はzipファイルになっていますので、解凍をする必要があります。 ファイル名は、その時によって違うので、一旦 ============== C:\Users\Desktop\移動元 ============== というフォルダに格納します。 この中で、zipを解凍すると、 格納された複数のフォルダと2000個近くのファイルが出てきます。 ファイルの拡張子は特殊なものですが、ファイルを取り出すときに、 zip以外を取り出したいので、仮に、.xls .docとしておきます。 フォルダの名前やファイルの名前は図面の名称になっていますが、 今回は、 デスクトップ上の「移動先」というフォルダにすべてそのまま移動できればいいです。 =========== C:\Users\Desktop\移動先 =========== です。 実験用に、 デスクトップに、移動元というフォルダを作り、 その中に、子A、子B、子Cというフォルダを作り、 さらに、それぞれ、孫A、孫B、孫Cというフォルダを作りました。 それぞれの孫フォルダには、4つずつダミーファイルを入れました。 ※これが、解凍後の状態になります。 図面の拡張子は特殊なものなので、今回は、わかりやすいように、 xlsとdocにします。 A-A-1.doc、A-A-1.xls、A-A-2.doc、A-A-2.xls という感じです。 ファイル名は、A-A-1や、C-B-2のようにして、 それぞれ、 「子Aのフォルダの中の孫Aの1つ目」 「子Cのフォルダの中の孫Bの2つ目」 という意味になるようにしています。 書き出したリストと、 pathの組み合わせと、 For Nextもしくは Do Loopの組み合わせで なんとかなりそうなのですが、 頭の中が混乱して答えが導き出せません。 今週中に作らないといけないので、 お力をお貸しください。 よろしくお願いいたします。

  • ExcelVBAでセルの値利用してフォルダ間の移動

    フォルダ「A」から「B」への移動は以下の内容で実施できることまではわかりましたが、移動させたいファイルはセルA1からA10にあるものを参照して計10個のファイルを「A]から「B」に移動したいのです。(ファイル名は先頭の4文字のみが一致すればそれ以下の文字列はワイルドカード「*」で実施したいのです。 以下の 内容で ファイル名「1111*」となっている部分に セルのA1からA10にあるものを自動で取得させたいのです。 Sub 番号一致の移動() '一つ目 Const cnsSOUR = "C:\Users\aaa\Desktop\A\1111*.xlsx" Const cnsDEST = "C:\Users\aaa\Desktop\B\" Dim objFSO As FileSystemObject Set objFSO = New FileSystemObject objFSO.MoveFile cnsSOUR, cnsDEST Set objFSO = Nothing End Sub

  • エクセル VBAの記述 「フォルダーの移動」

    "AAA"と言うフォルダーの中に"BBB"というエクセルブックがあります。 "BBB"を開いて保存するときに別のフォルダー"CCC"に保存するVBAの記述を教えてください。 このとき"AAA"には保存しません。

  • 【VBA】任意のファイルの一括操作について

    こちらの識者の方々にはいつもお世話になっております。 VBAで教えていただきたいことがあり質問いたします。 C:\aaa\に下記のexcelファイルがあります。 【見本】東京.xls 【見本】埼玉.xls 【見本】神奈川.xls 【見本2】千葉.xls これを 1.C:\bbb\へコピーし、 2.ファイル名の【見本】と【見本2】の文字列を削除し、 3.拡張子の前に本日の日付をyyyymmdd形式で追加し、 4.それぞれのexcelファイルのsheet1のa1セルにyyyymmdd形式で本日の日付を入力する。 というマクロを組みたいと思っています。 一つ一つnameステートメントでファイル名を変更したり、 open→Range("A1").Value→closeとやってもできるんですが、 条件もすこぶる単純ですし、一括でできるようなコードはないかと思っています。 最終的な期待するファイルのフルパスは↓のようになります。 C:\bbb\東京20130426.xls C:\bbb\埼玉20130426.xls C:\bbb\神奈川20130426.xls C:\bbb\千葉20130426.xls C:\bbb\へコピーするところまでは調べてできたのですが、 その先がこれというものを見つけられず。 どなたかご教示いただけないでしょうか。 宜しくお願い致します。 Sub Test() Dim objFSO As FileSystemObject Const cnsSOUR = "C:\aaa\*.xls" Const cnsDEST = "C:\bbb\" Set objFSO = New FileSystemObject objFSO.CopyFile cnsSOUR, cnsDEST, True Set objFSO = Nothing End Sub

  • C言語でのファイル検索&ファイル書き換えについて

    C言語である特定のフォルダを指定して、その階層内(サブフォルダも含む)にあるファイル、例えばsample_nameをファイル名に含むファイルを見つけ、そのファイル内の例えば下のような書き換えを行えるようなプログラムはどうつくればいいのでしょうか。 元ファイル ~sample_name1.txt~ aaa, 10 bbb, 20 ccc, 30 ~sample_name2.txt~ aaa, 30 ccc, 12 bbb, 20 ddd, 15 上のように各ファイルにaaaやbbbが共通に含まれています。 対象ファイル:sample_name 対象文字列:aaa 変換後:100 変換後ファイル ~sample_name1.txt~ aaa, 100 bbb, 20 ccc, 30 ~sample_name2.txt~ aaa, 100 ccc, 12 bbb, 20 ddd, 15

  • windowsバッチファイル ファイル移動

    windows2012R2で下記のようなバッチファイルを作成しました。 --------------- Set YYYY=%Date:~0,4% Set MM=%Date:~5,2% Set DD=%Date:~8,2% Set File=%YYYY%%MM%%DD% mkdir G:\bbb\xx1_%File% move G:\aaa\ttttt* G:\bbb\xx1_%File% --------------- としてもフォルダは作成されておりましたが、tttttから始まるファイル名が移動されてませんでした。 MS-DOSで move G:\aaa\ttttt* G:\bbb\xx1_20141110 とコマンドしたら、移動できたのですが。。。 どなたかお分かりの方がおりましたら、お願い致します。

  • エクセルのVBA ファイルの移動

    同一のフォルダーに保存されたファイルを 異なるフォルダーに保存するマクロを作成したいです 例えば ファイル名 フォルダ名 あいう様 aaa → ア あいう様 あいう様 bbb → ア あいう様 いいい様 aaa → イ いいい様 かきく様 ddd → カ かきく様 さしす様 aaa → サ さしす様 たちつ様 ccc → タ たちつ様 保存先にフォルダ名がなければ作成して保存するマクロを 作りたい場合はどのようにすればいいでしょうか? 下記のURLを使い、ファイル名を変更したあと 上記の通りにフォルダー移動がしたいです https://www.relief.jp/docs/017844.html

専門家に質問してみよう