• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ExcelVBA変数等でのファイルのOpen方法)

ExcelVBA変数でのファイルのOpen方法

jcctairaの回答

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.3

minminwamidori さん 変数と定数が理解できていないような気がします。 例)SubName の値がおかしくなります。   SubName = "vTgYear + i & _ファイルA.xls"     → "vTgYear + i & _ファイルA.xls" がそのままSubName に設定されます。   SubName = vTgYear + i & "ファイルA.xls"     → "2001ファイルA.xls" がSubName に設定されます。 以下、プログラムを修正(命令数をコンパクトにしてあります)しました。  vTgYear = ComboBox1.Value  For I = -1 To 1   Workbooks.Open Filename:=ThisWorkbook & "\3フォルダC\結果ファイルC.xls"   SubName = vTgYear + I & "ファイルA.xls"   Workbooks.Open Filename:=ThisWorkbook.Path & "\1フォルダA\" & SubName       (実行コード中略)  Next I ご確認下さい。

minminwamidori
質問者

お礼

私の書き方が悪かったです。申し訳ありません。その後自力で解決できました。ありがとうございました。

関連するQ&A

  • ExcelVBAコードの編集方法を教えてください

    「ExcelVBA別フォルダにあるブックのコピー方法」 http://okwave.jp/qa/q8488933.html 上記質問でコードを教えていただきました。 自分で編集しようと思ったのですが、どうにもうまくいきません。 編集したい内容としては、 出力する「ファイルC」に複数のシートがあるので、 それぞれのシートを指定して値をコピーしたいのです。 でも、別のシート名の指定がうまくいきません。 シートはフォーマットが決まったものが配置されているのですが、 1つのシートごとに数が異なります。 '////////////////////////////////////////////////////// Private Sub CommandButton1_Click() Dim vTgYear As Variant Dim sht結果 As Worksheet, sht上小 As Worksheet Dim sht保存 As Worksheet Dim sht元データ As Worksheet Dim sMyDir As String Dim sWbkFullName As String Dim sWbkName2 As String Dim sShtName As String Dim sMsg As String Dim i As Long Dim seru As Range vTgYear = ComboBox1.Value '  ● If Not vTgYear Like "####" Then MsgBox "年次を指定してからやり直し", vbExclamation Exit Sub End If Select Case vTgYear Case 1999 To 2012 '  ● Case Else MsgBox "1999~2012の間で年次を指定してからやり直し", vbExclamation '  ● Exit Sub End Select sMyDir = ThisWorkbook.Path & "\" With Application .ScreenUpdating = False '    .DisplayAlerts = False .Calculation = xlCalculationManual End With ' ' ファイルC_結果.xls を開く sWbkFullName = sMyDir & "3_フォルダC\ファイルC_結果.xls" '● sShtName = "地域A" '● On Error Resume Next Set sht結果 = Workbooks.Open(sWbkFullName).Sheets(sShtName) On Error GoTo 0 If sht結果 Is Nothing Then MsgBox sWbkFullName & vbLf & sShtName & vbLf & "開くことが出来ませんでした", vbExclamation Exit Sub End If ' ' 出力先のセル範囲を値消去 sht結果.Range("D7:F44,H7:J44,L7:L44,N7:Q44").ClearContents ' ' 前年~翌年、ループ For i = -1 To 1 ' ' 1_フォルダA sWbkFullName = sMyDir & "1_フォルダA\" & vTgYear + i & "_ファイルA.xls" sShtName = "Sheet1" On Error Resume Next Set sht元データ = Workbooks.Open(sWbkFullName).Sheets(sShtName) On Error GoTo 0 If sht元データ Is Nothing Then sMsg = sMsg & vbLf & "●" & sWbkFullName & vbLf & sShtName Else sht結果.Range("E7:E25").Offset(, i).Value = sht元データ.Range("C5:C23").Value sht結果.Range("E26:E44").Offset(, i).Value = sht元データ.Range("D5:D23").Value sht元データ.Parent.Close SaveChanges:=False Set sht元データ = Nothing End If ' ' 2_フォルダB sWbkFullName = sMyDir & "2_フォルダB\" & vTgYear + i & "_ファイルB.xls" '● sShtName = "Sheet1" '● On Error Resume Next Set sht元データ = Workbooks.Open(sWbkFullName).Sheets(sShtName) On Error GoTo 0 If sht元データ Is Nothing Then sMsg = sMsg & vbLf & "●" & sWbkFullName & vbLf & sShtName Else sht結果.Range("I7:I25").Offset(, i).Value = sht元データ.Range("C5:C23").Value sht結果.Range("I26:I44").Offset(, i).Value = sht元データ.Range("C25:C43").Value sht元データ.Parent.Close SaveChanges:=False Set sht元データ = Nothing End If Next i ' ' "ファイルC_2006~2008年結果.xls"形式の名前を付け保存して閉じる Application.DisplayAlerts = False sht結果.SaveAs Filename:=sMyDir & "3_フォルダC\" & ComboBox1.Value & "_ファイルC.xls" '  ● Application.DisplayAlerts = True With Application .ScreenUpdating = True '    .DisplayAlerts = True .Calculation = xlCalculationAutomatic End With Set sht結果 = Nothing If sMsg = "" Then MsgBox Label1.Caption & vbLf & "処理完了", vbInformation Else MsgBox sMsg & vbLf & "開くことが出来ませんでした", vbExclamation End If End Sub '////////////////////////////////////////////////////// 文字数制限のため全てのコードを書けなかったのですが、 (1)フォルダは複数ある (2)データ元のコピー方法は3種類   (1)コンボボックスで選択した前後2年のファイルの値をコピーする   (2)コンボボックスで選択した年次のみのファイルの値をコピーする   (3)範囲がどの結果の範囲に対しても同一の場合がある (1)(2)は教えていただいたコードでクリアしているのですが、 前の質問の時に結果のファイルにシートが複数あるのをお伝えするのを忘れてしまいました。 結果ファイルの複数のシートにコピーするにはどのように編集したらよいのか教えていただけますと幸いです。 締め切りが近くとても焦っています。 自分でどうにかできないのがお恥ずかしいのですが、どうかよろしくお願い致します。

  • A1セル入力値をファイル名先頭に追加したい。

    マクロ初心者で色々な事例を組み合わせて次のマクロを 作成しました。 A.xlsを開いて一部加工したファイルをB.xlsで保存し さらに一部を消去しC.xlsで保存するマクロです。 今回、B.xlsおよびC.xlsの先頭にA.xlsのA1セルに入力 された6桁の数字を付加して保存したいのですが・・・。 例えばA1セルが123456の時は 123456B.xls 123456C.xls どなたか教えてください。 現在のマクロ Sub Macro2() Dim strFilePath As String Dim strFileName As String Dim flg As Boolean '◆保存するパスの設定 strFilePath = ThisWorkbook.Path & "\" '◆保存するファイル名の指定 strFileName = "B" On Error Resume Next Workbooks(strFileName).Activate ThisWorkbook.SaveAs strFilePath & strFileName '◆個人情報消去 Range("D42:E49").Select Selection.ClearContents Range("d1").Select strFileName = "C" ThisWorkbook.SaveAs strFilePath & strFileName Application.Quit End Sub

  • ExcelVBA別フォルダにあるブックのコピー方法

    ExcelVBAでデータを条件に応じてコピーしたいと思っています。 同一階層に「VBAファイル.xls」「1_フォルダA」「2_フォルダB」「3_フォルダC」があります。 「1_フォルダA」と「2_フォルダB」には年代別に分かれたファイルがあります。 ファイルとフォルダの構造は以下の通りです。 VBAファイル.xls 1_フォルダA  ∟1999_ファイルA.xls  ∟2000_ファイルA.xls  ∟2001_ファイルA.xls  ∟2002_ファイルA.xls  ∟2003_ファイルA.xls  ∟2004_ファイルA.xls  ∟2005_ファイルA.xls  ∟2006_ファイルA.xls  ∟2007_ファイルA.xls  ∟2008_ファイルA.xls  ∟2009_ファイルA.xls  ∟2010_ファイルA.xls  ∟2011_ファイルA.xls  ∟2012_ファイルA.xls 2_フォルダB  ∟1999_ファイルB.xls  ∟2000_ファイルB.xls  ∟2001_ファイルB.xls  ∟2002_ファイルB.xls  ∟2003_ファイルB.xls  ∟2004_ファイルB.xls  ∟2005_ファイルB.xls  ∟2006_ファイルB.xls  ∟2007_ファイルB.xls  ∟2008_ファイルB.xls  ∟2009_ファイルB.xls  ∟2010_ファイルB.xls  ∟2011_ファイルB.xls  ∟2012_ファイルB.xls 3_フォルダC  ∟ファイルC_結果.xls 「VBAファイル.xls」では添付の画像のような「ActiveXコントロール」を設定しました。 コンボボックスで西暦を選択すると、選択した年を中心年として、 前後1年を合わせて合計3年がラベルに表示されます。 その年のファイルのデータが「ファイルC_結果.xls」にコピーされるようにしたいです。 例えば画像のように「2007」を選択した場合、 ・「2006_ファイルA.xls」のC7~C25を「ファイルC_結果.xls」のD7~D25にコピー ・「2007_ファイルA.xls」のC7~C25を「ファイルC_結果.xls」のE7~E25にコピー ・「2008_ファイルA.xls」のC7~C25を「ファイルC_結果.xls」のF7~F25にコピー ・「2006_ファイルB.xls」のC6~C24を「ファイルC_結果.xls」のH7~H25にコピー ・「2007_ファイルB.xls」のC6~C24を「ファイルC_結果.xls」のI7~I25にコピー ・「2008_ファイルB.xls」のC6~C24を「ファイルC_結果.xls」のJ7~J25にコピー というようにしたいです。 「ファイルC_結果.xls」のD/E/F列はファイルAのデータで、 D列は前年、E列は当年、F列は翌年 H/I/J列はファイルBのデータで、 H列は前年、I列は当年、J列は翌年の値をコピーして貼り付けたいです。 また、可能であれば「ファイルC_結果.xls」は原本なので、 値をコピーする際にファイル名が変更できればよりよいです。 いろいろ書いてしまい、うまく伝わっているか不安なのですが 処理するデータが多くとても困っています。 お知恵のある方、どなたか助けていただけますと幸いです。 よろしくお願いいたします。

  • ブックのopenについて

    デスクトップにファイル名「A.xls」と「B.xls」が有ります。「B.xls」はファイル名が変わるため「A.xls」のsheet1のセルA1に「B.xls」のファイル名を記載して「A.xls」と「B.xls」を共に開き「A.xls」にマクロを記述して処理をしています。この処理をする際に最初から「B.xls」を開かずにマクロでセルA1に記載したファイル名を使って「B.xls」ファイルを開くための記述を教えてください。現在のマクロの最初の部分は以下のようになっています。よろしくお願いします。 Sub Macro1() Dim nextyearbookname As String nextyearbookname = Range("A1") & ".xls"   ThisWorkbook.Activate Worksheets("sheet1").Range("B20:B21").Select Selection.Copy  Windows(nextyearbookname).Activate

  • すべてのファイルにデータを取得方法

    VBAで一覧作成を作っているですけど、ちょっと力不足のせいで、わからないところがあって、ぜひご教示ください。 フォルダにあるすべてのファイルを読み込んで、中の値を取得したいです。いろいろ方法を試して見たのですが、うまく行かないです。 こんな感じです。(一覧作成見たいもの) xlsファイル1   A  B   C     D 1 氏名 NO オーダー名  時間 に 指定されたフォルダ中のすべてファイル A   B     C (一つのファイル) 1 氏名   山田  2 No オーダー名  時間 3 01    A 1 4 02  B 1 5 03  B  1 氏名   佐藤  (二つのファイル) No オーダー名  時間 03  C 1 04  D 1 05    E 1 ・ ・ ・ の最後のファイルまでを 読み込んだら xlsファイル1を  A  B   C     D 氏名 NO オーダー名  時間 山田 01 A 1 山田 02 B 2 佐藤 03 C 1 佐藤 04 D 1 佐藤 05   E      1 ・ ・ ・ こんな感じ Dim BookName As String Dim PathName As String Dim WS1 As Worksheet Dim WS2 As Worksheet Dim no2_count As Long ’xlsファイル1 Set WS1 = Worksheets("個人一覧作成") no2_count = WS1.Cells(Rows.count, 1).End(xlUp).Row Dim i As Integer For i = 2 To no2_count Step 1 PathName = "C:\test\" BookName = Dir(PathName & "*.xls", vbNormal) Do Until BookName = "" Workbooks.Open PathName & BookName Set WS2 = Worksheets(2)   ’氏名の値を取得 WS1.Range("A" & i).Value = WS2.Cells("B,C", 2).Value Workbooks(BookName).Close    BookName = Dir() Loop Next i 初心者なので今の段階では氏名の値すら取得できないですけど、 簡単でも結構ですので、どなたは方法をご教示ください。

  • 同じフォルダ内のブックを開きコピーする方法

    いろいろチャレンジしてみたのですが どうにも行き詰っております。 ご教示頂ければ幸いです。 1つのフォルダに3つ(数は固定)のシートがあります。 フォルダ名は毎回変わります。 C:\デスクトップ\作成 ├4328457 神戸 ├作成元データ(名前は固定)←Aとします。  ├1314 電源工事(名前は毎回変わります)←Bとします。 └見積.xls(名前は固定)←今回は使いません 毎回名前の変わるBを先に開き、下記の「FileOpen」マクロで Aを開きます。 Bにあるシート(数は変動)を全て、Aにあるシート(3枚固定)の前に コピーし、Bは閉じてしまい、Aにて作業をしたいと思います。 Sub FileOpen()   Dim Wb As Workbook   Dim Fname As String     Dim PathName As String    Set Wb = ActiveWorkbook   Fname = "作成元データ.xls" PathName = Wb.Path   If Right(PathName,1)="\" then   Workbooks.Open Filename:=PathName & Fname   Else     Workbooks.Open Filename:=PathName & "\" & Fname     ThisWorkbook.Active    End If End Sub 「ThisWorkbook.Active」にてBに戻しているつもりなのですが Aがアクティブのままであり、Bのシートをコピー選択できなくなってしまっています。 Sub BookOpen() Workbooks.Open Filename:=ThisWorkbook.Path & "\作成元データ.xls" End Sub こちらのように簡単な構図も試してみたのですが PESONAL.xlsbのあるフォルダ?を見に行くようでうまく「作成元データ」を開けませんでした。 お詳しい方には基本的な事かもしれませんが どうぞ宜しくお願い致します。   

  • ExcelVBA複数のシートへのコピーの方法

    以下の質問の補足質問です。よろしくお願い致します。 「ExcelVBAコードの編集方法を教えてください」 http://okwave.jp/qa/q8503466.html 「ExcelVBA別フォルダにあるブックのコピー方法」 http://okwave.jp/qa/q8488933.html で教えていただいたコードを元に自分なりに編集したのですがうまくいきません。 結果先のシートは複数なのですが、複数のシートにコピーする編集方法がうまくいきません。 '////////////////////////////////////////////////////// yyyy = 1999~2012 yyyy2 = 2000~2012 Sheet名:A広域、B広域 1_フォルダA  ∟yyyy_ファイルA.xls 2_フォルダB  ∟yyyy_ファイルB.xls 3_フォルダC  ∟yyyy2_ファイルC.xls 4_フォルダD  ∟yyyy_ファイルD.xls 5_フォルダE  ∟ファイルE_結果.xls 例えばコンボボックスで「2007」を選択した場合、 '地域A男性 「2006_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)D7~D25にコピー 「2007_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)E7~E25にコピー 「2008_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)F7~F25にコピー '地域A女性 「2006_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)D26~D44にコピー 「2007_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)E26~E44にコピー 「2008_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)F26~F44にコピー '地域B男性 「2006_ファイルA.xls」のF5~F23を「ファイルE_結果.xls」の(A広域)D51~D69にコピー 「2007_ファイルA.xls」のF5~F23を「ファイルE_結果.xls」の(A広域)E51~E69にコピー 「2008_ファイルA.xls」のF5~F23を「ファイルE_結果.xls」の(A広域)F51~F69にコピー '地域B女性 「2006_ファイルA.xls」のG5~G23を「ファイルE_結果.xls」の(A広域)D70~D88にコピー 「2007_ファイルA.xls」のG5~G23を「ファイルE_結果.xls」の(A広域)E70~E88にコピー 「2008_ファイルA.xls」のG5~G23を「ファイルE_結果.xls」の(A広域)F70~F88にコピー '地域C男性 「2006_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)D7~D25にコピー 「2007_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)E7~E25にコピー 「2008_ファイルA.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)F7~F25にコピー '地域C女性 「2006_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(B広域)D26~D44にコピー 「2007_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(B広域)E26~E44にコピー 「2008_ファイルA.xls」のD5~D23を「ファイルE_結果.xls」の(B広域)F26~F44にコピー '地域A男性 「2006_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)H7~H25にコピー 「2007_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)I7~I25にコピー 「2008_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(A広域)J7~J25にコピー '地域A女性 「2006_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(A広域)H26~H44にコピー 「2007_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(A広域)I26~I44にコピー 「2008_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(A広域)J26~J44にコピー '地域B男性 「2006_ファイルB.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)H51~H69にコピー 「2007_ファイルB.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)I51~I69にコピー 「2008_ファイルB.xls」のD5~D23を「ファイルE_結果.xls」の(A広域)J51~J69にコピー '地域B女性 「2006_ファイルB.xls」のD25~D43を「ファイルE_結果.xls」の(A広域)H70~H88にコピー 「2007_ファイルB.xls」のD25~D43を「ファイルE_結果.xls」の(A広域)I70~I88にコピー 「2008_ファイルB.xls」のD25~D43を「ファイルE_結果.xls」の(A広域)J70~J88にコピー '地域C男性 「2006_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)H7~H25にコピー 「2007_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)I7~I25にコピー 「2008_ファイルB.xls」のC5~C23を「ファイルE_結果.xls」の(B広域)J7~J25にコピー '地域C女性 「2006_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(B広域)H26~H44にコピー 「2007_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(B広域)I26~I44にコピー 「2008_ファイルB.xls」のC25~C43を「ファイルE_結果.xls」の(B広域)J26~J44にコピー '地域A男性 「2007_ファイルC.xls」のC4~C22を「ファイルE_結果.xls」の(A広域)L7~L25にコピー '地域A女性 「2007_ファイルC.xls」のC24~C42を「ファイルE_結果.xls」の(A広域)L26~L44にコピー '地域B男性 「2007_ファイルC.xls」のD4~D22を「ファイルE_結果.xls」の(A広域)L51~L69にコピー '地域B女性 「2007_ファイルC.xls」のD24~D42を「ファイルE_結果.xls」の(A広域)L70~L88にコピー '地域C男性 「2007_ファイルC.xls」のC4~C22を「ファイルE_結果.xls」の(B広域)L7~L25にコピー '地域C女性 「2007_ファイルC.xls」のC24~C42を「ファイルE_結果.xls」の(B広域)L26~L44にコピー '地域A男性 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(A広域)N7~N25にコピー '地域A女性 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(A広域)N26~N44にコピー '地域B男性 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(A広域)N51~N69にコピー '地域B女性 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(A広域)N70~N88にコピー '地域C男性 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(B広域)N7~N25にコピー '地域C女性 「2007_ファイルD.xls」のE8~E26を「ファイルE_結果.xls」の(B広域)N26~N44にコピー '////////////////////////////////////////////////////// コピー先は複数あるのですが、文字数の関係で割愛させていただきます。 この内容で伝わると良いのですが。 何卒よろしくお願いします。

  • 指定フォルダ内のファイルオープン→別フォルダに同じファイル名のcsvとして保存 のマクロを作ろうとしています

    エクセルで、指定フォルダ内のファイルオープン→別フォルダに同じファイル名のcsvとして保存 のマクロを作ろうとしています。 現在下記のようなマクロを途中まで作成したのですが、保存の良い方法が分からず困っております。 (ファイルオープンまでは出来ているようですが、その後エラーが出てしまいます) どなたかお知恵を拝借願えませんでしょうか。 どうぞ宜しくお願い致します。 Sub Book_Open() Dim BookName As String Dim PathName As String PathName = "C:\test_htmltocsv\test\" BookName = Dir(PathName & "*.html") Do Until BookName = "" Workbooks.Open PathName & BookName BookName = Dir() ActiveWorkbook.SaveAs "Sample.xls" ←← Loop End Sub

  • ファイル名を変数として取り扱いたい

    ファイル名が変更されても正常に動作するようにしたい <処理概要> A.XLS、B.XLS、C.XLSというファイルがあります。 A.XLSにB.XLS、C.XLSのシートを取り込む処理をしています。 マクロはA.XLSで起動、処理しています。 A.XLSのファイル名を変更されても動くようにできるのでしょうか。 ご指導のほど、よろしくお願いいたします。 <ファイルの取り込み処理> For Each fName In FSO.GetFolder(MyFolder).Files If FSO.GetExtensionName(fName) = \\\"xls\\\" And _ FSO.GetBaseName(fName) <> \"A\" Then Set wBook = Workbooks.Open(fName, 0, True) For 番号 = 1 To Worksheets.Count wBook.Worksheets(番号).Copy _ after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) Next 番号 wBook.Close False End If

  • 結合した文字列をファイル名に使えない

    Excel上に入力されているパス名とファイル名のデータを組み合わせて、 様々なファイルを開いたりコピーしたりするVBAのコードを作ろうとしています。 仮にシート上のA1セルに、C:\Documents and Settings\デスクトップ というパス名 A2セルに URIAGE.xls というファイル名が入力されていたとして、 A1の文字列データとB1の文字列データを結合する場合、 Sub FileSousa()  Dim a As String  Dim b As String  Dim c As String  a = Cells(1, "A").Value  b = Cells(2, "A").Value  c = Chr(34) & a & "\" & b & Chr(34)  Range("A3") = c としてみると、確かにA3セルには、"C:\Documents and Settings\デスクトップ\URIAGE.xls" と出力され、文字列が結合されたことがわかるのですが、その変数cのデータを使って  Workbooks.Open Filename:=c として、そのファイルを開こうとすると、ファイル名が見つからないとしてエラーになります。 ファイルはデスクトップ上の確かにその名前で存在しており、直接 Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\URIAGE.xls" とすると開きます。 " を Chr(34)によって入力したのがいけないのでしょうか、 Workbooks.Open Filename:=××× には、変数を置いてはいけないのでしょうか。 そもそも文字列の結合は、"あ" & "い" → "あい" となるのが基本だと思うのですが、 a="あ"、b="い"、c=a&b → c="あい"として結合した変数cについては、ファイル操作上のファイル名の設定項目として使えないのでしょうか。