何方か、回答を宜しくお願いします。
deta.xls(多数のシートが有る)シート名変換.xls(マクロが書いてある)
上記の2つのファイルが有りますが、やりたいことはdeta.xlsがアクティブの
時にショートカットでマクロAを起動して、シート名変換.xlsの「シート名」と
いうシートのA1から下方向にdeta.xlsのシート名を所得する。
そして、マクロ終了後所得したシート名を変えて。
deta.xlsがアクティブの時にマクロBを起動して、「シート名」のA1から下方向に
deta.xlsのシート名を変更する。
宜しくお願いします。
下記参考
Sub マクロA()
Dim i As Worksheet
ThisWorkbook.Worksheets("「シート名」").Columns("A:A").ClearContents '書き込む前にA列のデータをクリア
Dim WS As Worksheet
For Each WS In Worksheets
こんばんは。
あまり、独自のロジックを立てられると、回答が付けにくくなってしまいます。
・やりたいことはdeta.xlsがアクティブの時に
(ブックが開いている限りは必要がありません)
・シート名変換.xls(マクロが書いてある)
(ThisWorkbookですから、名前は直接は関係ありません)
この二つは、満足させていません。
また、
・シート名変換.xlsの「シート名」という
あまり、がっちり決める必要性がないような気がしています。
これは、ActiveSheet にしてありますから、問題があれば、出来れば、ご自身で直してください。ThisWorkbook.Worksheets("シート名")
'---------------------------------
'相手側のブック名
Private Const MyBook As String = "deta.xls"
Sub GetSheetsNames()
'シート名取得プログラム
Dim i As Long
Dim Bk1 As Workbook
On Error GoTo ErrHandler
Set Bk1 = Workbooks(MyBook)
For i = 1 To Bk1.Sheets.Count
ActiveSheet.Cells(i, 1).Value = Bk1.Sheets(i).Name
Next i
ErrHandler:
Set Bk1 = Nothing
End Sub
'------------------------------------------------
Sub ChangeSheetsNames()
'シート名変更プログラム
Dim i As Long
Dim Bk1 As Workbook
On Error GoTo ErrHandler
Set Bk1 = Workbooks(MyBook)
For i = 1 To Bk1.Sheets.Count
If Bk1.Sheets(i).Name <> ActiveSheet.Cells(i, 1).Value _
And Cells(i, 1).Value <> "" Then
Bk1.Sheets(i).Name = ActiveSheet.Cells(i, 1).Value
End If
Next i
ErrHandler:
Set Bk1 = Nothing
End Sub
お礼
Wendy02様回答ありがとう御座います。 > あまり、独自のロジックを立てられると、回答が付けにくくなってしまいます。 そうですね、自分でマクロを書いたのですがマクロが書いて有るブックと操作される ブックの切り替えで頭がパンクしてこの質問に至りました、すみませんでした。(^^ゞ 今回も、勉強になる回答ありがとう御座いました。