『ワークシートを追加し、別シートで管理表を作成したい』(ちゃ)
マクロ初心者で、CATGPTなど調べつつ作成しているのですがうまくいきません。
ご指導いただけたらと思いますm(__)m
準備したシートが「貼付用」「ひな形」「リスト」です。
作業イメージですが、
貼付用に、氏名や採用日などの情報を他からもってくる
↓
貼付けボタンを押す
↓
作成したフォーマットを使って、貼付用シートの情報を転記してワークシートを追加しワークシート名は氏名。
※シートが追加される状況になる。
↓
リストシートには
A B C ・・・ M
5 受付日 社員番号 名前 ・・・リンク
6
C列には追加したシート名(氏名)をマクロで転記し、Cの名前と同じ条件でM列にはリンクさせます(関数)
M列のセルをおすと社員のシートにいく。
現在のコードです。
−−−−−−−−−−−−−−−−−
Sub 管理()
Dim wsSource As Worksheet
Dim wsTemplate As Worksheet
Dim wsProgress As Worksheet
Dim newSheet As Worksheet
Dim baseName As String
Dim newSheetName As String
Dim lastRow As Long
Dim staffName As String
Dim i As Integer
Dim progressRow As Long
Dim targetSheetName As String
Dim targetWS As Worksheet
Dim val As Variant
Set wsSource = ThisWorkbook.Sheets("貼付用")
Set wsTemplate = ThisWorkbook.Sheets("ひな形")
Set wsProgress = ThisWorkbook.Sheets("リスト")
staffName = wsSource.Range("D3").Value
baseName = staffName
newSheetName = baseName
i = 2
Do While SheetExists(newSheetName)
newSheetName = baseName & "(" & i & ")"
i = i + 1
Loop
wsTemplate.Copy Before:=wsTemplate
Set newSheet = ActiveSheet
newSheet.Name = newSheetName
With newSheet
.Range("C3").Value = wsSource.Range("C3").Value
.Range("D3").Value = wsSource.Range("D3").Value
.Range("D4").Value = wsSource.Range("E3").Value
.Range("E3").Value = wsSource.Range("G3").Value
.Range("G3").Value = wsSource.Range("F6").Value
.Range("H3").Value = wsSource.Range("G6").Value
.Range("N2").Value = Date
End With
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
lastRow = wsProgress.Cells(wsProgress.Rows.Count, "C").End(xlUp).Row
With wsProgress
.Cells(lastRow + 1, "C").Value = newSheetName
End With
For progressRow = 2 To lastRow
targetSheetName = wsProgress.Cells(progressRow, "C").Value
If targetSheetName <> "" Then
On Error Resume Next
Set targetWS = ThisWorkbook.Sheets(targetSheetName)
On Error GoTo 0
' ここでは何もせず、存在確認だけしている
Set targetWS = Nothing
End If
Next progressRow
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox staffName & "さんのシート作成しました", vbInformation
End Sub
Function SheetExists(sheetName As String) As Boolean
Dim ws As Worksheet
On Error Resume Next
Set ws = ThisWorkbook.Sheets(sheetName)
SheetExists = Not ws Is Nothing
On Error GoTo 0
End Function
−−−−−−−−−−−−−−−−−
●VBAエディタにコードをはるとグレイのラインがでるので、構成エラーでしょうか?
End Sub
←ここにでます!
Function SheetExists(sheetName As String) As Boolean
●↑のコードのおかしい個所などありますか?
追加と転記はされるのですが、エクセルマクロをひらくとセキュリティなのかトラストセンターのエラーがでます。
マクロの設定でVBAマクロが有効な場合にExcel4.0マクロを有効にするとチェックをするとでなくなりますが、各PCごとに表示されます。
この表示もでないようにしたいというのがあります。
< 使用 Excel:unknown、使用 OS:Windows11 >
> ●VBAエディタにコードをはるとグレイのラインがでるので、構成エラーでしょうか? プロシージャや関数の区切り線なのでエラーではありません。
>●↑のコードのおかしい個所などありますか?
おかしな部分はないと思います。
このようなコードでテストしてください。
Sub SheetExists_Test()
MsgBox SheetExists("貼付用")
MsgBox SheetExists("貼付用2")
End Sub
>追加と転記はされるのですが、エクセルマクロをひらくとセキュリティなのかトラストセンターのエラーがでます。 このあたりはPCごとのセキュリティ設定なので、EXCEL側では制御できないと思います。 というか出来たらまずい?
設定方法に関してもAIを活用してください。 プロンプトは質問文をそのまま利用しましたが、こんな回答を教えてくれないでしょうか。
---- EXCEL のマクロファイルを開くとセキュリティなのかトラストセンターのエラーがでます。 マクロの設定でVBAマクロが有効な場合にExcel4.0マクロを有効にするとチェックをするとでなくなりますが、各PCごとに表示されます。 これを表示されないようにする手順を教えてください。 ---- : ◆ 手順2:ファイルの保存場所を「信頼できる場所」にする(推奨) ファイルを 信頼済みフォルダ に置くと、そのフォルダ内のファイルは警告なしで開きます。
● 設定手順 Excel を開く [ファイル] → [オプション] [トラストセンター] → [トラストセンターの設定] [信頼できる場所] [新しい場所の追加] マクロファイルの保存フォルダを追加 チェック「サブフォルダーも信頼する」をオン これにより、そのフォルダ内のマクロは警告を出さずに実行されます。 : 以下略 : 🔍 まとめ(何をするのがベストか?) 方法 警告を消せる? PCごとの設定? 推奨度 Excel 4.0 マクロを使わない ◎ 不要 ★★★★ 信頼できる場所に配置 ◎ 初回のみ必要 ★★★★ Excel 4.0 マクロを有効化 ◎ 必要 ★★★ GPOで全PC統一 ◎ 不要 ★★★★★(企業環境向け) (英愛) 2025/11/29(土) 10:20:19
VBAエディタの仕様です。
プロシージャの堺であることを示しています。
「VBA プロシージャ」で調べてみてください。
>追加と転記はされるのですが、エクセルマクロをひらくとセキュリティなのかトラストセンターのエラーがでます。
>マクロの設定でVBAマクロが有効な場合にExcel4.0マクロを有効にするとチェックをするとでなくなりますが、各PCごとに表示されます。
>この表示もでないようにしたいというのがあります。
「トラストセンターのエラー」という表現は個人的には直した方がよいと思ますが、、
「エラー」ではなく、「警告」です。
「本当にこのBookのマクロを実行できるようにしてよいですか?」
という事を警告しています。
なぜなら、VBAを使えばコンピュータウイルスを作ることが可能だからです。
この警告を出さないようにはできますが、それは、外部から
例えばメールなどの添付ファイルとかにウイルスが仕込まれていた時でも実行されてしまうからです。
Excelのオプションからトラストセンターの設定を確認してください。
トラストセンターの設定を開くとマクロの設定があるので、そちらでもコントロールできますが、
VBAマクロを有効にするは、Microsoftも推奨していません。
また、トラストセンターにある
信頼できる発行元
信頼できる場所
信頼済ドキュメント
でもコントロール可能です。
初心者の方であれば、このようなことを調べる事も
自分の実力をつける一歩になります。
調べてみてわからなければ、一つ一つ質問していくと
VBAの力がついてくると思います。
(匿名) 2025/11/29(土) 10:40:29
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.