@frswataru (本石 渉)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Excel VBA set プロシージャの外では無効です

Q&A

Closed

解決したいこと

set プロシージャの外では無効です

現在開いているBOOKの5番目のシートを他のモジュールにも使える変数にしたい

発生している問題・エラー

コンパイルエラー プロシージャの外では無効です

該当するソースコード

' 現在のブック内のワークシートの5番目を代入
Public dstSheet As Worksheet
Set dstSheet = ThisWorkbook.Worksheets(5)



Sub OpenFilesInFolder()
    Dim path, fso, file, files
    'path = "C:/Users/xxxxxx/フォルダ名/"
    path = ThisWorkbook.path & "/Data/"  '相対パスの場合
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set files = fso.GetFolder(path).files

    'フォルダ内の全ファイルについて処理
    For Each file In files

        'ファイルを開いてブックとして取得
        Dim wb As Workbook
        Set wb = Workbooks.Open(file)
        'ブックに対する処理1
        Call SheetLoop
        '保存せずに閉じる
        'Call wb.Close(SaveChanges:=False)

    Next file

End Sub
0 likes

1Answer

2行目のSet文は、この位置に書くことはできず、SubプロシージャやFunctionプロシージャの中で代入するしかないと思います。

VBAにはコンストラクタ等の初期化呼び出しがないため、
解決策としては、
標準モジュールに

Public dstSheet As Worksheet

を書き、マクロが呼び出される可能性があるところの最初に、

Set dstSheet = ThisWorkbook.Worksheets(5)

を書くのはいかがでしょうか。

0Like

Comments

  1. @frswataru

    Questioner

    上手くいきました

Your answer might help someone💌