[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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.