とまて日記/ミラー

Webサイト『とまての実験室』管理人の“とまて”です。日々の呟き&更新・工事中情報(稀)を中心に…。コメント大歓迎、どうぞお気軽に。


テーマ:
VBScriptというのを使ってMicrosoftWordの今編集中のドキュメントの余白とヘッダー(ページ番号/頁数)を書き込めないか調べてみて、目途が立ったのでメモします。
使い方は、Wordを新規作成とか、古い文書も同じフォーマットに揃えたい場合、文書を編集状態にしておいて、VBScriptのアイコンをダブルクリックです。
自分のPCでだけ文書を作っているならマクロに保存して置くのも良いのですが、いろいろなPCで作業するとなるとちょっと気が引けるし…。

'ダブルクリックすると、今開いているワードファイルの余白を整えて、ヘッダーにページ番号/ページ数を書き込むツール
'
'=========================================
'セッティング
   '設定したい余白をmmで記入してください
      Left_Margin=15
      Right_Margin=15
      Top_Margin=15
      Bottom_Margin=15
   'ヘッダーの紙端からの位置を㎜で記入してください(通常、上限はTop_Marginより8㎜くらい引く)
      Header_Distance=7
'=========================================
Const K=2.83666666667:'変換係数
on error resume next
Set objWord = GetObject(,"Word.Application")

if err.number<>0 then
    WScript.Echo "このツールは今開いているワードのシートの書式を規定の書式にするものです。"
else
on error goto 0

Set objDoc = objWord.ActiveDocument
'Set objSelection = objWord.Selection
Set WshShell = WScript.CreateObject("WScript.Shell")


'余白とヘッダー位置の指定
With objDoc.PageSetup
.LeftMargin = Left_Margin * K
.RightMargin = Right_Margin * K
.TopMargin = Top_Margin * K
.BottomMargin = Bottom_Margin * K
.HeaderDistance= Header_Distance * K
End With

Const wdSeekCurrentPageHeader=9
Const wdAlignParagraphRight=2
Const wdFieldEmpty=-1
Const wdCharacter=1

'ヘッダー編集エリアを開く
objDoc.ActiveWindow.ActivePane.View.SeekView=wdSeekCurrentPageHeader

'既存のヘッダー削除
objWord.Selection.WholeStory
objWord.Selection.Delete

'右揃え
objWord.Selection.ParagraphFormat.Alignment=wdAlignParagraphRight

'ページ番号フィールドコード
objWord.Selection.Fields.Add objWord.Selection.Range, wdFieldEmpty, "PAGE  ", True

'選択か所に文字列書き込み
objWord.Selection.TypeText "/"

'ページ数フィールドコード
objWord.Selection.Fields.Add objWord.Selection.Range, wdFieldEmpty, "NUMPAGES  ", True

'ヘッダー編集エリアを閉じる
objDoc.ActiveWindow.ActivePane.View.SeekView=wdSeekMainDocument

end if
Set objDoc=nothing
Set objWord=nothing
Set WshShell=nothing
AD
いいね!した人  |  コメント(0)  |  リブログ(0)

テーマ:

2016-11-5訂正:以下のコードの記録ですが、どうも、偶々そうなっただけで普通は SaveNativePictureFormat:=Falseがデフォルトらしいことが分かりました。

なので、やっぱり、画像圧縮のマクロは今のところ作れそうにありません。

 

バイト先の話。

Wordに貼った画像(写真その他、今回試したのはJPEGとPNG)を圧縮しないで文書保存してしまうと、A4の文書一ページ分なのに何故か10MBくらいのファイルサイズになっていたりすることがあり、マクロで自動的に220ppiに揃えるとかなんとか出来ないもんかな?と思って調べたのですが、あまり芳しくない。
画像を切り取って、形式を選択して貼り付けでJPEGを選ぶ、という方法が使えそうにも思うけれども、JPEGはJPEG、PNGはPNGのまま圧縮して欲しい訳で…。マクロで貼ってある画像の形式を調べる術がそもそもよ~分からん…。

それで、Word2013の[ファイル]タブから[オプション]を選択、[詳細設定]で[イメージのサイズと画質]という項目からなんとかアプローチできないか、と試してみたところ、
[ファイル内のイメージを圧縮しない]にチェックが入っていると

ActiveDocument.SaveAs2 FileName:="native.docm", FileFormat:= _
wdFormatXMLDocumentMacroEnabled, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False, CompatibilityMode:=15


チェックが入っていないと

ActiveDocument.SaveAs2 FileName:="notnative.docm", FileFormat:= _
wdFormatXMLDocumentMacroEnabled, LockComments:=False, Password:="", _
AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
:=False, SaveAsAOCELetter:=False, CompatibilityMode:=15

というコードが記録されることが分かった。

てぇことは、一律圧縮したいWordファイルを一つのフォルダに入れて置いて、そのフォルダ内のWordファイルを開いてはSaveNativePictureFormat:=Falseで片っ端から保存し直すマクロを作っちゃえば、一応の解決を見るのでは無かろうか(^^)?

但し、トリミングを自動的に削ることはこれでは不可能。ただ、最近のやたらとピクセル数が大きいデジカメの写真をまんま貼ってしまうような人には便利かもしれない。

[ファイル]タブから[オプション]を選択、[詳細設定]で[イメージのサイズと画質]という項目を[全ての新規文書]について[ファイル内のイメージを圧縮しない]のチェックを外しておくことももちろん可能ですが、その場合、拡大印刷してポスター作るとか、印刷所にPDF入稿するための原稿を作るとかいう用途のときだけ、220ppiよりも解像度を上げたい…のだけれど、その時はここ外してね、と説明しておいても年に数回じゃウッカリと解像度220ppiのまま保存してしまうかもしれず、どこを想定したらいいのやら(悩)。
 

AD
いいね!した人  |  コメント(0)  |  リブログ(0)

テーマ:
また、アメブロでseesaaブログについてです。
Facebookボタンを付けたい、という相談があって、調べてみました。
https://developers.facebook.com/docs/plugins/share-button?locale=ja_JPで、seesaaブログのどれか一つの記事のURLを貼って、コードの取得というボタンをクリックします。
もしも、記事のURLがhttp://blog.xxxxx.org/article/yyyyyyyyy.html(xxxxxがブログ固有のURLの一部で、yyyyyyyyの部分が記事固有の通常は9ケタの番号)とすると、
ステップ2にこんなコード
<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/ja_JP/sdk.js#xfbml=1&version=v2.8";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

ステップ3にこんなコード
<div class="fb-share-button" data-href="http://xxxxx.org/article/yyyyyyyyy.html" data-layout="button_count" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fblog.xxxxx.org%2Farticle%2Fyyyyyyyyy.html&amp;src=sdkpreparse">シェア</a></div>
が書き出されます。

この2つのコードをブログの[デザイン]-[コンテンツ]の中に組み込みます。

ステップ2の方は、ブログ固有のURLなどを含みませんから、そのままヘッダーにでも書き込みます。ただし、一行目の<div id="fb-root"></div>はカットしても多分問題ありません。
[ブログ説明]の中でもいいですし、[自由形式]のコンテンツをヘッダーに置いて、その中にコードを書き込んでも良いと思います。

ステップ3の方は、[記事]の中に書き込みますが、URLを含むため、yyyyyyyyの部分を、<% individual_article.id %>と書き換えると、実際に個別エントリのページを開いた際には記事固有の番号に書き変わります。ただし、個別エントリのページ以外ではエラーになるため、個別エントリのページ以外では表示されないようにします。

<% if:page_name eq 'article' -%>
<div class="fb-share-button" data-href="http://blog.xxxxx.org/article/<% individual_article.id %>.html" data-layout="button_count" data-size="small" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fblog.xxxxx.org%2Farticle%2F<% individual_article.id %>.html&amp;src=sdkpreparse">シェア</a></div>
<% /if -%>

記事の本文の前に表示させるか、本文の下に表示させるか、などは趣味の問題ですので、記事のHTMLの編集をしみじみと観察して、お試しになると良いと思います。エントリタイトルの下でしたら、<% article.subject %>のある行の下になるでしょうか?
AD
いいね!した人  |  コメント(0)  |  リブログ(0)

テーマ:
アメブロでSeesaaブログのカスタマイズ方法について書くなんて、ちょっと不毛感が漂いますが、忘れないうちに書いて置きたくて。
1.直接編集ページへ飛べるリンクを記事に貼る(管理人本位の改造)。
2.タグ内の記事リストに、その記事のカテゴリを追加
3.カテゴリ内記事表示を、日付とタイトルだけにする


1.エントリ数が増えて、また、日記でなくて各々のエントリについて見直しが多いようなブログの場合、管理人ログイン後に手直ししたい記事を記事一覧で探すのがとても面倒。
ページの右上など、目障りにならない位置に、管理人ログインしている場合に直ぐに編集ページに飛べるようなリンクがあると便利だな、と思って作りました。

(デザイン> PC> コンテンツ>記事の歯車マーク>コンテンツHTML編集)にて、
<% if:page_name eq 'article' -%>の直ぐ下に、
<a href="http://blog.seesaa.jp/cms/article/edit/input?id=<% individual_article.id %>">(編)</a>

という、一行を追加。これで、記事固有のページでアクセスしているときに(編)という編集者用リンクが現れます。
このままでは位置的に邪魔なので、ページの右上から左方向下方向にそれぞれ30ピクセル移動したところに置いてみる。

さっきの一行を、
<div class="EditPB"><a href="http://blog.seesaa.jp/cms/article/edit/input?id=<% individual_article.id %>">(編)</a></div>
と書き換えて、
CSSのページ(デザイン> PC> デザイン設定)に、
.EditPB {
   position: absolute;
   top: 30px;
   right: 30px;
}
を追加。
これで、記事を読むのにあまり邪魔にならない、右上に(編)が表示されるようになります。


2.全部の記事に、全記事というタグを付けて、タグページ(タグクラウドなどから飛ぶページ)に全記事リストを表示させようとしているのですが、各記事タイトルの次に、その記事のカテゴリを表示させると更に便利。
試しに、(デザイン> PC> HTML)にて、HTML改造。
<div class="tag-article-title">~</div>間を、
<div class="tag-article-title"><span class="tag-article-posted">[<% article.createstamp | date_format("%Y/%m/%d") %>]</span>&nbsp;<a href="<% article.page_url %>"><% article.subject %></a> (<% article.category.name -%>)</div>
と書き換えてみる。<% article.category.name -%>が、記事のカテゴリを表示する部分。(偶々、まぐれ当たりでした…笑)。
これで、[年/月/日]記事タイトル (カテゴリ)でリストアップされる。
ただし、20行ずつ…。もっと増やせたらいいのですけれどもっ。


3.カテゴリ表示も、記事タイトル一覧として使用したかったので、(設定> 詳細設定> ブログ設定)にて、記事カテゴリページ を100件にしておいて、カテゴリページのなかの記事本文とRDFを削除。
(デザイン> PC> コンテンツ>記事の歯車マーク>コンテンツHTML編集)で、要らないと思うところを、
<% if:page_name ne 'category' -%>~<% /if -%>で挟んで行くと、その部分はカテゴリページでは表示されなくなる。
具体的に試してみたのは、
<!--
<rdf:RDF

/>
</rdf:RDF>
-->

と、<h3 class="title"><a href="<% article.page_url %>" class="title"><% article.subject %></a></h3>の下の
<% if:page_name eq 'article' -%>

<img src="<% site_info.blog_url %>/img/fan_received.gif" alt="更新情報をチェックする" border="0" /></a>
</div>

</div>
の部分(を挟むように、<% if:page_name ne 'category' -%>と<% /if -%>を置いて行く)。


失敗するとHTMLとかCSSはデフォルトに戻す機能しかないため、今まで改造を重ねてきたHTMLやCSSは必ずバックアップをとってから更なる改造を試さないと泣くことになりますね(^_^;)。
いいね!した人  |  コメント(0)  |  リブログ(0)

テーマ:
川端裕人さんの、『PTA再活用論―悩ましき現実を超えて』(中公新書ラクレ)の新装第二版が出ました。
この本は、平成のPTA問題のビッグバンみたいな作品だと思います。
自分も、初版が出たころよりも少しできることが増えたので、取り急ぎ応援アニメGIFを作りました。
お気に召した方がいらっしゃれば、ご自由にお持ちください。このブログにリンクを貼っていただく必要もありません。
(それより、Amazonとかにリンクを!)
他にも応援バナーやアニメGIFを作ってみられた方は、コメント欄にでもURL貼ってください。

12コマ、1回バージョン
PTA再活用論CM


13コマ、2回バージョン
PTA再活用論CM13


(お持ち帰りは、Winの場合右クリックで画像を保存でOKです)

2016/6/2:そして、新作、マグカップバージョン。


いいね!した人  |  コメント(0)  |  リブログ(0)

AD

Ameba人気のブログ

Amebaトピックス

      ランキング

      • 総合
      • 新登場
      • 急上昇
      • トレンド

      ブログをはじめる

      たくさんの芸能人・有名人が
      書いているAmebaブログを
      無料で簡単にはじめることができます。

      公式トップブロガーへ応募

      多くの方にご紹介したいブログを
      執筆する方を「公式トップブロガー」
      として認定しております。

      芸能人・有名人ブログを開設

      Amebaブログでは、芸能人・有名人ブログを
      ご希望される著名人の方/事務所様を
      随時募集しております。