2017年7月31日

【Excel】SQL Serverからデータを取得してシートに表示するマクロ


SQL Serverからデータを取得してシートに表示するマクロです。

まず、SQL Serverでこのようなデータが格納されていたとします。

テーブル名:T_Users

このデータを次のシートに格納してみます。

1行目には列名をあらかじめ入力しています。

では、実際のコードは次のようになります。
Sub GetSQLData()

    Dim cnn As New ADODB.Connection
    Dim cmd As ADODB.Command
    Dim rst As ADODB.Recordset
    Dim i As Integer
    
    cnn.Open "Driver={SQL Server}; Server=xxxxxx; Database=xxxxxx; UID=xxxxx; PWD=xxxxx;"
    
    Set cmd = New ADODB.Command
    
    With cmd
        .ActiveConnection = cnn
        .CommandText = "SELECT ID, EmployeeNumber, FirstName, LastName FROM T_Users"
        .CommandType = adCmdText
    End With
    
    'SQLを実行
    Set rst = cmd.Execute
    
    i = 2
    
    While rst.EOF = False
        'セルにデータを格納
        Cells(i, 1).Value = rst!ID
        Cells(i, 2).Value = rst!EmployeeNumber
        Cells(i, 3).Value = rst!FirstName
        Cells(i, 4).Value = rst!LastName
    
        'レコードを移動
        rst.MoveNext
        i = i + 1
    Wend
    
    rst.Close
    Set rst = Nothing
    Set cmd = Nothing
    cnn.Close
    Set cnn = Nothing
    
End Sub

実行結果



2017年7月30日

【Linux】Linux Mint のデスクトップにゴミ箱を表示させる方法





昨日、Linux Mintをちょっと使ってて気づいたのですが、デスクトップにゴミ箱が無いんですよね。

なーんでゴミ箱無いのかな~って思うんですけど、調べたらちゃんとゴミ箱を表示させる方法がありました。


まず、メニューの[設定]から[デスクトップの設定]を選択します。



すると、このような画面が出てきますので、「ゴミ箱」にチェックを入れるだけです。



チェック入れたらこのようなゴミ箱が表示されました。

ゴミ箱ぐらいデフォルトで表示されててもよさそうですけど、美的にあんまりよくないんで表示させとかないんでしょうかね。


<関連記事>
【Linux】Linux Mint のバージョンを確認する
【Linux】日本語入力がよく分からない。
Windows10マシンにデュアルブートでインストールしたLinux Mintを削除する方法
Windows10マシンにLinux Mintをインストールしてデュアルブート化してみた。
【Linux】Linux Mint にSQL Serverをインストールしてみた
【Linux】Linux Mint にPowerShellをインストールしてみた。


2017年7月29日

【Linux】Linux Mint にPowerShellをインストールしてみた。




Microsoftは昨年8月、PowerShellをオープンソース化し、MacやLinuxでも使えるようにしました。

MicrosoftがPowerShellをオープンソース化しLinuxやOS Xにも提供…Bash on Windowsとの差別化は? | TechCrunch Japan

ただ、残念なことにインストールできるのが64ビット版のLinuxだけなんですよね。

デュアルブートでインストールしているLinux Mintは32ビット版でしたのでインストールは断念していました。

しかし先日、Linux MintのVer.18.2がリリースされたのをきっかけに、デュアルブートを再構築し64ビット版のLinux Mintに変更しましたので、今日、試しにPowerShellをインストールしてみました。


では、そのインストール手順をご紹介します。

まあ、手順といっても非常に簡単です。

インストール

まず、GitHubのページに行きます。
https://github.com/PowerShell/PowerShell


そして、「Get PowerShell」というところから「Ubuntu 16.04」というのを探し、「Instructions」をクリックします。
(※今回は、Linux Mint 18.02を使用しているので、「Ubuntu 16.04」を選んでいます。)

すると、Ubuntu 16.04用のインストール手順が表示されますので、あとはそれにそって実行するだけです。

# 公開リポジトリのGPGキーをインポート
$ curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

# Microsoft Ubuntuリポジトリを登録
$ curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/microsoft.list

# パッケージリストを取得
$ sudo apt-get update

# PowerShellをインストール
$ sudo apt-get install -y powershell


起動

インストールまで出来たら、あとは「powershell」と打ち込めば起動できます。
$ powershell


Get-ChildItemを試してみる

ためしにGet-ChildItemを実行してみました。

Windowsと表示の仕方がまったく一緒ですね。ちょっと感動です。


終了

終了するときは「exit」と打ち込めば終了できます。
> exit


<関連記事>
Windows10マシンにデュアルブートでインストールしたLinux Mintを削除する方法
Windows10マシンにLinux Mintをインストールしてデュアルブート化してみた。
【Linux】Linux Mint にSQL Serverをインストールしてみた
Linux Mint にSophos Anti-Virus for Linux(Free Edition)を入れてみた
【Linux】Linux Mint のバージョンを確認する
【Linux】Linux MintでGRUBのメニューの順番を変える


2017年7月28日

【Excel】ユーザーからの入力を受け付けるダイアログボックスを表示するマクロ


InputBox関数を使うことで、ユーザーからの入力を受け付けるダイアログボックスを表示することが出来ます。

Sub ShowInputBox()

    Dim usr As String
    
    usr = InputBox("名前を入力してください。", "InputBox Title")
    
    If usr <> "" Then
        
        MsgBox "こんにちは、" & usr & "さん。"
    
    End If
    
End Sub
ユーザーが[キャンセル]ボタンをクリックすると長さ0の文字列("")が返されます。


実行結果

InputBoxが表示されたら、


文字を入力して[OK]をクリック。




<参考サイト>
InputBox 関数 | Office VBA 言語リファレンス


2017年7月27日

【Excel】数値をパーセント書式設定するマクロ


FormatPercent関数で数値をパーセント書式設定することができます。

Sub GetFormatPercent()

    MsgBox FormatPercent(0.12)
    
End Sub
第2引数以下の引数を省略すると、省略した引数の設定にはシステムの地域の設定が使用されます。

実行結果



表示する小数点以下の桁数を指定

第2引数に少数の桁数を指定できます。数値は四捨五入されるようです。
Sub GetFormatPercent()

    MsgBox FormatPercent(2 / 3, 2)
    
End Sub

実行結果



小数値に先行ゼロを表示するかどうかの指定

第3引数で小数値に先行ゼロを表示させるかどうかを指定できます。
Sub GetFormatPercent()

    MsgBox FormatPercent(0.005, 1, vbTrue)
    
End Sub
Trueを指定した場合。

実行結果


Sub GetFormatPercent()

    MsgBox FormatPercent(0.005, 1, vbFalse)
    
End Sub
Falseを指定した場合。

実行結果



負の値をカッコで囲むかどうかの指定

第4引数で負の値をカッコで囲むかの指定ができます。
Sub GetFormatPercent()

    MsgBox FormatPercent(-0.1, 0, vbTrue, vbTrue)

End Sub
Trueを指定。

実行結果

カッコで囲まれた形で表示されます。


区切り記号の表示

第5引数で桁の区切り記号を表示させるかどうかの指定が出来ます。
Sub GetFormatPercent()

    MsgBox FormatPercent(10, -1, vbTrue, vbTrue, vbFalse)

End Sub
Falseを指定。

実行結果

カンマが無い状態で表示されます。


<参考サイト>
FormatPercent 関数 | Office VBA 言語リファレンス


2017年7月26日

【Excel】数値を書式設定するマクロ


FormatNumber関数で数値を書式設定することができます。

Sub GetFormatNumber()

    MsgBox FormatNumber(1200)
    
End Sub
第2引数以下の引数を省略すると、省略した引数の設定にはシステムの地域の設定が使用されます。

実行結果



表示する小数点以下の桁数を指定

第2引数に少数の桁数を指定できます。数値は四捨五入されるようです。
Sub GetFormatNumber()

    MsgBox FormatNumber(200 / 3, 2)
    
End Sub

実行結果



小数値に先行ゼロを表示するかどうかの指定

第3引数で小数値に先行ゼロ(1以下の数値の場合の先頭の0という意味?)を表示させるかどうかを指定できます。
Sub GetFormatNumber()

    MsgBox FormatNumber(0.056, 3, vbTrue)
    
End Sub
Trueを指定した場合。

実行結果



Sub GetFormatNumber()

    MsgBox FormatNumber(0.056, 3, vbFalse)
    
End Sub
Falseを指定した場合。

実行結果



負の値をカッコで囲むかどうかの指定

第4引数で負の値をカッコで囲むかの指定ができます。
Sub GetFormatNumber()

    MsgBox FormatNumber(-100, 0, vbTrue, vbTrue)
    
End Sub
Trueを指定。

実行結果

カッコで囲まれた形で表示されます。


区切り記号の表示

第5引数で桁の区切り記号を表示させるかどうかの指定が出来ます。
Sub GetFormatNumber()

    MsgBox FormatNumber(1234567, 0, vbTrue, vbTrue, vbFalse)
    
End Sub
Falseを指定。

実行結果

カンマが無い状態で表示されます。



<参考サイト>
FormatNumber 関数 | Office VBA 言語リファレンス


2017年7月25日

【Excel】数値を通貨形式の書式で表示するマクロ


FormatCurrency関数で数値を通貨形式の書式で表示できます。

Sub GetFormatCurrency()

    MsgBox FormatCurrency(1200)
        
End Sub
通貨記号や位置は、システムの地域の設定によって決まります。
第2引数以下の引数を省略すると、省略した引数の設定にはシステムの地域の設定が使用されます。

実行結果



表示する小数点以下の桁数を指定

第2引数に少数の桁数を指定できます。数値は四捨五入されるようです。
Sub GetFormatCurrency()

    MsgBox FormatCurrency(200 / 3, 2)

End Sub

実行結果



小数値に先行ゼロを表示するかどうかの指定

第3引数で小数値に先行ゼロ(1以下の数値の場合の先頭の0という意味?)を表示させるかどうかを指定できます。
Sub GetFormatCurrency()

    MsgBox FormatCurrency(0.056, 3, vbTrue)

End Sub
Trueを指定した場合。

実行結果


Sub GetFormatCurrency()

    MsgBox FormatCurrency(0.056, 3, vbFalse)

End Sub
Falseを指定した場合。

実行結果



負の値をカッコで囲むかどうかの指定

第4引数で負の値をカッコで囲むかの指定ができます。
Sub GetFormatCurrency()

    MsgBox FormatCurrency(-100, -1, vbTrue, vbTrue)

End Sub
Trueを指定。

実行結果

カッコで囲まれた形で表示されます。


区切り記号の表示

第5引数で桁の区切り記号を表示させるかどうかの指定が出来ます。
Sub GetFormatCurrency()

    MsgBox FormatCurrency(1234567, -1, vbTrue, vbTrue, vbFalse)

End Sub
Falseを指定。

実行結果

カンマが無い状態で表示されます。



<参考サイト>
FormatCurrency 関数 | Office VBA 言語リファレンス

2017年7月24日

【Excel】日付や時刻を決まった書式で表示するマクロ


日付や時刻を決まった書式で表示するマクロです。

Sub GetFormatDateTime()

    MsgBox "vbGeneralDate   " & FormatDateTime(Now, vbGeneralDate) & vbCrLf & _
           "vbLongDate       " & FormatDateTime(Now, vbLongDate) & vbCrLf & _
           "vbShortDate      " & FormatDateTime(Now, vbShortDate) & vbCrLf & _
           "vbLongTime      " & FormatDateTime(Now, vbLongTime) & vbCrLf & _
           "vbShortTime      " & FormatDateTime(Now, vbShortTime) & vbCrLf
End Sub

実行結果



第2引数の設定値
定数概要
vbGeneralDate0日付と時刻の一方または両方
vbLongDate1長い日付形式
vbShortDate2短い日付形式
vbLongTime3長い時刻形式
vbShortTime4短い時刻形式


<参考サイト>
FormatDateTime 関数 | Office VBA 言語リファレンス

2017年7月23日

Windows10マシンにデュアルブートでインストールしたLinux Mintを削除する方法



現在、Windows10とLinux Mintをデュアルブートで使っているのですが、先日Linux Mint 18.2が公開されたということでインストールしてみました。

インストールは、現在インストールされているLinux Mintを一旦削除してからインストールしたのですが、デュアルブート環境でLinuxだけ削除するにはちょっと注意が必要ですので、その削除方法をまとめてみました。





2017年7月22日

【Excel】文字列から日付や時刻値を取得するマクロ


文字列から日付や時刻値を取得するマクロです。

DateValue

文字列から日付値を取得するには、DateValue関数を使います。
Sub GetDateValue()

    MsgBox Format(DateValue("2017/08/01"), "yyyy/mm/dd hh:nn:ss")

End Sub

実行結果

DateValueで日付値を求めた場合、時刻は00:00:00になります。


TimeValue

文字列から時刻値を取得するには、TimeValue関数を使います。
Sub GetTimeValue()

    MsgBox Format(TimeValue("10:10"), "yyyy/mm/dd hh:nn:ss")
    
End Sub

実行結果

TimeValueで時刻値を求めた場合、日付は1899/12/30になります。これはVBAで1899/12/30のシリアル値が0となっているためです。


<参考サイト>
DateValue 関数 | Office VBA 言語リファレンス
TimeValue 関数 | Office VBA 言語リファレンス

2017年7月21日

【Excel】日付や時刻の指定した部分を取得するマクロ(その2)


前回、DatePart関数を使った方法を紹介しましたが、日付や時刻の指定した部分を取得するには他にも方法があります。

年、月、日、時、分、秒、曜日を取得するには、それぞれ Year、Month、Day、Hour、Minute、Second、Weekday関数を使います。

Sub GetDateTimeElement()

    MsgBox "現在日時:" & Now & vbCrLf & vbCrLf & _
           "   年:" & Year(Now) & vbCrLf & _
           "   月:" & Month(Now) & vbCrLf & _
           "   日:" & Day(Now) & vbCrLf & _
           "   時:" & Hour(Now) & vbCrLf & _
           "   分:" & Minute(Now) & vbCrLf & _
           "   秒:" & Second(Now) & vbCrLf & _
           "  曜日:" & Weekday(Now)

End Sub

実行結果



<参考サイト>
Year 関数 | Office VBA 言語リファレンス
Month 関数 | Office VBA 言語リファレンス
Day 関数 | Office VBA 言語リファレンス
Hour 関数 | Office VBA 言語リファレンス
Minute 関数 | Office VBA 言語リファレンス
Second 関数 | Office VBA 言語リファレンス
Weekday 関数 | Office VBA 言語リファレンス

2017年7月20日

【Excel】日付や時刻の指定した部分を取得するマクロ


日付や時刻の指定した部分を取得するには、DatePart関数を使います。

Sub GetDatePart()

    MsgBox "現在日時:" & Now & vbCrLf & vbCrLf & _
           "   年:" & DatePart("yyyy", Now) & vbCrLf & _
           "   月:" & DatePart("m", Now) & vbCrLf & _
           "   日:" & DatePart("d", Now) & vbCrLf & _
           "   時:" & DatePart("h", Now) & vbCrLf & _
           "   分:" & DatePart("n", Now) & vbCrLf & _
           "   秒:" & DatePart("s", Now) & vbCrLf & _
           "  曜日:" & DatePart("w", Now) & vbCrLf & _
           "   週:" & DatePart("ww", Now) & vbCrLf & _
           " 四半期:" & DatePart("q", Now) & vbCrLf & _
           " 通算日:" & DatePart("y", Now)

End Sub
第1引数で取り出したい時間の間隔を指定します。この設定値については下記の表を参照してください。

実行結果



第1引数(時間間隔)の設定値
設定 説明
yyyy
q 四半期
m
y 通日
d
w 曜日
ww
h 時間
n
s



<参考サイト>
DatePart 関数 | Office VBA 言語リファレンス

2017年7月19日

【Excel】日付や時刻の差分を求めるマクロ


日付や時刻の差分を求めるには、DateDiff関数を使います。

たとえば、2017/7/1と2017/7/20の差分(日数)を求めるには、次のように記述します。
Sub GetDateTimeDiff()

    Dim dt1 As Date
    Dim dt2 As Date
    
    dt1 = CDate("2017/07/01")
    dt2 = CDate("2017/07/20")
    
    MsgBox DateDiff("d", dt1, dt2)
    
End Sub
第1引数で算出したい時間の間隔を指定します。この例では日数ですので"d"を指定しています。この設定値については下記の表を参照してください。

実行結果



東京オリンピック開幕まであと何日か?

ここでこのDateDiffを利用して、東京オリンピック開幕までの残り時間を求めてみたいと思います。
いろいろ方法はあると思いますが、ここでは開幕式の時刻(2020/7/24 20:00)までの秒数を求めてから日数、時間、分、秒を算出しています。
Sub GetTokyoOlympicsDiff()

    Dim timeSpan As Long
    
    '東京オリンピック開幕式までの残り時間(秒)を求める
    timeSpan = DateDiff("s", Now, "2020/7/24 20:00")
    
    Dim d As Integer
    Dim h As Integer
    Dim m As Integer
    Dim s As Integer

    '残り時間(秒)から日数、時間、分、秒を求める    
    d = Int(timeSpan / 86400)
    h = Int((timeSpan Mod 86400) / 3600)
    m = Int((timeSpan Mod 3600) / 60)
    s = (timeSpan Mod 3600) Mod 60
    
    MsgBox "東京オリンピック開幕まで、あと " & _
            d & "日" & _
            h & "時間" & _
            m & "分" & _
            s & "秒"

End Sub

実行結果





第1引数(時間間隔)の設定値
設定 説明
yyyy
q 四半期
m
y 通日
d
w 平日
ww
h 時間
n
s


<参考サイト>
DateDiff 関数 | Office VBA 言語リファレンス
2020年 東京オリンピックへのカウントダウン!

2017年7月18日

【Excel】日付や時刻を加減算するマクロ


日付や時刻を加減算するには、DateAdd関数を使います。

日付の減算

たとえば、昨日の日付を求めるには次のように記述します。
Sub GetDateAdd()

    MsgBox "現在日付:" & Now & vbCrLf & "減算日付:" & DateAdd("d", -1, Now)
    
End Sub
第1引数で加算または減算する時間のサイクル間隔を指定します。この例では日数ですので"d"を指定しています。この設定値については下記の表を参照してください。
減算したいときは、第2引数でマイナスの数字を指定します。

実行結果



時刻の加算

たとえば、2時間後の時刻を求めるには次のように記述します。
Sub GetTimeAdd()

    MsgBox "現在時刻:" & Now & vbCrLf & "加算時刻:" & DateAdd("h", 2, Now)
    
End Sub

実行結果




第1引数(追加時間のサイクル間隔)の設定値
設定 説明
yyyy
q 四半期
m
y 通日
d
w 平日
ww
h 時間
n
s


<参考サイト>
DateAdd 関数 | Office VBA 言語リファレンス