ファイルと同じ名前のワークシートがあるかどうか確認したい。ファイルと同じ名前のワークシートがあるかどうか確認したい
現時点ではファイルを配列として開いていますが、コードを繰り返して、同じ名前のワークシートがあるかどうかを確認してください。
私は分割を使用してパス名と拡張子を削除しましたが、確認することはできません。
コードの乱雑さをお詫び申し上げます。それを整理しようとしていたが、病気が整った。より多くのコードがありますが、一致するものがなければそのコードを実行したいので、これは必要ありません。
お手伝いできますか?
Sub sort_it_out()
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim Sheet As Worksheet
Dim filnam As Variant
On Error GoTo errorhandler
Set wb1 = ActiveWorkbook
ChDir Application.ActiveWorkbook.path
'get files
filnam = Application.GetOpenFilename(FileFilter:="2D Table Formats (*.htm;*.xlsm;*.html),*.htm;*.xlsm;*.html", Title:="Select 2D Table", MultiSelect:=True)
'set the array
If IsArray(filnam) Then 'if at least one file is selected, this will be an Array
'define j as the array
For j = LBound(filnam) To UBound(filnam)
'remove path and extension
Dim s As String, a() As String, p As String
s = filnam(j)
a() = Split(s, "\")
p = Split(a(UBound(a)), ".")(0)
MsgBox "p " & p
'check if worksheet exists
For Each ws_check In ThisWorkbook.Worksheets()
If ws_check.Name = p Then
MsgBox "Its there"
Exit Sub
Else
End If
Next ws_check
'continue code from here
これはコードを実行しますが、何らかの理由で配列をループしません。一度に1つのファイルのみ。あなたは助けてもらえますか?
ありがとうございます。私が入るとそれをチェックします。filnamはファイルを配列に開くものです。 Filnam(j)は配列を呼び出し、すべての追加パス情報を削除するためにpで短縮する必要があります。これは開かれているファイルか、p内のファイルだけをチェックしますか? –
私はそれが意味をなさないならば、filnamから配列としてpを定義する必要があると思う。 –
あなたのpはforループの中にあるように見えたので、配列の各ファイルを調べてファイル名にpを入れると思っていた。しかし私は間違っている可能性があります。 – AlwaysData