ホーム
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
開発室
開発者のブログ
ログイン
設定
MeryWiki について
免責事項
MeryWiki
検索
「
日付と時刻を挿入(カレンダー版)
」を編集中
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
[https://www.haijin-boys.com/discussions/2933 指定した日付の入力は出来ないでしょうか]でヒロさんが希望していた、カレンダーからの日付挿入マクロです。PowerShellで.NETのカレンダーコントロールを使用して、クリップボード経由で貼り付けます。 == 注意事項 == 環境によってはPowerShellの起動がやたらと遅いので、使い物にならないかもしれません。Core i5 Windows7 のビジネスノートではストレスなく動作しましたが、Windows10 にアップグレードされた古い Atom ネットブックでは無理でした。 == ソースコード == === JavaScript === 下記のソースコードをMeryのマクロファイルとして保存(例:calendar.js) <syntaxhighlight lang="javascript" copy> #title = "カレンダーで日付挿入" /* * PowerShellを使って .Net の MonthCalendar コントロールを表示します * 環境に合わせて PowerShell スクリプトのフルパスを修正してください * * PowerShell.exe の実行コマンドラインでは、セッションのみローカルの * スクリプトの実行を許可しています * Run メソッドではウインドウ非表示で実行し、PowerShell スクリプトの * 内部で Window.State を操作しています。 * また、Run メソッドでは終了を待つため、フォームが表示されている間、 * 他のマクロは実行できません。 * PowerShell.exe 終了の戻り値が 0 であればクリップボードから貼り付け * ます。PowerShell.exe 終了から Mery マクロへの復帰までに、他のアプ * リでクリップボードが操作される可能性は無視しています。 * * なお、MonthCalendar コントロールでは休日の色付けは困難な模様です。 */ (function(){ var mydoc = editor.ActiveDocument; //WScript.Shell.Runの終了待ちの間に操作される対策を追加 var psScript = 'c:\\temp\\calendar.ps1';//←環境に合わせて修正 var psCmd = 'PowerShell.exe -STA -ExecutionPolicy RemoteSigned -File '; var errlevel = new ActiveXObject('WScript.Shell').Run( psCmd + psScript, 0, true); if(errlevel==0 && editor.ActiveDocument==mydoc)document.Write(ClipboardData.GetData()); })(); </syntaxhighlight> === PowerShell === 下記のソースコードをPowerShellのスクリプトファイルとして保存(例:calendar.ps1) <syntaxhighlight lang="powershell" copy> # MonthCalendar コントロールで日付を選択する Powershell スクリプト # Enter または F5 でクリップボードにコピー、 Esc でキャンセルして終了する $exitcode = 0 Add-Type -AssemblyName System.Windows.Forms $Calendar = New-Object System.Windows.Forms.MonthCalendar $Calendar.ShowToday = $False $Calendar.ShowTodayCircle = $False $Calendar.MaxSelectionCount = 1 # 休日に色を付けるとかはできない模様 $Form = New-Object System.Windows.Forms.Form $Form.Text = "Select Date" $Form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedToolWindow $Form.Controls.Add($Calendar) $Form.ControlBox = $False $Form.TopMost = $True $Form.KeyPreview = $True $Form.Add_KeyDown({ if (($_.KeyCode -eq "Enter") -or ($_.KeyCode -eq "F5")){ $date = $Calendar.SelectionStart # "カスタム日時書式指定文字列" を参照 # https://msdn.microsoft.com/ja-jp/library/8kb3ddd4.aspx # 曜日を日本語で表示するため CultureInfo を指定 $culture = New-Object System.Globalization.CultureInfo("ja-JP") [Windows.Forms.Clipboard]::SetText($date.ToString("yy/MM/dd(ddd)",$culture)) $Form.Close() } }) $Form.Add_KeyDown({ if ($_.KeyCode -eq "Escape"){ $Form.Close() $exitcode = 1 } }) $Form.Add_Shown({ $Calendar.Location = New-Object System.Drawing.Point @(0, 0); $Form.ClientSize = $Calendar.Size; $Form.WindowState = 0; }) $dialogresult = $Form.ShowDialog() $Calendar.Dispose() $Form.Dispose() exit $exitcode </syntaxhighlight>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク