• 締切済み

VBA ファイル名の変更方法

nameというファイル名を、testという「String型変数」が保持している文字列に変更させたいと思っています。 こういう場合には、どのような記載すればよいのでしょうか? (As以降の書き方がわかりません) Dim test as String Name ("C:\name.txt") As ("C\「test変数が保持している文字列」.txt")

みんなの回答

回答No.1

Name "C:\name.txt" As "C:\" & test & ".txt" 括弧はつけても構いませんが無くてもちゃんと動作します。

関連するQ&A

  • VBA Functionプロシージャで複数の値を

    エクセルでVBAのFunctionプロシージャについて複数の値を戻り値として 受け取る方法を考えています。 下記のようなサンプルプログラムを作りました。 --------------------------------------------------------------------------------- Option Explicit Private Sub CommandButton1_Click() Dim kekka(3) As Double Dim txt As String txt = "12.12A,34.34B,56.56C,78.78D" kekka(0) = test(txt) End Sub Public Function test(ByVal text As String) As Double Dim txt_kakou(3) As String '## 渡された「txt = "12.12A,34.34B,56.56C,78.78D"」を加工し、数値のみを取り出し '## 下記のように配列txt_kakou(3)に振り分ける '## 加工方法は割愛 txt_kakou(0) = 12.12 txt_kakou(1) = 34.34 txt_kakou(2) = 56.56 txt_kakou(3) = 78.78 'string型からdouble型に変換する。 txt_kakou(0) = CDbl(txt_kakou(0)) txt_kakou(1) = CDbl(txt_kakou(1)) txt_kakou(2) = CDbl(txt_kakou(2)) txt_kakou(3) = CDbl(txt_kakou(3)) test = txt_kakou() End Function ----------------------------------------------------------------------------------- まず、呼び出し側のプロシージャでkekka(3)という配列を宣言します。 次に変数txtに「"12.12A,34.34B,56.56C,78.78D"」の文字列を代入します。 そして変数txtをFunctionプロシージャに投げます。 Functionプロシージャでは、受け取った「"12.12A,34.34B,56.56C,78.78D"」 を数値のみに分解し、4つの変数に代入します。 この4つの変数も配列で用意し、txt_kakou(3)とします。 このtxt_kakou(3)を呼び出し元に返し、呼び出しもとの変数kekka(3)に入れたいのです。 また、はじめ変数txtに代入される値は文字列ですが、この文字列をFunctionプロシージャで分解し、 分解した値は、最終的には数値として扱いたいので、途中でdouble型に変換しています。 これを実行すると、Functionプロシージャの最後のtest = txt_kakou()で、型が一致しません といわれてしまいます。 どのように書き直せばいいのでしょうか。 よろしくお願いします。

  • 文字列を変数名として扱う方法

    vb6.0 か vb.net で文字列を変数名として扱うにはどうすればいいでしょうか? 例をあげると下記のようなことです。 -------------------- dim abc as string dim x as string abc = "テスト" x = "b" msgbox "a" & x & "c" -------------------- これをそのままvb6.0で実行すると"abc"という文字が表示されますが "abc"ではなく"テスト"と表示させたいのです。 つまり msgbox abc とした場合と同じようにしたいのですが可能でしょうか? ご存知の方教えてください。 よろしくお願いします。

  • VBA シート名とファイル名とフォルダ名を一度に変更したい

    こんばんは。 現在のアクティブセルに入力された文字列「(例)0001」を入力するとシート名、ファイル名、フォルダ名が変更するVBAを作成しています。 シート名の変更は出来たのですが、ファイル名とフォルダ名の変更が上手くいきません。 大変恐れ入りますが、伝授いただけないでしょうか。 よろしくお願い致します。 Sub シート名変更() Dim シート名 As String シート名 = ActiveCell.Value If シート名 = "" Then MsgBox "文字列を含むセルを選択してください。" Exit Sub End If ActiveSheet.Name = シート名 End Sub

  • VBAでExcelのセルの一覧からファイル名の変更が

    こんにちは。会社で大量のファイル名を変更していますが、Excelで一覧からを変更できれば能率的なので作っていますが、困っています。下記のものです。 Sub リネーム() Dim i As Long  Dim NEWファイル As String  Dim OLDファイル As String  Dim パス As String For i = 1 To Range("B65536").End(xlUp).Row パス = Cells(2, 1).Value OLDファイル = パス & Cells(i, 2).Value NEWファイル = パス & Cells(i, 3).Value If Dir(OLDファイル) <> "" Then Name OLDファイル As NEWファイル End If Next i End Sub ※A2にはC:\Documents and Settings\M.Co,\デスクトップ\リネームと入っています。B1には変更前の001.jpg、C1には変更するa-1.jpgとファイル名が入っています。実行してもファイル名は変更されません。エラーもでません。よろしくお願いします。

  • 【Excel VBA】ファイルのフルパスからフォルダ名のみ取り出したい

    Dim testfile As String testfile = C:\test\aaa.xls とします。 この時、testfileのディレクトリ名だけを取り出したいのですが、 どのようにすればよろしいでしょうか? 結果としては、 testdir = C:\test\ のような感じです。 一発でディレクトリ名を返してくれる関数はありますか? それとも、フルパスの右側から1文字ずつ検索して"\"を~しか方法がないのでしょうか? よろしくお願いします。

  • VBAにて変数をコントロール名として使用する方法

    Access2002、VBAにて Me.txtテキストなどのようにコントロール名を指定しますが この「txtテキスト」の部分を変数を使って コントロールの指定を行うにはどのように記述すればよいでしょうか。 Dim test as variant test = "txtテキスト" Me.test のように・・・(上は適当です、すみません)

  • (VBA) ファイル名の変更 - 拡張子を参考 -

    ファイル名の変更をEXCEl(VBA)で行いたいと思います。 以下を参考にしました https://akira55.com/file_change_name/ 旧ファイル名を新ファイル名に変更する場合、  拡張子は旧ファイルと同じなので  新ファイルには拡張子が無い形式で記載されています。 一応、上手く処理出来ているようでエラー無く完了しますが、  問題があります。 拡張子を取り出すのに"."から右側を取り出していますが "."が複数ある場合は処理できません。  "."が複数ある場合、最後の"."から右側を取り出すようにようにするには  どのようにコードを変更しますか ? Sub FilenameChange01() '指定したファイル名を変更します。 Dim ws01 As Worksheet Dim lRow, I As Single Dim FolderName, OldFile, NewFile As String Dim OldFile_Kakucyoushi, NewFile_Kakuchoushi As String Set ws01 = Worksheets("ReName") FolderName = ws01.Range("C1") '保存されている保存先(フォルダー) lRow = ws01.Cells(Rows.Count, "B").End(xlUp).Row 'B列の最終行を取得 For I = 4 To lRow '最終行まで繰り返す OldFile = FolderName & "\" & ws01.Cells(I, "B") NewFile = FolderName & "\" & ws01.Cells(I, "C") OldFile_Kakucyoshi = Right(ws01.Cells(I, "B"), Len(ws01.Cells(I, "B")) - (Application.WorksheetFunction.Find(".", ws01.Cells(I, "B")) - 1)) NewFile_Kakucyoshi = OldFile_Kakucyoshi NewFile = NewFile & NewFile_Kakucyoshi Name OldFile As NewFile 'ファイル名を変更します。 Next I End Sub

  • VBAのプロシージャのことで

    TEST1のプロシージャ内に使用している readfileという変数の中にテストという文字列を代入し、 文字列が代入された状態で Callによって別のプロシージャを読みにいったとき TEST(変数)に入った文字列ごと持っていくには どの様に記述すればよいかどなたか教えていただけませんでしょうか・・・。。 ----------------------------------------------------------- Sub TEST () Dim readfile As String readfile = "テスト" Call TEST2 End Sub ----------------------------------------------------------- Sub TEST2() readfile ←テストという文字列をTESTプロシージャから持ってきたい End Sub ----------------------------------------------------------- 単純に書いてみたコードですが、この様なことは可能なのでしょうか? すいませんがいただけないでしょうか><;

  • VBAでテキストファイルの改行を無視する方法

    VBAでテキストファイルにある文字列を配列の変数に格納したいのですが、改行が含まれているとそこから2バイトずつずれてしまいます。 1行毎に読もうとしても1行の文字列が6000バイトぐらいあるので変数に格納しきれません。 読み込むテキストファイルは _________0_________1_________2・・・・________10 _______100________51 のようになっており、10バイトずつ変数に格納していきたいです(スペースも格納する必要あり) 以下のように作ったのですが、改行のあるところからずれてしまいます。 Sub ファイル読み込み() Dim buf(30000000) As String Dim i As Long i = 0 With CreateObject("Scripting.FileSystemObject") With .OpenTextFile("C:\test.text", 1) Do While .AtEndOfStream <> True buf(i) = .read(10) Loop End With End With End Sub 「次の文字列が改行コードである」ということが分かれば.skipで飛ばせるのですが、その判定式が探しても見つかりません。 どなたかご教授よろしくお願いします。

  • フォルダ内のファイル名の末尾7文字を一括置換

    フォルダ内のファイル名の末尾7文字を一括置換 こんにちは、VBA初心者です。 D:\test フォルダに test_jp.txt、sample_jp.txt、testsample_jp.txt といった名前のファイルが格納されているとします。 これらのファイル名の「_jp.txt」の部分(末尾7文字の部分)を「_en.txt」に置換したいのですが、うまくいきません。 以下のようなプログラムを書いてみたのですが、どこがいけないのでしょうか。 ※「実行時エラー53 ファイル名が見つかりません。」となります。 ※ VBEのローカルペインによると、エラー時には filename 変数に sample_jp.txt が格納されています。 Sub ファイル名置換() Dim fileName As String fileName = Dir("D:\test\*_ja.txt") Do Until fileName = "" Name "D:\test" & fileName As "D:\test" & Left(fileName, Len(filename) - 7) & "_de.txt" filename = Dir() Loop End Sub

専門家に質問してみよう