重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

以下のコードを、もう少し短くする事はできますか?

別ファイルのファイルパスを変数に入れるコード
正常動作を確認

【条件】
マクロは、x.xlsmのに記載しています
転記元.xlsmのA10セルにある ファイルパス を変数に入れています


【コード】
Dim filepath3 As String
Dim wb3 As Workbook
Dim ws3 As Worksheet


filepath3 = "C:\Users\2020\OneDrive\マクロ\住所転記\コントロール.xlsm"
Set wb3 = Workbooks.Open(filepath3)
Set ws3 = wb3.Worksheets("転記元")


Dim filepath4 As String
Dim wb4 As Workbook
Dim ws4 As Worksheet


filepath4 = ws3.Cells(10, 1)
Set wb4 = Workbooks.Open(filepath4)
Set ws4 = wb4.Worksheets("サーベイデータ")

  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (2件)

書かれているコードだと、それぞれの変数を後に使用するのか不明です。



filepath3は独立で定義したほうが扱いやすいと思うので残すとして、
単にws4を取得するのが目的であるなら、こういうのではいかがでしょうか。

Dim filepath3 As String
Dim ws3 As Worksheet, ws4 As Worksheet
filepath3 = "C:\Users\2020\OneDrive\マクロ\住所転記\コントロール.xlsm"
Set ws3 = Workbooks.Open(filepath3).Worksheets("転記元")
Set ws4 = Workbooks.Open(ws3.Cells(10, 1).Value).Worksheets("サーベイデータ")
    • good
    • 1

Option Explicit ' 変数の宣言を強制することをお勧めします



Sub ShortenCode_Pattern1()
Dim filepath3 As String
Dim wb3 As Workbook
Dim ws3 As Worksheet

filepath3 = "C:\Users\2020\OneDrive\マクロ\住所転記\コントロール.xlsm"
Set wb3 = Workbooks.Open(filepath3)
Set ws3 = wb3.Worksheets("転記元")

' ここに ws3 を使った処理を記述します
' 例: MsgBox ws3.Name

' 元のコードにあった filepath4, wb4, ws4 の宣言は、
' この部分までの処理では使用されていないため削除しました。
' もし後続の処理で別のファイルやシートを参照するために必要であれば、
' その際に改めて宣言してください。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!