• 虹色ミツバチ
  • freoカスタマイズメモ、テンプレート・プラグイン配布/officeTIPS
検索プラグイン

> Entry

保存するかどうかの確認ダイアログを表示しないでブックを閉じるマクロ

ブックを閉じる時には、下図のようにそのブックを保存するかどうか確認するダイアログが表示されます。

fileclose.jpg

これを表示しないでブックを閉じるマクロは下記のとおりです。

Sub BookClose()
    Application.DisplayAlerts = False
    ThisWorkbook.Close
    Application.DisplayAlerts = True
End Sub

 

続きを読む

ダイアログを表示して選択したファイルを開くマクロ

ダイアログを表示して選択したファイルを開くマクロはこんな感じです。

ダイアログを表示して選択したファイルがまだ開かれていなければ開く

同じファイル名のファイルが開かれていた場合は処理を中断します。

Sub SelectFileOpen()
'// 変数の定義
    Dim wbList As Workbook
    Dim flg As Boolean
    Dim filePass, fileName As Variant

'//開閉確認フラグの初期化
    flg = False

'//開こうとしているファイルパスとファイル名を変数に入れる
    filePass = Application.GetOpenFilename(Title:="開くファイルを選択してください。")

'//選択したファイルに対しての処理
    If filePass <> False Then
    '//ファイルが指定されれば続行する
        fileName = Dir(filePass)
    '//現在開いているワークブックを調べる
        For Each wbList In Workbooks
        '//現在開いているワークブック内に同ファイルがあればフラグを立たせる
            If wbList.Name = fileName Then
                flg = True
                Exit For
            End If
        Next wbList
        If flg = True Then
        '//メッセージを表示して中断。
            MsgBox("選択したファイルは既に開かれています。ファイルを閉じてやり直してください。")
        Else
        '//選択されたファイルを開く
            Workbooks.Open fileName
        End If
    Else
    '//メッセージを表示して中断
        MsgBox "ファイルが選択されませんでした。"
    End If
End Sub

ダイアログを表示して選択したファイルがテスト.csvであれば開く

ファイル名の頭に「テスト」という文字が含まれていない場合は処理を中断します

選択したファイルが開かれている場合はなにもしません(開いたままです)。

Sub SelectFileOpen()
'// 変数の定義
    Dim wbList As Workbook
    Dim flg As Boolean
    Dim filePass, fileName As Variant

'//開閉確認フラグの初期化
    flg = False

'//開こうとしているファイルパスとファイル名を変数に入れる
    filePass = Application.GetOpenFilename(Title:="開くファイルを選択してください。")

'//選択したファイルに対しての処理
    If filePass <> False Then
    '//ファイルが指定されれば続行する
        fileName = Dir(filePass)
    '//現在開いているワークブックを調べる
        For Each wbList In Workbooks
        '//現在開いているワークブック内に同ファイルがあればフラグを立たせる
            If wbList.Name = fileName Then
                flg = True
                Exit For
            End If
        Next wbList
    '//選択したファイルのファイル名を確認
        If Left(fileName, 3) <> "テスト" Then
        '//メッセージを表示して中断
            MsgBox "選択したファイルはテスト.csvではありません。"
            Exit Sub
        ElseIf flg = False Then
        '//選択されたファイルを開く
            Workbooks.Open fileName
        End If
    Else
    '//メッセージを表示して中断
        MsgBox "テスト.csvが選択されませんでした。"
        Exit Sub
    End If
End Sub

続きを読む

ExcelVBAで連番を振るマクロ

ExcelVBAで連番を振ってみます。

選択範囲内のセルに連番を振るマクロ

選択範囲内のセルに連番を振るには下記のようにしてください。

Sub insertNum1()
'=======================================
'選択範囲内のセルに連番を振るマクロ
'=======================================
ThisWorkbook.Activate
'//変数の定義
    Dim targetCell As Range  '連番を振るセルをtargetCellという変数(範囲)で定義
    Dim i As Long            '連番の初期値をiという変数(数値)で定義
    i = 1                    '連番の初期値に「1」を代入
'//選択範囲内での繰り返し処理
    For Each targetCell In Selection
    '//連番を振るセルの値を変更
        targetCell.Value = i
    '//連番の数を増やす
        i = i + 1
    Next
'//メッセージを表示して終了
    MsgBox ("A列に連番を振りました。")
End Sub

B列の最終行分A1セルから連番を振るマクロ

B列に歯抜けのないデータがある時、B列のB1セルから最終行までの数分A1セルから連番を振る方法は下記のとおりです。

Sub insertNum2()
'=======================================
'B列の最終行までA列に連番を振るマクロ
'=======================================
ThisWorkbook.Activate
'//変数の定義
    Dim targetCell As Range
    Dim maxRow, i As Long
'//B列の最終行を求めてmaxRow変数に値を代入
    If Len(ActiveSheet.Range("B1").Value) = 0 Then
        maxRow = 0
    ElseIf Len(ActiveSheet.Range("B2").Value) = 0 Then
        maxRow = 1
    Else
        maxRow = ActiveSheet.Range("B1").End(xlDown).Row
    End If
'//B列の最終行の取得結果に応じて作業を分岐
    If maxRow > 0 Then
    '//連番の初期値を設定
        i = 1
    '//選択範囲内での繰り返し処理
        For i = 1 To maxRow
        '//連番を振るセルの値を変更
            Range("A" & i).Value = i
        Next
    '//メッセージを表示して終了
        MsgBox ("A列に連番を振りました。")
    Else
    '//メッセージを表示して終了(エラー)
        MsgBox ("B列にデータがないので作業を中断します。")
    End If
End Sub

続きを読む

ExcelVBAで数値を文字列に変換する方法いろいろ

ExcelVBAで数値を文字列に変換する方法はいろいろあります。

変数の型を利用する方法

変数の型を文字列(String)にしていた場合、その変数に代入された値は文字列として変換されます。

Sub strChenge1()
    Dim strNum As String          'strNumを文字列型変数として定義
    num = 0                       'numに文字列に変換したい数値を定義
    strNum = num                  'numをstrNumに代入
    MsgBox (strNum)               'strNumを表示([0]が表示される)
    MsgBox VarType(strNum)        'strNumの型を確認(8=文字列が表示される)
End Sub

CStr関数を利用する方法

CStr関数は、引数を評価して文字列型を返します。

Sub strChenge2()
    num = 0                       'numに文字列に変換したい数値を代入
    strNum = CStr(num)            'numを文字列に変換してstrNumとして代入
    MsgBox (strNum)               'strNumを表示([0]が表示される)
    MsgBox VarType(strNum)        'strNumの型を確認([8=文字列]が表示される)
End Sub

Format関数を利用する方法

Format関数は引数の表示書式を変更する関数です。
文字列として表示したい場合は[@]を使います。

Sub strChenge3()
    num = 0                       'numに文字列に変換したい数値を定義
    strNum = Format(num, "@")     'numを文字列に変換してstrNumとして定義
    MsgBox (strNum)               'strNumを表示([0]が表示される)
    MsgBox VarType(strNum)        'strNumの型を確認(8=文字列が表示される)
End Sub

参考URL

 

続きを読む

サクラエディタで正規表現で改行を置換する

サクラエディタの正規表現を使って改行を置換します。
今回は、文頭の改行のみを置換して消去します。

  1. サクラエディタを起動する
  2. ctrl+Rで置換メニューを呼び出す
  3. 置換前 → 「^\r\n」(「」は不要です。「^」をつけると「文頭の」という意味になります。)
  4. 置換後 → 「」(なにも入力しません。「」は不要です)
    正規表現のチェックボックスにチェックを入れる
    sakura_rn.png
  5. すべて置換をクリック

全ての改行を削除したい場合は「\r\n」を置換してください。

続きを読む

レーダーチャートの値とX軸の軸ラベルを変更する方法

下記のようなデータがあるとします。

20151014chart.png

 

VBAでシート内のレーダーチャートの値とX軸の軸ラベルを変更する方法は以下のとおりです。

現在のシートにあるレーダーチャートに1つのチャートしか入れない場合

20151014chartA.png

上記図のように、1つのチャートしか展開しない場合は下記の通りです。

Sub sample1()
    '//レーダーチャート内容変更
    ActiveSheet.ChartObjects(1).Chart.SetSourceData Source:=ActiveSheet.Range("$A$2:$E2")    '1人目のデータを挿入
    ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).XValues = "=$A$1:$E$1"             'X軸のラベルを変更
End Sub

現在のシートにあるレーダーチャートに2つ以上のチャートを入れる場合

20151014chartB.png

上記図のように、2つ以上のチャートを展開する場合は下記の通りです。

Sub sample2()
    '//レーダーチャート内容変更
    ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).Values = "=$A$2:$E$2"   '1人目のデータを挿入
    ActiveSheet.ChartObjects(1).Chart.SeriesCollection(2).Values = "=$A$3:$E$3"   '2人目のデータを挿入
    ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).XValues = "=$A$1:$E$1"  'X軸のラベルを変更
End Sub

現在のシートにあるレーダーチャートに1つずつのデータを入れて別シートにコピーする作業を繰り返す場合

1行目のデータをX軸のラベルとして、2行目から10行目のデータを、レーダーチャートに展開し新しいシートにコピーする作業を繰り返す時の書き方は下記のとおりです。

Sub sample3()
    Dim i As Long
    For i 2 to 10
        '//1人目のデータを挿入
            ActiveSheet.ChartObjects(1).Chart.SetSourceData Source:=ActiveSheet.Range("$A:" i & "$E:" & i)
        '//X軸のラベルを変更
            ActiveSheet.ChartObjects(1).Chart.SeriesCollection(1).XValues = "=$A$1:$E$1"
        '//ワークシートをコピーする
            ActiveSheet.Copy After:=Worksheets(Worksheets(Worksheets.Count))
        '//最初のシートに戻る
            Worksheets(1).Activate
    Next i
End Sub

続きを読む

文字列内の空白(半角スペース・全角スペース)を全て削除する方法

Excelの文字列を操作する関数は様々あります。
空白を取り除く関数として有名なのはTRIM関数です。

例えば、A1セルに入力された文字列から空白(半角スペース・全角スペース)を取り除く場合は、

=TRIM(A1)

のように利用しますが、TRIM関数は先頭の空白はすべて削除するものの文字間の空白は1個残すとかいうわけのわからない親切心を出してくれるので、文字列内の全ての空白を削除したい場合は、SUBSTITUTE関数を利用します。

SUBTITUTE関数は文字列内から特定の文字列を検索し、代わりの文字列に変換する関数です。

例えば、A1セルに入力された文字列から空白(半角スペース・全角スペース)を取り除く場合は、

=SUBTITUTE(SUBTITUTE(A1," ","")," ","")

のようにして利用します。
半角スペース(" ")と全角スペース(" ")で2回置換するのがポイントです。

続きを読む

アルバムレスポンスメール通知プラグイン

当サイトで配布しているスケジュールレスポンスのアルバムレスポンス記事が投稿された時に指定されたメールアドレス宛にメール通知を行うプラグインです。

特徴

  • アルバムプラグインアルバムレスポンスプラグインを設置していることが必要です。
  • アルバムレスポンス投稿時のメール通知の送信先アドレスを管理画面→設定管理→プラグインの設定→アルバムレスポンスメール通知プラグインで設定できます。
  • 管理者あるいは投稿者が記事投稿をした場合(freo/index.php/albumres/admin_formから記事が投稿された場合)はメールは通知されません。

ダウンロード

導入方法

  1. 上記ファイルをDLして解凍する。
  2. [freo]フォルダに[configs][libs][mails]フォルダをアップロードする。
  3. 管理画面の[設定管理]―[プラグインの設定]―[アルバムレスポンスメール通知プラグイン]で各種設定を行う。
  4. [freo/index.php/album/form]を利用して記事を投稿し、メールが配信されるか確認してください。

更新履歴

2015/09/11
配布開始
2017/08/27
メールを送信できない場合がある不具合を解消しました。
config.albumres_inform.php
end.albumres_inform.php
上記ファイルを更新してください。

続きを読む

アルバムレスポンススパム対策プラグイン

当サイトで配布しているアルバムレスポンスプラグインにスパム対策機能をつけるプラグインです。

ダウンロード

導入方法

  1. アルバムレスポンスプラグインを実装しておく。
  2. 上記ファイルをDLして解凍する。
  3. あらかじめ管理者でfreoにログインしておく。
  4. [configs][libs]フォルダ[freo]フォルダ内にアップロードする。
  5. 管理画面の[設定管理]―[プラグインの設定]―[アルバムレスポンススパム対策プラグイン]で各種設定を行う。

更新履歴

2015/09/16 配布開始
   
   

 

続きを読む

アルバムレスポンスプラグイン

当サイトで配布しているアルバムプラグインにレスポンス(コメント)をつけるためのプラグインです。

同梱されているプラグイン
  • アルバムレスポンスプラグイン  ………………  本体
  • アルバムレスポンス件数表示プラグイン  …  親記事引用用
  • 新着アルバムレスポンスプラグイン  …………  新着アルバムレスポンス表示用

特徴

表示方法
  • アルバム記事にレスポンスをつけられます。
  • レスポンスをつける権限を「誰でも登録可能」か「ユーザーのみ登録可能」か選択できます。
  • アルバム詳細画面[freo/index.php/album/view/アルバムID]でアルバムレスポンス一覧を表示できます。
  • 一覧画面・管理画面で表示できる記事件数をプラグイン管理画面で設定できます。
  • 一覧画面で表示する記事の昇順と降順を選択できます。
閲覧制限について
  • レスポンスの投稿者は、閲覧制限を設定することができます。
  • 閲覧制限を使用できるようにするかどうかは、管理画面→設定管理→アルバムレスポンスプラグインの設定で設定できます。
  • 上記ページで、閲覧制限で制限していた場合の名前・本文を設定できます。
  • 上記設定項目に[$name][$text]と入力すると、登録されている内容が制限されずに表示されます。
  • 管理者のみ表示・ユーザーのみ表示・閲覧制限無しから制限の種類を選択できます。

ダウンロード

albumres_32877_1_0_2.zip

導入方法

  1. あらかじめアルバムプラグインを実装しておく。
  2. あらかじめ管理者でfreoにログインしておく。
  3. [freo]フォルダ[css][configs][libs][templates]フォルダをアップロードする。
  4. ブラウザから[freo/index.php/albumres/setup]にアクセスしてセットアップを実行します。
  5. パーミッションが設定されない場合は下記ファイルのパーミッションを606に設定する。
      ・configs/plugins/albumres.ini
      ・configs/plugins/albumres_recently.ini
  6. [freo/templates/header.html]<head>~</head>内に
    <!--{if $smarty.request.freo.mode == 'albumres'}--><link rel="stylesheet" href ="{$freo.core.http_url}{$smarty.const.FREO_CSS_DIR}plugins/board.css" type="text/css" /><!--{/if}-->
    を挿入してアップデートします。
  7. 管理画面の[設定管理]―[プラグインの設定]―[アルバムレスポンスプラグイン]で各種設定を行います。
  8. [freo/templates/plugins/album/default.html]<!--{foreach from=$plugin_albums item='plugin_album'}-->~<!--{/foreach}-->内に
            <ul>
                <li>{$plugin_albumres_counts[$plugin_album.id]}件</li>
                <li><a href="{$freo.core.http_file}/albumres/form?album_id={$plugin_album.id}">この記事にレスポンスをつける</a></li>
            </ul>
    
    を挿入してアップデートします。
  9. [freo/templates/plugins/album/view.html]の107行目以降などに
                <ul class="link">
                    <li><a href="{$freo.core.http_file}/album/view/{$plugin_album.id}#response">記事数({$plugin_albumres_counts[$plugin_album.id]})</a></li>
                    <li><a href="{$freo.core.http_file}/albumres/form?album_id={$plugin_album.id}#response_form">レスポンスをつける</a></li>
                </ul>
                <h2>アルバムレスポンス</h2>
                <div id="albumres">
                <!--{foreach from=$plugin_albumreses|smarty:nodefaults item='plugin_albumres'}-->
                    <div class="album">
                        <h3>{$plugin_albumres.name}</h3>
                        <ul class="information">
                        <li>{$plugin_albumres.modified|date_format:'%Y/%m/%d %H:%M'}</li>
                        <!--{if $plugin_albumres.restriction}-->
                            <!--{if $plugin_albumres.restriction == 'root'}--><li class="attention">この記事は管理者のみ閲覧可能です。</li>
                            <!--{elseif $plugin_albumres.restriction == 'users'}--><li class="attention">この記事はユーザーのみ閲覧可能です。</li>
                            <!--{/if}-->
                        <!--{/if}-->
                        </ul>
                        <div class="content">
                            {$plugin_albumres.text|nl2br}
                        </div>
                        <ul class="link">
                            <!--{if $plugin_albumres.mail}--><li><a href="mailto:{$plugin_albumres.mail}">MAIL</a></li><!--{/if}-->
                            <!--{if $plugin_albumres.url}--><li><a href="{$plugin_albumres.url}">URL</a></li><!--{/if}-->
                            <!--{if $freo.user.authority == 'root'}--><li><a href="{$freo.core.http_file}/albumres/admin_form?id={$plugin_albumres.id}">編集</a></li>
                            <!--{elseif $freo.user.id and $freo.user.id == $plugin_albumres.user_id}--><li><a href="{$freo.core.http_file}/albumres/form?id={$plugin_albumres.id}&album_id={$plugin_album.id}#response_form">編集</a></li>
                            <!--{/if}-->
                        </ul>
                    </div>
                <!--{/foreach}-->
                </div>
    
    を挿入してアップデートします。
  10. [freo/index.php/album]にアクセスして正常にボード記事が表示されるか確認してください。

アルバムレスポンスプラグインのテーブル構成

  • スケジュールレスポンスを管理します。
  • 初期状態のテーブル名は freo_plugin_scheduleresです。
フィールド タイプ ヌル キー 備考 格納データ 補足
id INT UNSIGNED   KEY AUTO_INCREMENT ボードID  
created DATETIME       作成日時 新規登録日時で自動的に反映
modified DATETIME       更新日時 最終更新日時を自動的に反映
name VARCHAR(255) YES     名前  
url TEXT YES     URL  
mail TEXT YES     メールアドレス  
text TEXT       本文  
album_id INT UNSIGNED YES     ニュースID  
option01 TEXT YES     オプション01  
option02 TEXT YES     オプション02  
option03 TEXT YES     オプション03  
option04 TEXT YES     オプション04  
option05 TEXT YES     オプション05  
option06 TEXT YES     オプション06  
option07 TEXT YES     オプション07  
option08 TEXT YES     オプション08  
option09 TEXT YES     オプション09  
option10 TEXT YES     オプション10  
ip VARCHAR(80)       IPアドレス  
user_id VARCHAR(255) YES     ユーザーID  
restriction VARCHAR(20)       閲覧制限 NULL,root,user

更新記録

2015/09/16
配布開始
2016/02/24
アルバムプラグイン(ver.3_0_0)に対応。
・[freo/templates/plugins/albumres/form.html]
・[freo/templates/plugins/albumres/utility.html]
・[freo/libs/freo/plugins/config.albumres.php]
をアップロードしてください。
2016/03/07
アルバムレス入力画面(album/form)でアルバムファイルの表示順を昇順または降順から選択できるように変更。
[freo/libs/freo/plugins/config.albumres.php]と[freo/libs/freo/plugins/pages.albumres.php]をアップデートしてください。
管理画面→設定管理→プラグイン→アルバムプラグイン→ファイルの表示順で変更できます。

続きを読む

エントリーページ移動

ユーティリティ

Twitter

記事検索

ページ上部へ