|
とりあえず、下記の通りにコードを追加してみたら
うまくいきました!有難う御座いました。
CutCopyModeは入れた方がいいのでしょうか。
Private Sub タグ作成_Click()
Dim InPt As Long
Dim c As Object
Dim myKey As String
Dim SaveName As String
Dim wb As Workbook, wkbk As Workbook
Set wb = ThisWorkbook
InPt = Application.InputBox(prompt:="No.を入力して下さい。", Type:=1)
If InPt = False Then Exit Sub
Application.ScreenUpdating = False
ActiveSheet.Unprotect
myKey = InPt
With ActiveSheet.Range("$c$5:$c$3000")
Set c = .Find(What:=myKey, LookIn:=xlValues, lookat:=xlWhole, _
SearchOrder:=xlByColumns, MatchByte:=False)
If c Is Nothing Then
MsgBox "No." & InPt & "は登録されていません。"
Else
ThisWorkbook.Sheets("タグ").Visible = True
Sheets("タグ").Activate
With wb.ActiveSheet
.Range("c3").Value = InPt
.Range("B2:C16").Copy
End With
Application.EnableEvents = False
Set wkbk = Workbooks.Add
With wkbk.ActiveSheet
.Range("B2").PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
.Range("B2").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
.Columns("A:A").ColumnWidth = 0.5
.Columns("B:B").ColumnWidth = 10
.Columns("C:C").ColumnWidth = 50
.Columns("d:d").ColumnWidth = 0.5
.Rows("1:1").RowHeight = 5
.Rows("17:17").RowHeight = 5
.Columns("E:IV").EntireColumn.Hidden = True
.Rows("18:65536").EntireRow.Hidden = True
End With
With ActiveWindow
.DisplayGridlines = False
.DisplayHeadings = False
.DisplayOutline = False
.DisplayZeros = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
End With
SaveName = "C:\Documents and Settings\123\デスクトップ\" & InPt & "タグ.xls"
Application.DisplayAlerts = False
ActiveSheet.Range("c3").Locked = True
ActiveSheet.Protect password:="1234"
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveWorkbook.SaveAs Filename:=SaveName, FileFormat:=xlNormal, password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
wkbk.Close False
Sheets("タグ").Activate
ThisWorkbook.Activesheet.Range("C3").ClearContents
ThisWorkbook.Sheets("タグ").Visible = xlSheetVeryHidden
Sheets("台帳").Activate
MsgBox "タグ作成しました。"
Set wb = Nothing
Set wkbk = Nothing
Application.EnableEvents = True
End If
End With
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
▼らいち さん:
>nさん、ご丁寧な説明を頂き、ありがとうございます。
>全くの初心者で申し訳ありません。ご指摘の内容について
>どこを修正したら良いか分からなかったので、教えて頂ける
>と助かります。
>「台帳」シートに記載したVBAを下記します。
>CutCopyModeも記載していなかったのも、問題だったのでしょうか。
>
>Private Sub タグ作成_Click()
>Dim InPt As Long
>Dim c As Object
>Dim myKey As String
> Dim SaveName As String
> Dim wb As Workbook, wkbk As Workbook
> Set wb = ThisWorkbook
> InPt = Application.InputBox(prompt:="No.を入力して下さい。", Type:=1)
> If InPt = False Then Exit Sub
>Application.ScreenUpdating = False
>ActiveSheet.Unprotect
>myKey = InPt
>With ActiveSheet.Range("$c$5:$c$3000")
>Set c = .Find(What:=myKey, LookIn:=xlValues, lookat:=xlWhole, _
>SearchOrder:=xlByColumns, MatchByte:=False)
>If c Is Nothing Then
>MsgBox "No." & InPt & "は登録されていません。"
>Else
> ThisWorkbook.Sheets("タグ").Visible = True
> Sheets("タグ").Activate
> With wb.ActiveSheet
> .Range("c3").Value = InPt
> .Range("B2:C16").Copy
> End With
> Set wkbk = Workbooks.Add
> With wkbk.ActiveSheet
> .Range("B2").PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
> .Range("B2").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
> .Columns("A:A").ColumnWidth = 0.5
> .Columns("B:B").ColumnWidth = 10
> .Columns("C:C").ColumnWidth = 50
> .Columns("d:d").ColumnWidth = 0.5
> .Rows("1:1").RowHeight = 5
> .Rows("17:17").RowHeight = 5
> .Columns("E:IV").EntireColumn.Hidden = True
> .Rows("18:65536").EntireRow.Hidden = True
> End With
> With ActiveWindow
> .DisplayGridlines = False
> .DisplayHeadings = False
> .DisplayOutline = False
> .DisplayZeros = False
> .DisplayHorizontalScrollBar = False
> .DisplayVerticalScrollBar = False
> .DisplayWorkbookTabs = False
> End With
> SaveName = "C:\Documents and Settings\123\デスクトップ\" & InPt & "タグ.xls"
> Application.DisplayAlerts = False
> ActiveSheet.Range("c3").Locked = True
> ActiveSheet.Protect password:="1234"
> ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
> ActiveWorkbook.SaveAs Filename:=SaveName, FileFormat:=xlNormal, password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
> wkbk.Close False
> Sheets("タグ").Activate
> Selection.ClearContents
> ThisWorkbook.Sheets("タグ").Visible = xlSheetVeryHidden
> Sheets("台帳").Activate
> MsgBox "タグ作成しました。"
> Set wb = Nothing
> Set wkbk = Nothing
>End If
>End With
>ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
>End Sub
>▼n さん:
>>DisplayFormulaBarとDisplayStatusBarの設定時にCutCopyModeがFalseになるのが原因です。
>>
>>>表内のデータをコピーして、新規bookを開き、形式選択で書式と
>>>値を貼り付けた後、指定した名称で保存するというVBAを組んでいるのですが、
>>>そこでエラーが発生しました。
>>マクロで実行しているわけですから、その中でApplication.EnableEventsプロパティを制御して
>>Workbook_WindowDeactivateイベントが走らないようにすれば良いです。
>>
>>もしくは、
>>Sub test()
>> With Workbooks.Add(xlWBATWorksheet) 'ここでWindowDeactivateイベントが発生する
>> ThisWorkbook.Sheets("台帳").Range("A1").Copy
>> With .Sheets(1).Range("A1")
>> .PasteSpecial xlPasteValues
>> .PasteSpecial xlPasteFormats
>> End With
>> Application.CutCopyMode = False
>> .SaveAs "c:\temp\temp.xls"
>> .Close
>> End With
>>End Sub
>>このようにWindowDeactivateイベントの後でCopyメソッドを発行するような順番にすれば良いです。
>>基本的には、EnableEventsプロパティでの制御をおすすめします。
>>
>>#手作業でもコピー可能にしたい場合は、ひと工夫必要です。
|
|