温湿度と大気圧を Macに入れ グラフ化

はじめに

  • Macに温湿度と気圧のデータを取り込んで、グラフ表示を行います。今回はExcelマクロの部分です

エクセル マクロ

  • 出来上がり

  • マクロ

    • これは「マクロの記録」機能で手作業を記録したものです。表示するデータ系列や収集期間など、まだ追加や調整が必要だと思いますが、別の作業をしているうちに忘れてしまいそうなので、備忘録としてここに残しておきます

      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
      

最後に

ここまでご覧いただき、ありがとうございました。もし誤りがあれば、ご指摘いただけますと幸いです

プライバシーポリシー |ページトップへ

`