[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAを使って作業自動化したい2』(らいち)
※以前に類似のご質問をさせて頂いた内容ですが、改めて教えて下さい。
下記の作業をVBAを使用して自動化したいのですが、全くのVBA初心者のため
わかりませんので、どなたか教えて下さい。
・管理No.を入力すると、LOOKUP関数で各項目のデータを表に表示
させる管理表ファイルがあります。(Excel2000、WindowsXP)
1)シート上に配置したボタンを押して、VBA起動
2)数値入力指示が出て、管理No.セル(例えばC2)に数値を入力
3)管理表だけを範囲指定(例えばB2:C16)コピーして、新規作成Sheet1に書式と
値だけをペーストする。
4)新規作成Sheet1のペースト基準位置はB2として、A,B,C各列の幅を
それぞれA列は0.5、B列は10、C列は50に変更
5)新規作成ファイル保存時のファイル名は「管理No.+文字.xls」、保存先は管理表ファイルと同フォルダ
6)保存後、入力している管理No.セルの数値を消去して、VBA終了
以上です。宜しくお願いします。
前回スレ [[20091119145021]]『VBAを使って作業自動化したい』(らいち)
前回の質問に対する回答者へのフォローをしてから 新規質問するのが筋じゃないかな??? (小市民)
1)ボタンにマクロを登録するのはVBAのコードが出来てからなので後回し 2)マクロ起動してからセル入力を促すのは入力するまでマクロを一時 中断するということか? マクロ実行後、ターゲットのセルに入力がない場合はメッセージ表示して 入力を促す、という仕様にするでしょうね、私なら。 InputBoxでも可能なんでしょうけれども、ヒューマンエラーを考慮する必要あり。 3)これはマクロの記録でコード作成。 4)これもマクロの記録でコード作成。 5)ここで、いきなり「新規作成ファイル」が出てくるけど、まっさらのファイルを 「名前をつけて保存」すると考えてよいのだろうか。 先のC2に入力する管理ナンバーがファイル名として無効な場合の回避方法も必要。 6)これもマクロの記録でコード作成。 記録で出来る部分は自分でやってみることです。 そして、どの部分が出来ないか、をはっきりさせるべきですね。 (みやほりん)(-_∂)b
早速、下記の通りにトライしてみましたが、
実行時エラー'1004'RangeクラスのSelectメソッドが失敗しました。
と表示され、14行目のRange("B2")Selectが黄色反転しました。
どこを直せば良いか、サッパリ分からないので教えて頂けないでしょうか。
よろしくお願いします。
Private Sub タグ作成_Click()
Dim InPt As Long
Dim SaveName As String
Dim wb As Workbook
Set wb = ThisWorkbook
InPt = Application.InputBox(prompt:="管理No.を入力", Type:=1)
If InPt = False Then Exit Sub
With wb.ActiveSheet
.Range("c3").Value = InPt
End With
Range("B2:C16").Select
Selection.Copy
Workbooks.Add
Range("B2").Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Columns("A:A").Select
Selection.ColumnWidth = 0.5
Columns("B:B").Select
Selection.ColumnWidth = 10
Columns("C:C").Select
Selection.ColumnWidth = 50
Application.CutCopyMode = False
ChDir "C:\Documents and Settings\123"
SaveName = "C:\Documents and Settings\123\" & InPt & "タグ.xls"
ActiveWorkbook.SaveAs Filename:= _
SaveName, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
Range("c3").Select
Selection.ClearContents
wb.Close False
Set wb = Nothing
End Sub
(らいち)
これでは?
Private Sub タグ作成_Click()
Dim InPt As Long
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
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
End With
SaveName = "C:\Documents and Settings\123\" & InPt & "タグ.xls"
ActiveWorkbook.SaveAs Filename:=SaveName, FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
wb.Close False
Set wb = Nothing
Set wkbk = Nothing
End Sub
1or8
いつもご丁寧に有難う御座います。
早速、トライしてみたところ、エラーは発生しなくなりました!
今回を機会にVBAの勉強をしてみたいと思います。
また分からない点がありました時には、教えて下さい。
(らいち)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.