MW211 EXIT

devlog
Smarty/出力結果を変数に格納
2018年05月07日
┌──────────────────────────────────────┐
│$smarty = new Smarty;                                                       │
│$smarty->display('テンプレート.tpl');                                       │
└──────────────────────────────────────┘
通常は、上記のように出力するのだが、
どういう結果なのかログで確認したりしたくて変数に代入したい場合。

display()をfetch()に切り替えてあげればよい。
┌──────────────────────────────────────┐
│$smarty = new Smarty;                                                       │
│$変数 = $smarty->fetch('テンプレート.tpl');                                 │
└──────────────────────────────────────┘
分類:Smarty
JavaScript/setTimeout()とclearTimeout()
2018年05月01日
┌──────────────────────────────────────┐
│var gタイマID = false;                                                      │
│var g周期ミリ秒 = 1000;                                                     │
│$(function() {                                                              │
│    $('#停止ボタン').on('click', function() {                               │
│        if (gタイマID !== false) {                                          │
│            clearTimeout(gタイマID);                                        │
│            gタイマID = false;                                              │
│        }                                                                   │
│    });                                                                     │
│    $('#再開ボタン').on('click', function() {                               │
│        gタイマID = setTimeout(タイマイベント関数, g周期ミリ秒);            │
│    });                                                                     │
│    // タイマ起動                                                           │
│    gタイマID = setTimeout(タイマイベント関数, g周期ミリ秒);                │
│});                                                                         │
├──────────────────────────────────────┤
│function タイマイベント関数() {                                             │
│    // (処理)                                                               │
│    // 次の周期                                                             │
│    gタイマID = setTimeout(タイマイベント関数, g周期ミリ秒);                │
│}                                                                           │
└──────────────────────────────────────┘
分類:JavaScript
Excel/テキストボックスの印刷がずれる
2018年04月24日
この場合、以下をあたってみよう

右クリックメニュー「図形の書式設定」を起動
「プロパティ」を左メニューより選択し(その上部で)以下を選択
┌──────────────────────────────────────┐
│オブジェクトの位置関係  ──────────────────────────│
│  ●セルに合わせて移動やサイズを変更する                                    │
│  ○セルに合わせて移動するがサイズ変更はしない                              │
│  ○セルに合わせて移動やサイズ変更をしない                                  │
│──────────────────────────────────────│
└──────────────────────────────────────┘
分類:Excel
数学/様々な値の総称
2018年04月06日
?の部分はなんというのだろう?
┌───┬───┬───┬───┐
│現在値│      │      │      │
├───┼───┼───┤      │
│平均値│      │      │      │
│中央値│      │      │      │
│最頻値│      │      │  ?  │
├───┼───┤代表値│      │
│最小値│      │      │      │
├───┤ 極値 │      │      │
│最大値│      │      │      │
└───┴───┴───┴───┘
分類:設計
プログラムのインストール
2018年03月28日
【インストールレベル】
  (a) 実行ファイルを置くだけ(設定ファイルも近くに置く)
  (b) パス(環境変数PATH)を書き換える
  (c) レジストリを書き換える(コンテキストメニューの追加など)
【インストール先】
  標準的なインストール先は以下の通り
  ┌───────────┬────────────────────────┐
  │C:\Program Files      │64bitプログラムの標準インストール先             │
  │                      │・セキュリティ厳しい                            │
  ├───────────┼────────────────────────┤
  │C:\Program Files (x86)│32bitプログラムの標準インストール先             │
  │                      │・セキュリティ厳しい                            │
  └───────────┴────────────────────────┘
  任意のインストール先は以下の通り
  ┌───────────┬────────────────────────┐
  │D:\Program Files      │64bitプログラムのOSドライブ以外のインストール先 │
  │                      │・OSドライブの容量を消費したくない場合          │
  ├───────────┼────────────────────────┤
  │D:\Program Files (x86)│32bitプログラムのOSドライブ以外のインストール先 │
  │                      │・OSドライブの容量を消費したくない場合          │
  ├───────────┼────────────────────────┤
  │C:\(プログラム名)     │独自のプログラム配置先                          │
  │                      │・セキュリティを気にしたくない場合              │
  ├───────────┼────────────────────────┤
  │C:\apps               │ちょっとしたプログラムの配置先                  │
  │C:\tools          など│                                                │
  └───────────┴────────────────────────┘
  ちなみにアンインストール時にインストール先のフォルダが
  まるごと削除される場合があるので、
  異なるプログラム同士でのフォルダの共用は避けた方がよい
分類:Windows
ExcelVBA/範囲の値コピー最速
2018年03月24日
配列を介するのがよいようだ。
配列は二次元配列となるが、Variant型配列にすれば手軽に使える。

「入力」シートの左上3×3を、「出力」シートの左上3×3に値コピーする処理は
以下のような感じになる
┌──────────────────────────────────────┐
│Dim 配列 As Variant                                                         │
│With ThisWorkbook.Worksheets("入力")                                        │
│    配列 = Range(.Cells(1, 1), .Cells(3, 3)).Value                          │
│End With                                                                    │
│With ThisWorkbook.Worksheets("出力")                                        │
│    Range(.Cells(1, 1), .Cells(3, 3)) = 配列                                │
│End With                                                                    │
└──────────────────────────────────────┘

配列を介さず直接値コピーすることも可能。
┌──────────────────────────────────────┐
│Range(.Cells(4, 4), .Cells(6, 6)) = Range(.Cells(1, 1), .Cells(3, 3)).Value │
└──────────────────────────────────────┘
この方式では、異なるシート間でもコピーは可能だが
記述が煩雑となるので、異なるシート間の場合は、
配列を介した方がわかりやすいであろう
┌──────────────────────────────────────┐
│Range(出力シート.Cells(4, 4), 出力シート.Cells(6, 6)) _                     │
│= Range(入力シート.Cells(1, 1), 入力シート.Cells(3, 3)).Value               │
└──────────────────────────────────────┘
なお、配列に代入する際には「.Value」を省略できるが
範囲から範囲へ代入する場合には省略すると
値がコピーされない(何も起きない)ので注意。
分類:ExcelVBA
PowerBI/複合キーの結合
2018年03月19日
たぶん、VLOOKUP関数が複合キーに対応していないように
PowerBIのリレーションシップも複合キーに対応していないようだ。

ひとまず、VLOOKUP関数で複合キーに対応する方法に則って対処すると
各キーを文字列結合した新たな列を設けて、それを主キーとして扱うという形になる。
→「(C2)=A2&" "B2」からの「=VLOOKUP(C2,…」

では、これをPowerBIでどうやって実現するか。

まず、データを取得等で、テーブルを呼び出しておく。
その後、「クエリを編集」を実行する。

「クエリエディター」が起動するので、「列の追加」タブより
当該テーブルを選択の上、「カスタム列」を押下する。

そこで「新しい列名」に「複合キー」とか任意の列名を入力し、
「カスタム列の式」に以下のような感じで入力する。
┌──────────────────────────────────────┐
│= Number.ToText([キー1])&" "&Number.ToText([キー2])                         │
└──────────────────────────────────────┘
→「Number.ToText()」は数値文字列変換の関数

後は、「リレーションシップ」画面にて、その列(「複合キー」とか)を
単一主キーの場合と同様に、ドラッグ&ドロップしたりして紐づければOK。
分類:PowerBI
MSSQL/ストアド関数と動的可変テーブル
2018年03月02日
ストアド関数で戻り値を可変のテーブル型とし、
関数内で動的にSQL文を生成した結果を戻り値として返すことはできるのか?

・ストアド関数で戻り値を可変のテーブル型とする場合には、
  処理を書くことができず(つまり動的にSQL文を書けない)、
  RETURN処理に固定のSELECT文を書けるのみ
  RETURN処理では、ストアドプロシージャを呼び出すこともできない

よって、無理のようだ
分類:MSSQL
ExcelVBA/マクロ抜きシート複写
2018年02月28日
シートを複写すると漏れなくシートのマクロも付いてくる。
それを除去したいという場合、コピー後にマクロを削除するのは困難なようなので
(自由のソースコードを改変できることになり、セキュリティ的に厳しい)
新規シートを追加し、マクロ以外を地道にコピーする方が(遠回りだけど)近道なようだ。
以下その関数。
┌──────────────────────────────────────┐
│Sub マクロ抜きシート複写(ByVal 入力シート As Worksheet, _                   │
│                         ByVal 出力シート As Worksheet)                     │
│    Dim 改頁 As Variant, 表示倍率 As Long                                   │
│    '-----------------------------------------------------------------------│
│    '  コピー                                                               │
│    '-----------------------------------------------------------------------│
│    入力シート.Cells.Copy  ' コピー                                         │
│    With 出力シート.Cells(1, 1)                                             │
│        .PasteSpecial Paste:=xlValues   ' 値貼り付け                        │
│        .PasteSpecial Paste:=xlFormats  ' 書式貼り付け                      │
│        .Select                                                             │
│    End With                                                                │
│    '-----------------------------------------------------------------------│
│    '  印刷設定の複写                                                       │
│    '-----------------------------------------------------------------------│
│    Call 複写PageSetup(入力シート.PageSetup, 出力シート.PageSetup)          │
│    '-----------------------------------------------------------------------│
│    '  改頁位置の複写                                                       │
│    '-----------------------------------------------------------------------│
│    For Each 改頁 In 入力シート.HPageBreaks                                 │
│        出力シート.HPageBreaks.Add 改頁.Location.Rows                       │
│    Next 改頁                                                               │
│    '-----------------------------------------------------------------------│
│    '  表示倍率の複写                                                       │
│    '-----------------------------------------------------------------------│
│    入力シート.Select:  表示倍率 = ActiveWindow.Zoom                        │
│    出力シート.Select:  ActiveWindow.Zoom = 表示倍率                        │
│    '-----------------------------------------------------------------------│
│    '  クリップボードのクリア                                               │
│    '-----------------------------------------------------------------------│
│    Application.CutCopyMode = False                                         │
│    ' 上記で解消できないものは、全セル選択から一セル選択に変更で対応        │
│    ' →「図が大きすぎます。」エラー対策                                    │
│    入力シート.Cells(1, 1).Copy                                             │
│End Sub                                                                     │
├──────────────────────────────────────┤
│Private Sub 複写PageSetup(ByVal 入力 As Object, _                           │
│                          ByVal 出力 As Object)                             │
│    With 出力                                                               │
│        .AlignMarginsHeaderFooter = 入力.AlignMarginsHeaderFooter           │
│        .BlackAndWhite = 入力.BlackAndWhite                                 │
│        .BottomMargin = 入力.BottomMargin                                   │
│        .CenterFooter = 入力.CenterFooter                                   │
│        .CenterHeader = 入力.CenterHeader                                   │
│        .CenterHorizontally = 入力.CenterHorizontally                       │
│        .CenterVertically = 入力.CenterVertically                           │
│        .DifferentFirstPageHeaderFooter = 入力.DifferentFirstPageHeaderFooter
│        .Draft = 入力.Draft                                                 │
│        .FirstPageNumber = 入力.FirstPageNumber                             │
│        .FitToPagesTall = 入力.FitToPagesTall                               │
│        .FitToPagesWide = 入力.FitToPagesWide                               │
│        .FooterMargin = 入力.FooterMargin                                   │
│        .HeaderMargin = 入力.HeaderMargin                                   │
│        .LeftFooter = 入力.LeftFooter                                       │
│        .LeftHeader = 入力.LeftHeader                                       │
│        .LeftMargin = 入力.LeftMargin                                       │
│        .OddAndEvenPagesHeaderFooter = 入力.OddAndEvenPagesHeaderFooter     │
│        .Order = 入力.Order                                                 │
│        .Orientation = 入力.Orientation                                     │
│        .PaperSize = 入力.PaperSize                                         │
│        .PrintArea = 入力.PrintArea                                         │
│        .PrintComments = 入力.PrintComments                                 │
│        .PrintErrors = 入力.PrintErrors                                     │
│        .PrintGridlines = 入力.PrintGridlines                               │
│        .PrintHeadings = 入力.PrintHeadings                                 │
│        .PrintNotes = 入力.PrintNotes                                       │
│        .PrintQuality = 入力.PrintQuality                                   │
│        .PrintTitleColumns = 入力.PrintTitleColumns                         │
│        .PrintTitleRows = 入力.PrintTitleRows                               │
│        .RightFooter = 入力.RightFooter                                     │
│        .RightHeader = 入力.RightHeader                                     │
│        .RightMargin = 入力.RightMargin                                     │
│        .ScaleWithDocHeaderFooter = 入力.ScaleWithDocHeaderFooter           │
│        .TopMargin = 入力.TopMargin                                         │
│        .Zoom = 入力.Zoom                                                   │
│        ' 以下省略(複雑なので)                                              │
│''''''''.Application = 入力.Application                                     │
│''''''''.CenterFooterPicture = 入力.CenterFooterPicture                     │
│''''''''.CenterHeaderPicture = 入力.CenterHeaderPicture                     │
│''''''''.Creator = 入力.Creator                                             │
│''''''''.EvenPage = 入力.EvenPage                                           │
│''''''''.FirstPage = 入力.FirstPage                                         │
│''''''''.LeftFooterPicture = 入力.LeftFooterPicture                         │
│''''''''.LeftHeaderPicture = 入力.LeftHeaderPicture                         │
│''''''''.Pages = 入力.Pages                                                 │
│''''''''.Parent = 入力.Parent                                               │
│''''''''.RightFooterPicture = 入力.RightFooterPicture                       │
│''''''''.RightHeaderPicture = 入力.RightHeaderPicture                       │
│    End With                                                                │
│End Sub                                                                     │
└──────────────────────────────────────┘
複写PageSetup()の部分(PageSetupオブジェクト配下プロパティの全コピー)が、
もっと簡単にできればいいのだが…。

オブジェクト配下プロパティの全コピーの方法はみつからないようだ。
分類:ExcelVBA
ExcelVBA/列幅の記録と呼出
2018年02月22日
非表示の「列幅保存用」シートを用意しておき、
以下のマクロでセーブしてロードする。
┌──────────────────────────────────────┐
│Sub 列幅セーブ()                                                            │
│    ActiveSheet.Cells.Copy                                                  │
│    ThisWorkbook.Worksheets("列幅保存用").Cells.PasteSpecial _              │
│        Paste:=xlPasteColumnWidths                                          │
│End Sub                                                                     │
├──────────────────────────────────────┤
│Sub 列幅ロード()                                                            │
│    ThisWorkbook.Worksheets("列幅保存用").Cells.Copy                        │
│    ActiveSheet.Cells.PasteSpecial Paste:=xlPasteColumnWidths               │
│End Sub                                                                     │
└──────────────────────────────────────┘
分類:ExcelVBA
前へ 1 … 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 … 156 次へ