- ベストアンサー
VBAの記述方法
毎月下記のような処理をしたい。 (1). 30シートの中からその月に必要なシートのみを別ブックにコピーし作成する (2). (1)で作成したシートの不要行(A列B列)を削除する (3). (1)で作成したシートのマクロボタン(5個)を削除する (4). (1)で作成したシートのリンクを削除する(コピー元のリンクは保持) その為に下記のようなマクロを作ってみました Sub リンク解除() マクロ記録日 : 2006/3/4 ユーザー名 : isekaoru (1). ActiveWorkbook.ActiveSheet.Copy (2). Columns("A:B").Select Selection.Delete Shift:=xlToLeft (3). ActiveSheet.Shapes("AutoShape 4").Select Selection.Cut ActiveSheet.Shapes("AutoShape 5").Select Selection.Cut ActiveSheet.Shapes("AutoShape 3").Select Selection.Cut ActiveSheet.Shapes("AutoShape 2").Select Selection.Cut ActiveSheet.Shapes("AutoShape 1").Select Selection.Cut (4).ActiveWorkbook.BreakLink Name:= _ "C:\Documents and Settings\ isekaoru\My Documents\17年度計表 .xls" _ , Type:=xlExcelLinks Range("A1").Select End Sub 御教示頂きたき事 1.多数のブックに共通で使用出来るようにしたい 2.(2)~(3)のマクロ本来の記述方法 3.(4)の共通に使用出来る記述方法 * 編集(E)→リンクの設定(K)→リンクの編集画面のリンクの解除(B)をマクロに写したものです。 VBAの記述は出来ない初心者です、御指導宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
関連するQ&A
- エクセルVBAの記述方法の質問です。
エクセルです。12個のセルの文字列をオートシェープの吹き出しに順に表示させるマクロをつくりました。 Sub tenki2() Dim i As Integer Dim a As String For i = 1 To 12 a = Cells(i, 2).Value ActiveSheet.Shapes("AutoShape 4").Select Selection.Characters.Text = a Application.Wait Now + TimeValue("00:00:05") Next i End Sub これで思った通り表示されるのですが、できればオートシェープをセレクトしないようにしたいのです。 (シートを保護するため) それで ActiveSheet.Shapes("AutoShape 4").Select Selection.Characters.Text = a のところを ActiveSheet.Shapes("AutoShape 4").Characters.Text = a と変えたのですが、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」という実行時エラーがでてしまいました。書き方のどこがまずかったのでしょうか?ご教示いただければ幸いです。
- ベストアンサー
- オフィス系ソフト
- VBAのGroup化について
お世話になります。以下のマクロがうまく動きません。 ------------------------------------------------- Dim objShp1 As Shape For Each objShp1 In ActiveSheet.Shapes If objShp1.Name = "Picture 3" Then ActiveSheet.Shapes.Range(Array("A", "B", "Picture 3")).Select Selection.ShapeRange.Group.Select Selection.ShapeRange.ThreeD.RotationX = -180 Selection.ShapeRange.IncrementLeft 0 Selection.ShapeRange.IncrementTop 0 Else ActiveSheet.Shapes.Range(Array("A", "B")).Select Selection.ShapeRange.Group.Select <---------(1) Selection.ShapeRange.ThreeD.RotationX = -180 Selection.ShapeRange.IncrementLeft 0 Selection.ShapeRange.IncrementTop 0 End If Next ------------------------------------------------- このマクロは全体の一部分になりますが、(1)のところでエラーになります。 どこが間違っているのか、さっぱりわかりません。 すみませんが、お助けいただければ幸いです。
- 締切済み
- その他MS Office製品
- Excel(エクセル)で非表示シートをVBAで計算するには?
よろしくお願いします。 エクセルで1つのブックにAシート~Fシートまであるとします。 再計算させると、すべてのシートを再計算してしまうため時間がかかるので、マクロの自動記録を利用して「Aシート→Bシート→Cシート→Dシート→Eシート」と、必要なシートだけを順番に計算させる事で、処理時間短縮をさせる事をする事ができました。 EシートとFシートは表示させておいて、その他のA~Dシートは非表示にしました。 Eシートには、A~Dシートで計算した結果が表示されるようになっています。 ですが、A~Dシートを非表示にして作成したマクロを実行すると、エラーが出てしまい上手くできません。 A~Dシートを非表示にしていても、ブック全体を再計算させる事はできます。 非表示にしたシートをマクロで計算させるには、どのようにしたら良いでしょか? アドバイスをお願い致します。 登録したマクロは下記のようになっています。 Sub 計算() Sheets("Aシート").Select ActiveWorkbook.PrecisionAsDisplayed = False ActiveSheet.Calculate Sheets("Bシート").Select ActiveWorkbook.PrecisionAsDisplayed = False ActiveSheet.Calculate Sheets("Cシート").Select ActiveWorkbook.PrecisionAsDisplayed = False ActiveSheet.Calculate Sheets("Dシート").Select ActiveWorkbook.PrecisionAsDisplayed = False ActiveSheet.Calculate Sheets("Eシート").Select ActiveWorkbook.PrecisionAsDisplayed = False ActiveSheet.Calculate Sheets("Eシート").Select End Sub
- ベストアンサー
- オフィス系ソフト
- VBAで、エクセルワークシート上の図を選択・削除したい
VBAで、ワークシート上の図をすべて選択して削除するのは、どのように書いたら良いでしょうか?実際の図は一つなのですが、オートマクロで記述すると、 ActiveSheet.Shapes.Range(Array("Picture 3").Select のように、番号が変わってしまいます。
- ベストアンサー
- その他MS Office製品
- ExcelVBAで画像をシートに貼り付けたり、張り付いた画像を削除した
ExcelVBAで画像をシートに貼り付けたり、張り付いた画像を削除したりするとき マクロの自動記録で次のようにしています。 1.貼り付け ActiveSheet.Pictures.Insert(画像ファイル名).Select 2.削除 ActiveSheet.Shapes("Picture n").Select Selection.Cut "Picture n"のnは数値です。この数値がどんどんカウントアップされます。 カウントアップされると、このブックを閉じないで使い続けていると10万でも100万でもカウントアップされてしまうのでしょうか? "Picture n"ではなく、「画像ファイル名」とか、任意に設定した名称で指定することはできないでしょうか? よろしくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- マクロ実行時、非表示シートを表示させたくない
ファイル[testBOOK]の中に(sheet1)(sheet2)があり (sheet2)は非表示,ブック保護されています。 (sheet1)にあるマクロAAボタンで ・[図A]を非表示 ・[図B]を表示 ・マクロBBを実行 するようになっています。 --------------------------------------- Sub AA() '≪非表示≫ ActiveSheet.Shapes("図A").Visible = False '≪表示≫ ActiveSheet.Shapes("図B").Visible = True 'ブック保護解除 ActiveWorkbook.Unprotect 'マクロBB実行 Sheets("sheet2").Visible = True Sheets("sheet2").Select Application.Run "testBook.xlsm!BB" ActiveWindow.SelectedSheets.Visible = False 'ブック保護 ActiveWorkbook.Protect End Sub ---------------------------------------- マクロBBとは[sheet2]の中にある ・[図A]を非表示 ・[図B]を表示 です。 上記のマクロを実行させると(sheet2)が瞬間的に表示されてしまうのですが、 これを表示させないようにすることはできないでしょうか?
- ベストアンサー
- オフィス系ソフト
- EXCEL VBA これであっていますか?
エクセルに地図を貼り付け、その中のある地点Aから半径1キロ、2キロ、3キロといった具合に円を描いています。ある地点B、Cも同様に円があります。セルに“A” と入力した際に該当する地点の円(1キロ、2キロ、3キロの3種類)を赤く表示し、終了すると円が消える(線なしに変わる)ようにするために以下のようなVBAを組みました。が、円が2つしか赤くならなかったり、 ばあいによっては「インデックスが境界を超えています」とエラーが出たりします。 どうしたら良いか教えてください。 Sub iro() Dim i As Variant i = InputBox("表示する地点を指定してください", "地点指定") If i = "A" Then ActiveSheet.Shapes(1).Select ActiveSheet.Shapes(2).Select ActiveSheet.Shapes(3).Select Replace:=False hyoji MsgBox "表示を終了してよろしいですか", vbOKOnly ActiveSheet.Shapes(1).Select ActiveSheet.Shapes(2).Select ActiveSheet.Shapes(3).Select Replace:=False modosu ElseIf i = "B" Then ActiveSheet.Shapes(4).Select ActiveSheet.Shapes(5).Select ActiveSheet.Shapes(6).Select Replace:=False hyoji MsgBox "表示を終了してよろしいですか", vbOKOnly ActiveSheet.Shapes(4).Select ActiveSheet.Shapes(5).Select ActiveSheet.Shapes(6).Select Replace:=False Else MsgBox "指定した地点がありません", vbOKOnly End If End Sub Sub hyoji() Selection.ShapeRange.Line.Visible = msoTrue '「線なし」に設定されている場合、線を表示 Selection.ShapeRange.Line.ForeColor.SchemeColor = 10 Range("A1").Select End Sub Sub modosu() Selection.ShapeRange.Line.Visible = msoFalse '「線なし」に設定 Range("A1").Select End Sub
- ベストアンサー
- オフィス系ソフト
- 図形 Selectionが省略できない VBA
「タイトル」という名の図形はシート上に存在するのですが、 Sub a() ActiveSheet.Shapes.Range(Array("タイトル")).ShapeRange.Height = 110 End Sub Sub b() ActiveSheet.Shapes.Range(Array("タイトル")).Select Selection.ShapeRange.Height = 110 End Sub aだとエラーになりますが、 bだと正常に動きます。 SelectやSelectionは省略できるものだと思ってるのですが なぜaだとエラーになるのでしょうか? 一度図形をアクティブにする動作が必要なのですか?
- ベストアンサー
- オフィス系ソフト
- VBA シートをコピー後、ボタンにマクロ登録
お世話になっております。 Excel2003を使用しております。 分かる人にはすぐ分かる問題かもしれませんが、 良くわからないため教えて下さい。 シートを別ブックにコピーします。(ここまでは出来ています。) 元々あったボタンを選択し、 マクロを登録しなおそうとするも、上手く行かず… Dim StaticBook as Workbook と宣言し、 コピー先のブックを選別?できるようにしています。 そのため、シートをコピーした後に With StaticBook.ActiveSheet .Shapes("Button 1").Select Selection.OnAction = StaticBOOK.Name & "!Sheet2.保存_Click" .Shapes("Button 2").Select Selection.OnAction = StaticBOOK.Name & "!Sheet2.再編集_Click" .Range("A1").Select End With としてみたのですが、エラーが表示されます。 ButtonクラスのOnActionプロパティを設定できません。と表示されます。 元々、コピーすれば上手く動くとおもっていたのですが、 ボタンをクリックしたときの参照先が コピー元のブックのままになっておりこれの改善方法がしりたいのです。 調べてみてもあまり良く分からず… 回答お願い致します!
- ベストアンサー
- Excel(エクセル)
- excel vba
(1)下記のマクロに出てくるApplication.CutCopyMode = False というのは何でしょうか。 (2)また自分でマクロ記録してあるシートを、別のシートにコピーしたとき Application.CutCopyMode = False Selection.Copy というのが、付くときとつかないときがあったんですがなぜそのようなことがおきるのか。 (3)またSelection.Copyというのは何ですか。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2007/1/11 ユーザー名 : ××××× ' ' Workbooks.Open Filename:="C:\aaa\bbbbb\cccc\aaaa_1.xls" Columns("H:H").Select Application.CutCopyMode = False Selection.Cut Columns("E:E").Select Selection.Insert Shift:=xlToRight Columns("I:I").Select Selection.Cut Columns("G:G").Select Selection.Insert Shift:=xlToRight With Selection.Font .Name = "MS 明朝" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With ActiveSheet.PageSetup.PrintArea = "$A$1:$L$61" ActiveWorkbook.Save End Sub
- ベストアンサー
- オフィス系ソフト
お礼
御指導有難う御座いました。
補足
要領の得ない質問にに対し、長文の御指導、御叱責賜りました事厚く御礼申し上げます。 質問者としては、行と列を間違うなど大変なミスをしてしまいました。 深くお詫び申しげます。 初心者なのに、頭だけ・したいことだけ →御叱責の通りその最たるものです。 質問を私なりに表現すると、 → はい、その通りです。 個別実行で良いのでしょうか、→ はい >多数のブックに共通で使用出来るようにしたい 3.(4)の共通に使用出来る記述方法 (4).ActiveWorkbook.BreakLink Name:= _ "C:\Documents and Settings\ isekaoru\My Documents\17年度計表 .xls" _ , Type:=xlExcelLinks * 編集(E)→リンクの設定(K)→リンクの編集画面のリンクの解除(B)をマクロに写したものです。 この部分{ "C:\Documents and Settings\ isekaoru\My Documents\17年度計表 .xls" _}が 異なるブック名でも同じ名前で記述する事が可能でしょうかという意味です。 このブック(名称A)の1シートからコピーして新しいブックを作成する時、 新しいブックに、このブック名が記述されていますが、このリンクを解除したい。 次に、異なる名前のブック(名称B)を同様の処理をする時、 (名称A)のVBAを(名称B)に貼付けて処理をしたいという意味です。 ブックが異なる都度、変更しなくても良い代名詞のような記述の方法がありますかと言う意味です。 くどくなってしまい申し訳御座いません 個人的な事情(年齢等・・・)もあり、VBAで記述するような事は、これが最後だと思いますので、 方法が有るのか、無いのか、有れば記述を御教示下さい。 宜しく御願い致します。