【Excel】横の表定義からINSERT文作成

横向けになっている表定義からINSERT文を作成します。
前提条件はコメントに記載の通り。
※DATE型に対するTO_DATEは手動。

1Sub SqlInsertCreate()
2'
3' SqlInsertCreate Macro
4'
5' テーブル名、項目名、値からINSERT文を自動生成します。
6'
7' A1:テーブル名
8' A2~C2:項目名
9' A3~C3:値
10' 上記状態の時にE2を選択し、マクロを実行する。
11 
12    '//=====項目用INSERT文作成===============================
13    'セルをアクティブにする。
14    ActiveCell.Offset(0, 0).Select
15 
16    'アクティブセル列数を取得する。
17    Dim activCellNoCol As Long
18    activCellNoCol = ActiveCell.Column
19 
20    'ループで利用する変数を宣言する。
21    Dim i As Long
22    Dim tmpStrCol As String
23 
24    'アクティブセル列数-2から列数が2になるまで繰り返す
25    For i = activCellNoCol - 2 To 2 Step -1
26        tmpStrCol = tmpStrCol & "RC[-" & i & "]&"",""&"
27    Next i
28 
29    '項目用INSERT文を作成する。
30    Dim tmpInsertCol As String
31    tmpInsertCol = "=" & Left(tmpStrCol, Len(tmpStrCol) - 5) & "&"") VALUES ("""
32    ActiveCell.Formula = tmpInsertCol
33 
34 
35 
36    '//=====値用INSERT文作成===============================
37    'セルをアクティブにする。
38    ActiveCell.Offset(1, 0).Select
39 
40    'アクティブセル列数を取得する。
41    Dim activCellNoVal As Long
42    activCellNoVal = ActiveCell.Column
43 
44    'ループで利用する変数を宣言する。
45    Dim j As Long
46    Dim tmpStrVal As String
47 
48    'アクティブセル列数-2から列数が2になるまで繰り返す
49    For j = activCellNoVal - 2 To 2 Step -1
50        tmpStrVal = tmpStrVal & "RC[-" & j & "]&""','""&"
51    Next j
52 
53    '値用INSERT文を作成する。
54    Dim tmpInsertVal As String
55    tmpInsertVal = "=""'""&" & Left(tmpStrVal, Len(tmpStrVal) - 7) & "&""');"""
56    ActiveCell.Formula = tmpInsertVal
57 
58 
59    '//=====テーブル用INSERT文作成===============================
60    'セルをアクティブにする。
61    ActiveCell.Offset(-2, 0).Select
62 
63    'アクティブセル列数を取得する。
64    Dim activCellNoTbl As Long
65    activCellNoTbl = ActiveCell.Column
66 
67    'テーブル名の位置を求める。
68    Dim tblNameNo As String
69    tblNameNo = activCellNoTbl - 2
70 
71    Dim tmpInsertTbl As String
72    tmpInsertTbl = "=""INSERT INTO ""&RC[-" & tblNameNo & "]&"" ("""
73    ActiveCell.Formula = tmpInsertTbl
74 
75 
76    'セルを初期値に戻す。
77    ActiveCell.Offset(1, 0).Select
78End Sub

【Excel】縦の表定義から横の表定義に変換

現場では表定義は縦形式が多いですが、
エビデンスや他作業時は横形式の方が良い場合もあるので、マクロで変換します。

1Sub TblDefConversion()
2'
3' TblDefConversion Macro
4'
5' テーブル定義を縦から横に変換する。
6     
7    ' 変換後のエクセル用変数を宣言する。
8    Dim newBook As String
9    Dim NewWorkSheet As Worksheet
10 
11    ' 変換後のエクセルを追加する。
12    Workbooks.Add
13    newBook = ActiveWorkbook.Name
14 
15    ' 変換前のエクセル用変数を宣言する。
16    Dim oldWorkBook As Workbook
17    Set oldWorkBook = Workbooks("Book1.xlsx")
18    Dim oldWorkSheet As Worksheet
19    Dim tblNameRowPoint As Long   ' テーブル名が存在する行数
20    Dim tblNameCellPoint As Long  ' テーブル名が存在する列数
21    tblNameRowPoint = 4
22    tblNameCellPoint = 21
23    Dim colNameLogicalRowPoint As Long   ' 項目名(論理名)が存在する行数
24    Dim colNameLogicalCellPoint As Long  ' 項目名(論理名)が存在する列数
25    Dim colNamePhysicalRowPoint As Long  ' 項目名(物理名)が存在する行数
26    Dim colNamePhysicalCellPoint As Long ' 項目名(物理名)が存在する列数
27    Dim colTypeRowPoint As Long          ' 型が存在する行数
28    Dim colTypeCellPoint As Long         ' 型が存在する列数
29    Dim colSizeRowPoint As Long          ' サイズが存在する行数
30    Dim colSizeCellPoint As Long         ' サイズが存在する列数
31    colNameLogicalRowPoint = 9
32    colNameLogicalCellPoint = 2
33    colNamePhysicalRowPoint = colNameLogicalRowPoint
34    colNamePhysicalCellPoint = 13
35    colTypeRowPoint = colNameLogicalRowPoint
36    colTypeCellPoint = 24
37    colSizeRowPoint = colNameLogicalRowPoint
38    colSizeCellPoint = 28
39 
40    ' 変換前のエクセルシート分繰り返す。
41    For Each oldWorkSheet In oldWorkBook.Worksheets
42 
43        ' 変換後のエクセルシートとA1セルに変換前のエクセルシート名を設定する。
44        ' エクセルでは関数に()をつけると戻り値を伴う。
45        Workbooks(newBook).Activate
46        Set NewWorkSheet = Worksheets.Add()
47        MsgBox oldWorkSheet.Cells(tblNameRowPoint, tblNameCellPoint).Value
48        NewWorkSheet.Name = oldWorkSheet.Cells(tblNameRowPoint, tblNameCellPoint).Value
49        Cells(1, 1).Value = oldWorkSheet.Cells(tblNameRowPoint, tblNameCellPoint).Value
50         
51        ' 変換前エクセルの項目名の最初と最後を設定する。
52        oldWorkBook.Activate
53        oldWorkSheet.Activate
54        Dim i As Long
55        Dim MaxRow As Long
56        MaxRow = oldWorkSheet.Cells(Rows.Count, colNameLogicalCellPoint).End(xlUp).Row
57         
58        ' 変換前エクセルの項目名の最初から最後までを繰り返す。
59        For i = colNameLogicalRowPoint To MaxRow
60 
61            ' 項目名(論理名)、項目名(物理名)、型、サイズを取得する。
62            Dim colNameLogical As String
63            Dim colNamePhysical As String
64            Dim colType As String
65            Dim colSize As String
66            colNameLogical = Cells(i, colNameLogicalCellPoint).Value
67            colNamePhysical = Cells(i, colNamePhysicalCellPoint).Value
68            colType = Cells(i, colTypeCellPoint).Value
69            colSize = Cells(i, colSizeCellPoint).Value
70 
71            ' 変換後のエクセルに各々の値を取得する。
72            Workbooks(newBook).Activate
73            NewWorkSheet.Cells(2, i - colNameLogicalRowPoint + 1).Value = colNameLogical
74            NewWorkSheet.Cells(3, i - colNamePhysicalRowPoint + 1).Value = colNamePhysical
75            NewWorkSheet.Cells(4, i - colTypeRowPoint + 1).Value = colType
76            NewWorkSheet.Cells(5, i - colSizeRowPoint + 1).Value = colSize
77 
78            ' 変換前のエクセルをアクティブにしておく。
79            oldWorkBook.Activate
80 
81        Next i
82    Next oldWorkSheet
83 
84End Sub

【Excel】印刷初期設定

納品用に横印刷、左上にファイル名、右上に日付、
真ん中下にページ数/総ページ数を設定します。
※縦印刷は未記載。

1Sub PageSetting()
2'
3' PageSetting Macro
4'
5' シートの初期設定を行います。
6'
7    ' 印刷初期設定を行う。
8    ' 印刷高速設定をfalseにして設定する。
9    Application.PrintCommunication = False
10    With ActiveSheet.PageSetup
11        .CenterHorizontally = False
12        .CenterVertically = False
13        .Orientation = xlLandscape
14        .Draft = False
15        .PaperSize = xlPaperA4
16        .FirstPageNumber = xlAutomatic
17        .Order = xlDownThenOver
18        .BlackAndWhite = False
19        .Zoom = False
20        .FitToPagesWide = 1
21        .FitToPagesTall = False
22        .PrintErrors = xlPrintErrorsDisplayed
23        .OddAndEvenPagesHeaderFooter = False
24        .DifferentFirstPageHeaderFooter = False
25        .ScaleWithDocHeaderFooter = True
26        .AlignMarginsHeaderFooter = True
27    End With
28    ' 印刷高速設定をtureに戻す。
29    Application.PrintCommunication = True
30 
31    ' 印刷高速設定を設定せずに設定する。(印刷高速設定を設定すると設定不可)
32    With ActiveSheet.PageSetup
33        .LeftHeader = "&F"
34        .CenterHeader = ""
35        .RightHeader = "&D"
36        .LeftFooter = ""
37        .CenterFooter = "&P/&N"
38        .RightFooter = ""
39        .LeftMargin = Application.InchesToPoints(0.708661417322835)
40        .RightMargin = Application.InchesToPoints(0.708661417322835)
41        .TopMargin = Application.InchesToPoints(0.748031496062992)
42        .BottomMargin = Application.InchesToPoints(0.748031496062992)
43        .HeaderMargin = Application.InchesToPoints(0.31496062992126)
44        .FooterMargin = Application.InchesToPoints(0.31496062992126)
45        .PrintHeadings = False
46        .PrintGridlines = False
47        .PrintComments = xlPrintNoComments
48        .PrintQuality = 600
49        .EvenPage.LeftHeader.Text = ""
50        .EvenPage.CenterHeader.Text = ""
51        .EvenPage.RightHeader.Text = ""
52        .EvenPage.LeftFooter.Text = ""
53        .EvenPage.CenterFooter.Text = ""
54        .EvenPage.RightFooter.Text = ""
55        .FirstPage.LeftHeader.Text = ""
56        .FirstPage.CenterHeader.Text = ""
57        .FirstPage.RightHeader.Text = ""
58        .FirstPage.LeftFooter.Text = ""
59        .FirstPage.CenterFooter.Text = ""
60        .FirstPage.RightFooter.Text = ""
61    End With
62 
63    ' 文字初期設定を行う。
64    Cells.Select
65    With Selection.Font
66        .Name = "MS Pゴシック"
67        .Size = 9
68        .Strikethrough = False
69        .Superscript = False
70        .Subscript = False
71        .OutlineFont = False
72        .Shadow = False
73        .Underline = xlUnderlineStyleNone
74        .ThemeColor = xlThemeColorLight1
75        .TintAndShade = 0
76        .ThemeFont = xlThemeFontNone
77    End With
78    Selection.NumberFormatLocal = "@"
79    Range("A1").Select
80 
81End Sub

【Excel】赤い太枠自動作成

設計書の記述内容を強調したり、
エビデンスの確認箇所を強調したりする際に
赤い太枠をよく使うのでマクロで作成します。

1Sub RedBox()
2'
3' RedBox Macro
4'
5' 赤い太枠四角線を作ります。
6 
7    ActiveSheet.Shapes.AddShape(msoShapeRectangle, Selection.Left, Selection.Top, 96.75, 96.75).Select
8 
9    Selection.ShapeRange.Line.Weight = 2.25
10    Selection.ShapeRange.Line.Visible = msoTrue
11    Selection.ShapeRange.Line.Style = msoLineSingle
12    Selection.ShapeRange.Line.ForeColor.SchemeColor = 10
13    Selection.ShapeRange.Line.Visible = msoTrue
14    Selection.ShapeRange.Fill.Visible = msoFlase
15 
16End Sub

【Excel】A1セル選択

納品物はA1セルにカーソルが選択されていないといけないことが多いので、
マクロでA1を選択します。

1Sub TopCursor()
2'
3' TopCursor Macro
4'
5' A1にカーソルを合わせます。
6'
7    ' 画面のチラつきの防止設定を行う。
8    Application.ScreenUpdating = False
9 
10    ' 全シート分繰り返す。
11    Dim Sht As Worksheet
12    For Each Sht In Worksheets
13        ' シートを選択する。
14        Sht.Select
15 
16        ' スクロールバーを上にする。
17        Dim i As Integer
18        For i = 1 To Windows(1).Panes.Count
19            Windows(1).Panes(i).ScrollColumn = 1
20            Windows(1).Panes(i).scrollRow = 1
21        Next i
22 
23        ' A1セルを選択する。
24        ActiveSheet.Cells(1, 1).Select
25    Next Sht
26 
27    ' 先頭シートを選択する。
28    Worksheets(1).Activate
29 
30    ' 画面のチラつきの防止設定を元に戻す。
31    Application.ScreenUpdating = True
32End Sub

【Excel】個人用マクロブック

エクセルでいつも使うマクロを個人用マクロブックに保存しました。
保存場所は下記の通り。

C:ユーザー(アカウント名)AppDateRoamingMicrosoftExcelXLSTARTPERSONAL.XLSB

マクロを記録する際に「マクロの保存先」で「個人用マクロブック」を選択すると保存可能。
保存すると新規エクセル立ち上げる度に「PERSONAL.XLSB」が表示されていて邪魔なので、
エクセルの「表示」-「ウィンドウ」-「表示しない」を選択し、非表示にします。