• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelマクロでファイル名を任意指定したい)

Excelマクロでファイル名を任意指定したい

このQ&Aのポイント
  • Excelマクロを使用して、ファイル名を任意に指定する方法についての質問です。
  • VBAを使用して、アクティブにするファイル名や新しいシート名を任意に指定する方法を教えてください。
  • Excelマクロで特定のファイルを選択し、任意のシート名を付ける方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.1

Workbooks.Open "C:\Users\user\Desktop\Excel\自己練習\Sample2.xlsx" の上に「fn = "~"」としておいて、 Workbooks.Open "C:\Users\user\Desktop\Excel\自己練習\fn とするだけです。 Workbooks("Sample2.xlsx").Activate も同じく「Workbooks(fn).Activate」とするだけですが、 もし、「fn」に「Sample2」しか入力しないのでしたら、もちろん、「fn = "" & ".xlsx"」としておかなければなりません。 「fn」は、「fn = InputBox("FileName ? ")」によって入力することも可能ですね。 Sheets("Sheet1").Name = "名別" も、単に「sn = "~"」としておいて、「Sheets("Sheet1").Name = sn」とすればいいだけです。 お勉強、がんばってください。

その他の回答 (1)

回答No.2

以前の質問でどなたかが 「変数にワークブックを代入する」 という回答を下さっていたと思いますが、それは理解できましたか? そこを理解できていればそんなに難しい案件でもなさそうな気がしますよ。 さて。 せっかくですから、ご自身でも 「ファイルを開くダイアログ VBA」辺りで検索してみましょう。 まぁ、処理自体も謎が多いのですが・・・ Dim myBook As WorkBook, myFile As String Dim NewSheet As String Dim mySH As Worksheet     ' シートの中身を全部消す(?)     Cells.delete     ’ ファイルを指定し、「名前」を変数に代入するダイアログ     myFile = Application.GetOpenFilename( _         Title:="ファイルを選択", _         MultiSelect:=False, _         filefilter:="エクセルファイル,*.xls*")     ' キャンセルされたらマクロ中止     If myFile = "False" Then         MsgBox "キャンセル"         Exit Sub     End If     ' 代入された名前のファイルを開き、変数に代入     Set myBook = Workbooks.Open(Filename:=myFile)     ' シート名を指定     NewSheet = InputBox("元データのあるシート名を入力ください")         ' 中断する可能性もあり(?)         If NewSheet = "" Then Exit Sub     ' 同じ名前のワークシートがあったら削除     i = 0     For Each mySH In ActiveWorkbook.Sheets         If mySH.Name = NewSheet Then mySH.Delete         i = 1     Next     If i = 0 then         If MsgBox("該当シートがありません" & VbNewLine & _                 "処理を続行しますか", vbYesNo) = vbNo Then             MsgBox ”中断しました"         End If     End If     ' 新規ワークシートを作成、変数に代入     Set mySH = Worksheets.Add(after:=Worksheets(Worksheets.Count))         mySH.Name = NewSheet     ' ピボットテーブルの元データはどこにあるのかしら?     Set myRange = Worksheets("Sheet1").Range("A1").CurrentRegion     ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _             SourceData:=myRange, _             Version:=xlPivotTableVersion14).CreatePivotTable _             TableDestination:=mySh.Range("A1"), _             TableName:="myPivot", _             DefaultVersion:=xlPivotTableVersion14     With ActiveSheet.PivotTables("myPivot")         With .PivotFields("name")             .Orientation = xlRowField             .Position = 1         End With         .AddDataField .PivotFields("作業時間"), "合計 / 作業時間", xlSum         .CompactLayoutRowHeader = "UserName"     End With     '     MsgBox "上書き保存します"     On Error Resume Next     ActiveWorkbook.Save     If Err.Number > 0 Then MsgBox "保存されませんでした" サンプルデータがないので、検証はしていません。 色々お試しくださいませ。

chi_ko6262
質問者

お礼

有難うございました。色々勉強になりました。与えて頂いたコードを元に再度勉強しなおします。

関連するQ&A