excelの便利マクロ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[excel2010 マクロVBA 導入 手順]]
#contents
エラー処理とかはしていないので条件によってはVBAのエラーが...
実行する前にセーブしておきましょう。
* excelの便利マクロ [#wee5bb42]
** キーに割り当てると便利 [#xdf113ce]
*** タイムスタンプを記録 [#b3cd742f]
日付と時刻をセルに入力します。
Sub timestamp2()
ActiveCell.FormulaR1C1 = "=NOW()"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xl...
False, Transpose:=False
End Sub
備考: 日付や時刻の挿入はそれぞれCtrl+":"やCtrl+";"ででき...
*** 新しいシートを固定幅フォントで作成 [#bc1c8469]
新しいシートを作成しフォントを固定幅、書式を文字列に設定...
Sub AddNewSheetFormatString()
Sheets.Add After:=Sheets(Sheets.Count)
Cells.Select
Selection.NumberFormatLocal = "@"
Cells.Select
With Selection.Font
.Name = "MS ゴシック"
.FontStyle = "標準"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Range("A1").Select
ActiveCell.FormulaR1C1 = "書式を文字列、MSゴシックに...
ActiveCell.Characters(1, 2).PhoneticCharacters = "シ...
ActiveCell.Characters(4, 3).PhoneticCharacters = "モ...
ActiveCell.Characters(15, 2).PhoneticCharacters = "...
End Sub
*** 最後のシートを選択 [#m397bcb7]
Sub SelectLastSheet()
Worksheets(Worksheets.Count).Select
End Sub
*** 最初のシートを選択 [#i90b44bb]
Sub SelectFirstSheet()
Worksheets(1).Select
End Sub
*** 次のシートを選択 [#ybdeead4]
以下のコードは不要 Ctrl+PageDown で一発だった。VBAだと
ActiveSheet.Next.Select 1行。
Sub SelectNextSheet()
Dim i As Integer
i = 1
For Each s In Worksheets
If Worksheets(i).Name = ActiveSheet.Name Then
Exit For
End If
i = i + 1
Next s
If i < Worksheets.Count Then
Worksheets(i + 1).Select
End If
End Sub
*** 前のシートを選択 [#ec655ee6]
同様にCtrl+PageUpでok。VBAでは
ActiveSheet.Previous.Select
Sub SelectPrevSheet()
Dim i As Integer
i = 1
For Each s In Worksheets
If Worksheets(i).Name = ActiveSheet.Name Then
Exit For
End If
i = i + 1
Next s
If Worksheets(i).Name = ActiveSheet.Name And i > 1 Then
Worksheets(i - 1).Select
End If
End Sub
*** 選択された領域を削除し上へ詰める [#q4b4b440]
Sub DeleteCellAndUp()
Selection.Delete Shift:=xlUp
End Sub
*** 現在行を削除 [#n60a9f1e]
Sub DeleteRow()
Rows(ActiveCell.Row).Select
Selection.Delete Shift:=xlUp
End Sub
*** 現在セルから下方向の一連のセルを右へ移動 [#m1457063]
Sub RowsToRight()
Range(Selection, Selection.End(xlDown)).Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlForma...
End Sub
*** 現在行の下に行を追加 [#p0d64136]
Sub InsertRowDown()
c = ActiveCell.Column
r = ActiveCell.Row
x = ActiveCell
Rows(ActiveCell.Row + 1).Select
Selection.Insert
Cells(r + 1, c).Select
End Sub
*** 現在行に行を追加 [#m8439eab]
Sub InsertRow()
c = ActiveCell.Column
r = ActiveCell.Row
x = ActiveCell
Rows(ActiveCell.Row).Select
Selection.Insert
Cells(r, c).Select
End Sub
*** 値を貼り付け [#o71a4ec6]
Sub PasteValues()
Selection.PasteSpecial Paste:=xlPasteValues, Operation...
SkipBlanks:=False, Transpose:=False
End Sub
** ブックの構成を整えるのに便利 [#ye0b7353]
*** シート一覧を作成 [#f4d23844]
カレントセルから下へシートの一覧を作成します。各シートのA...
Sub ListSheets()
Dim r As Integer
r = 0
For Each s In Worksheets
ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell.Offset...
SubAddress:="'" + s.Name + "'!A1", TextToDisplay:=s....
r = r + 1
Next s
End Sub
*** ファイル名一覧からシート一覧を作成 [#te91c136]
シート1のセルA1から絶対パス表記でのブック一覧からシート2...
Sub ListFilesAndSheets()
Dim bb As Workbook
Set bb = ActiveWorkbook
Worksheets(1).Select
Dim ss(999) As String
f = 1
r = 1
Do While Cells(f, 1).Value <> ""
fn = Cells(f, 1).Value
Workbooks.Open Filename:=fn, UpdateLinks:=False, Rea...
ns = Worksheets.Count
i = 0
For Each s In Worksheets
i = i + 1
ss(i) = s.Name
Next s
ActiveWorkbook.Close SaveChanges:=False
bb.Activate
Worksheets(2).Select
Cells(r, 1).Value = fn
r = r + 1
For i = 1 To ns
ActiveSheet.Hyperlinks.Add Anchor:=Cells(r, 2), ...
SubAddress:="'" + ss(i) + "'!A1", TextToDisplay:=ss(i)
r = r + 1
Next
Worksheets(1).Select
f = f + 1
Loop
End Sub
1番目と2番目のシートはこのマクロのためにあらかじめ用意し...
ファイル名一覧はコマンドプロンプトで
dir /b /s *.xls* > filelist.txt
するとテキストファイルとして得られるのでそれを張り付けて...
マクロでフォルダを指定できるようにするのがいいでしょう。
*** シート名の一括置き換え [#g0dfec18]
1番目のシートのA2に元のシート名、B3の新しいシート名のよう...
作ってください。マクロを実行するとシート名を一括で置き換...
Sub MovSheet()
r = 2
Do While Cells(r, 1).Value <> ""
ActiveWorkbook.Sheets(r).Name = " " & r
r = r + 1
Loop
r = r - 1
Do While r > 1
If Cells(r, 2).Value = "" Then
ActiveWorkbook.Sheets(r).Name = Cells(r, 1)
ElseIf Cells(r, 3).Value = "" Then
ActiveWorkbook.Sheets(r).Name = Cell...
ElseIf Cells(r, 4).Value = "" Then
Set wb = ActiveWorkbook
sn = Cells(r, 2)
ActiveWorkbook.Sheets(r).Name = sn
ActiveWorkbook.Sheets(r).Copy _
before:=Workbooks(Cells(r, 3).Value).Wor...
wb.Activate
ElseIf Cells(r, 4).Value = "MOVE" Then
Set wb = ActiveWorkbook
sn = Cells(r, 2)
ActiveWorkbook.Sheets(r).Name = sn
ActiveWorkbook.Sheets(r).Move _
before:=Workbooks(Cells(r, 3).Value).Wor...
wb.Activate
End If
r = r - 1
ActiveWorkbook.Sheets(1).Select
Loop
End Sub
C列にブック名を入力すると該当シートを指定されたブックにコ...
D列に"MOVE"と指定があると移動になります。
** その他 [#aa83003d]
*** 文字列を指定幅で分割 [#b32743c9]
[[文字列を指定幅で分割する]]
終了行:
[[excel2010 マクロVBA 導入 手順]]
#contents
エラー処理とかはしていないので条件によってはVBAのエラーが...
実行する前にセーブしておきましょう。
* excelの便利マクロ [#wee5bb42]
** キーに割り当てると便利 [#xdf113ce]
*** タイムスタンプを記録 [#b3cd742f]
日付と時刻をセルに入力します。
Sub timestamp2()
ActiveCell.FormulaR1C1 = "=NOW()"
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xl...
False, Transpose:=False
End Sub
備考: 日付や時刻の挿入はそれぞれCtrl+":"やCtrl+";"ででき...
*** 新しいシートを固定幅フォントで作成 [#bc1c8469]
新しいシートを作成しフォントを固定幅、書式を文字列に設定...
Sub AddNewSheetFormatString()
Sheets.Add After:=Sheets(Sheets.Count)
Cells.Select
Selection.NumberFormatLocal = "@"
Cells.Select
With Selection.Font
.Name = "MS ゴシック"
.FontStyle = "標準"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Range("A1").Select
ActiveCell.FormulaR1C1 = "書式を文字列、MSゴシックに...
ActiveCell.Characters(1, 2).PhoneticCharacters = "シ...
ActiveCell.Characters(4, 3).PhoneticCharacters = "モ...
ActiveCell.Characters(15, 2).PhoneticCharacters = "...
End Sub
*** 最後のシートを選択 [#m397bcb7]
Sub SelectLastSheet()
Worksheets(Worksheets.Count).Select
End Sub
*** 最初のシートを選択 [#i90b44bb]
Sub SelectFirstSheet()
Worksheets(1).Select
End Sub
*** 次のシートを選択 [#ybdeead4]
以下のコードは不要 Ctrl+PageDown で一発だった。VBAだと
ActiveSheet.Next.Select 1行。
Sub SelectNextSheet()
Dim i As Integer
i = 1
For Each s In Worksheets
If Worksheets(i).Name = ActiveSheet.Name Then
Exit For
End If
i = i + 1
Next s
If i < Worksheets.Count Then
Worksheets(i + 1).Select
End If
End Sub
*** 前のシートを選択 [#ec655ee6]
同様にCtrl+PageUpでok。VBAでは
ActiveSheet.Previous.Select
Sub SelectPrevSheet()
Dim i As Integer
i = 1
For Each s In Worksheets
If Worksheets(i).Name = ActiveSheet.Name Then
Exit For
End If
i = i + 1
Next s
If Worksheets(i).Name = ActiveSheet.Name And i > 1 Then
Worksheets(i - 1).Select
End If
End Sub
*** 選択された領域を削除し上へ詰める [#q4b4b440]
Sub DeleteCellAndUp()
Selection.Delete Shift:=xlUp
End Sub
*** 現在行を削除 [#n60a9f1e]
Sub DeleteRow()
Rows(ActiveCell.Row).Select
Selection.Delete Shift:=xlUp
End Sub
*** 現在セルから下方向の一連のセルを右へ移動 [#m1457063]
Sub RowsToRight()
Range(Selection, Selection.End(xlDown)).Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlForma...
End Sub
*** 現在行の下に行を追加 [#p0d64136]
Sub InsertRowDown()
c = ActiveCell.Column
r = ActiveCell.Row
x = ActiveCell
Rows(ActiveCell.Row + 1).Select
Selection.Insert
Cells(r + 1, c).Select
End Sub
*** 現在行に行を追加 [#m8439eab]
Sub InsertRow()
c = ActiveCell.Column
r = ActiveCell.Row
x = ActiveCell
Rows(ActiveCell.Row).Select
Selection.Insert
Cells(r, c).Select
End Sub
*** 値を貼り付け [#o71a4ec6]
Sub PasteValues()
Selection.PasteSpecial Paste:=xlPasteValues, Operation...
SkipBlanks:=False, Transpose:=False
End Sub
** ブックの構成を整えるのに便利 [#ye0b7353]
*** シート一覧を作成 [#f4d23844]
カレントセルから下へシートの一覧を作成します。各シートのA...
Sub ListSheets()
Dim r As Integer
r = 0
For Each s In Worksheets
ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell.Offset...
SubAddress:="'" + s.Name + "'!A1", TextToDisplay:=s....
r = r + 1
Next s
End Sub
*** ファイル名一覧からシート一覧を作成 [#te91c136]
シート1のセルA1から絶対パス表記でのブック一覧からシート2...
Sub ListFilesAndSheets()
Dim bb As Workbook
Set bb = ActiveWorkbook
Worksheets(1).Select
Dim ss(999) As String
f = 1
r = 1
Do While Cells(f, 1).Value <> ""
fn = Cells(f, 1).Value
Workbooks.Open Filename:=fn, UpdateLinks:=False, Rea...
ns = Worksheets.Count
i = 0
For Each s In Worksheets
i = i + 1
ss(i) = s.Name
Next s
ActiveWorkbook.Close SaveChanges:=False
bb.Activate
Worksheets(2).Select
Cells(r, 1).Value = fn
r = r + 1
For i = 1 To ns
ActiveSheet.Hyperlinks.Add Anchor:=Cells(r, 2), ...
SubAddress:="'" + ss(i) + "'!A1", TextToDisplay:=ss(i)
r = r + 1
Next
Worksheets(1).Select
f = f + 1
Loop
End Sub
1番目と2番目のシートはこのマクロのためにあらかじめ用意し...
ファイル名一覧はコマンドプロンプトで
dir /b /s *.xls* > filelist.txt
するとテキストファイルとして得られるのでそれを張り付けて...
マクロでフォルダを指定できるようにするのがいいでしょう。
*** シート名の一括置き換え [#g0dfec18]
1番目のシートのA2に元のシート名、B3の新しいシート名のよう...
作ってください。マクロを実行するとシート名を一括で置き換...
Sub MovSheet()
r = 2
Do While Cells(r, 1).Value <> ""
ActiveWorkbook.Sheets(r).Name = " " & r
r = r + 1
Loop
r = r - 1
Do While r > 1
If Cells(r, 2).Value = "" Then
ActiveWorkbook.Sheets(r).Name = Cells(r, 1)
ElseIf Cells(r, 3).Value = "" Then
ActiveWorkbook.Sheets(r).Name = Cell...
ElseIf Cells(r, 4).Value = "" Then
Set wb = ActiveWorkbook
sn = Cells(r, 2)
ActiveWorkbook.Sheets(r).Name = sn
ActiveWorkbook.Sheets(r).Copy _
before:=Workbooks(Cells(r, 3).Value).Wor...
wb.Activate
ElseIf Cells(r, 4).Value = "MOVE" Then
Set wb = ActiveWorkbook
sn = Cells(r, 2)
ActiveWorkbook.Sheets(r).Name = sn
ActiveWorkbook.Sheets(r).Move _
before:=Workbooks(Cells(r, 3).Value).Wor...
wb.Activate
End If
r = r - 1
ActiveWorkbook.Sheets(1).Select
Loop
End Sub
C列にブック名を入力すると該当シートを指定されたブックにコ...
D列に"MOVE"と指定があると移動になります。
** その他 [#aa83003d]
*** 文字列を指定幅で分割 [#b32743c9]
[[文字列を指定幅で分割する]]
ページ名: