• ベストアンサー

エクセルVBA ファイル名操作

エクセルマクロのコードにおきまして 「フォルダの選択」ダイアログから エクセルファイル 123.xlsxを例えば 開くときに それをa.xlsxという名前に変えて 以下のそれに続くVBAコードにおいて a.xlsxを操作したいのですが、 a = Application.GetOpenFilename() Workbooks.Open a これを実行すると求めるダイアログが表示されて 使いたい123.xlsxを開くをクリックしますが これでは123.xlsxがa.xlsxにはなりません このa.xlsxのファイル名で別途ファイル作成する方法を 御教示いただけると助かります よろしくお願いします win10 office365 コードは以下 部分ですが こういう流れで作成したい所存です Sub あいう() a = Application.GetOpenFilename() Workbooks.Open a 'b.xlsxファイルを新規作成 Workbooks.Add ActiveWorkbook.SaveAs Filename:="C:\Users\USER\Desktop\あいう\b.xlsx", FileFormat:=xlXMLSpreadsheet 'a.xlsxファイルの1行目のA1~AG1のセルの値をコピー Workbooks("a.xlsx").Worksheets("Sheet1").Range("A1:AG1").Copy 'b.xlsxファイルのA3~AG3のセルに貼り付け Workbooks("b.xlsx").Worksheets("Sheet1").Range("A3:AG3").PasteSpecial xlPasteValues 以下省略 よろしくお願いします

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1734/2604)
回答No.1

コピーが必要なのか名前を変更するのかいまいちわからないので以下で必要な方を選んでください。 Dim FileName As Variant Dim NewFile As Workbook FileName = Application.GetOpenFilename() 'ファイルのコピーがしたい 'FileCopy FileName, Left(FileName, InStrRev(FileName, "\")) & "b.xlsx" ''ファイル名を変更したい 'Name FileName As Left(FileName, InStrRev(FileName, "\")) & "b.xlsx" Set NewFile = Workbooks.Open(Left(FileName, InStrRev(FileName, "\")) & "b.xlsx") 以後NewFIleで新しいブックにアクセスできます。

sushidokei
質問者

お礼

曖昧な質問でした それを念頭に 両方の場合をお答えいただき 有り難うございました。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1734/2604)
回答No.2

コピーするのでしたら以下の方法でも Dim FileName As Variant Dim NewFile As Workbook FileName = Application.GetOpenFilename() Set NewFile = Workbooks.Open(FileName) NewFile.SaveAs "b.xlsx"

sushidokei
質問者

お礼

有り難うございます 出来ました

関連するQ&A

専門家に質問してみよう