はじめに
エクセル マクロ
- 出来上がり
マクロ
これは「マクロの記録」機能で手作業を記録したものです。表示するデータ系列や収集期間など、まだ追加や調整が必要だと思いますが、別の作業をしているうちに忘れてしまいそうなので、備忘録としてここに残しておきます
Sub Macro7() '新規シート作成 ActiveWorkbook.Worksheets.Add 'CSV読み込み With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;/Applications/XAMPP/xamppfiles/htdocs/to/savedir/xiao.csv", Destination _ :=Range("$A$1")) .Name = "xiao" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .RefreshPeriod = False .TextFilePromptOnRefresh = False .TextFilePlatform = 10001 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFileSpaceDelimiter = False .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With '大気圧を1000引く Columns("C:C").Select Selection.Copy Application.CutCopyMode = False Range("K1").Select ActiveCell.FormulaR1C1 = "=RC[-8]-1000" '受信感度がマイナスなので絶対値変換する Range("L1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "=ABS(RC[-5])" '読み込んだデータ数を求める lastRow = Cells(1, 1).End(xlDown).Row '作成した、大気圧と受信感度の変換書式を全てのデータに反映 Range("K1:L1").Select Selection.AutoFill Destination:=Range("K1:L" & lastRow), Type:=xlFillDefault Columns("K:K").Select Selection.Copy Columns("C:C").Select Columns("B:B").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Columns("C:C").Select Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft 'K列を値としてコピー Columns("K:K").Select Selection.Copy Columns("L:L").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 'F列からK列まで削除 Columns("F:K").Select Range("K1").Activate Application.CutCopyMode = False Selection.Delete Shift:=xlToLeft '値の名称を1行目にいれる Rows("1:1").Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove Range("B1").Select ActiveCell.FormulaR1C1 = "pres" Range("C1").Select ActiveCell.FormulaR1C1 = "volt" Range("D1").Select ActiveCell.FormulaR1C1 = "temp" Range("E1").Select ActiveCell.FormulaR1C1 = "humi" Range("F1").Select ActiveCell.FormulaR1C1 = "rssi" '日付を数値に変換 Columns("A:A").Select Selection.NumberFormatLocal = "h:mm;@" 'グラフ作成 Columns("A:F").Select ActiveSheet.Shapes.AddChart2(227, xlLine).Select Selection.Left = 101 Selection.Top = 0 ActiveChart.ChartArea.Select ActiveSheet.Shapes("グラフ 1").IncrementLeft -149 ActiveSheet.Shapes("グラフ 1").IncrementTop -319 ActiveSheet.Shapes("グラフ 1").ScaleWidth 2.3138888889, msoFalse, _ msoScaleFromTopLeft ActiveSheet.Shapes("グラフ 1").ScaleHeight 3.3726851852, msoFalse, _ msoScaleFromTopLeft ActiveChart.Legend.Select Selection.Format.TextFrame2.TextRange.Font.Size = 18 ActiveChart.ChartArea.Select ActiveSheet.Shapes("グラフ 1").ScaleWidth 1.2412965186, msoFalse, _ msoScaleFromTopLeft ActiveSheet.Shapes("グラフ 1").ScaleHeight 1.2944406314, msoFalse, _ msoScaleFromTopLeft ActiveChart.Axes(xlValue).Select ActiveChart.Axes(xlValue).CrossesAt = 0 ActiveChart.Axes(xlValue).CrossesAt = -20 ActiveChart.Axes(xlValue).MinimumScale = -20 ActiveChart.Axes(xlValue).MaximumScale = 95 ActiveChart.Axes(xlValue).MinorUnit = 5 ActiveChart.ChartArea.Select ActiveChart.Axes(xlValue).Select ActiveChart.Axes(xlValue).HasMinorGridlines = True End Sub
最後に
ここまでご覧いただき、ありがとうございました。もし誤りがあれば、ご指摘いただけますと幸いです