Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


285 / 308 ツリー ←次へ | 前へ→

【99】文書に貼り付けた写真をjpeg形式で保存する ハルコ 04/5/21(金) 8:23 質問[未読]
【102】Re:文書に貼り付けた写真をjpeg形式で... H. C. Shinopy 04/5/27(木) 23:46 回答[未読]

【99】文書に貼り付けた写真をjpeg形式で保存...
質問  ハルコ  - 04/5/21(金) 8:23 -

引用なし
パスワード
   みなさん、こんにちは。
はじめて投稿させていただきます。
実は、ワード文書に貼り付けた写真データ(GIF形式)を、マクロを使って、J
PEG形式に変換し、ペイントを利用して別ファイルで保存したいのです。これは、容量を縮小する
ために行うためです。その写真データは1ページ内で最低で1つ、最大で8つ
、と色々な種類があり、これらが数ページになるときもあります。その際、別
ファイルに保存する時も、ワードの時と同じ配置で、1ページ内に収めたいの
ですが、こんな都合の良いマクロって、あるのでしょうか?どなたか、ご存知
の方いらっしゃいましたご教授願います。宜しくおねがいします。

【102】Re:文書に貼り付けた写真をjpeg形式で...
回答  H. C. Shinopy  - 04/5/27(木) 23:46 -

引用なし
パスワード
   「同じ配置で、1ページ内に収めたい」とのことですが、
Word文書のあちこちにある全ページの画像を1つの画像にするということですか?
いろいろな条件付きで、Microsoft Publisher連携での半自動処理になりますが、
それで宜しければ・・・

Publisherの画像データを右クリックして
[図として保存]で保存できるのを利用します。
(PowerPointにも同じ機能があるのですが、
スライドからはみ出た部分が削られてしまうので、この案はボツ。
Excelのグラフ機能にも[図として保存]がありますが、
2ページ目以降のデータを処理しませんので、これもボツです。)
それから最新版であるWord2003・Publisher2003のVBAではどうなのか、
情報が欲しいところですが・・・

余り判らない点もあり、
結果として酔っ払いが作ったようなマクロになりました。

・画像データは、[テキストの折り返し]で[行内]に配置されているものとします。
 (行内が指定されていないと、なぜか画像データとして処理されません。)

・処理の途中で「形式を選択して貼り付け」ダイアログボックスが表示されるので、
 (Publisher VBAでは、形式を指定して貼り付けをするメソッドがないのか?)
 [貼り付け]ラジオボタン・[新しい表]を指定して、[OK]をクリックします。

・処理が済んだ後、次の手作業が必要です。
 Publisher文書上に画像データがテキストボックス内の表として
 貼り付けされているので、手作業で画像データの横幅を確認します。
 (元のWord文書上の画像が単に縦1列に配置されていただけの場合は、確認不要です。)
 画像の右側部分が隠れている場合は、マウスでテキストボックスと中にある表を右へ広げます。
 画像データを右クリックして、[図として保存]を選択し、
 ファイル名とファイル形式を指定して保存します。

Sub myPicPasteSemiAuto()
 Rem 文書全体を表として(文字列・画像も含めて)
 Rem Publisherへ貼り付けする半自動処理
 Rem *----*----*  *----*----*  *----*----*  *----*----*
 Rem 参照設定:Microsoft Publisher 10.0 Object Library
 Rem *----*----*  *----*----*  *----*----*  *----*----*
 Dim myShape As InlineShape
 Dim myPublisher As Publisher.Application
 Dim myWidthMax As Long
 '
 Dim myCmmdBar As CommandBar
 Dim myCtrl As CommandBarControl
 '
 myWidthMax = -1
 For Each myShape In ActiveDocument.InlineShapes
  If myShape.Width > myWidthMax Then
   myWidthMax = myShape.Width
  End If
 Next myShape
 If myWidthMax = -1 Then
  MsgBox "行内に配置した画像データなし"
  Exit Sub
 End If
 '
 Selection.WholeStory
 Selection.Copy
 Selection.Collapse
 '
 Set myPublisher = CreateObject("Publisher.Application")
 myPublisher.NewDocument
 myPublisher.ActiveWindow.Visible = True
 '
 Set myCmmdBar = myPublisher.Application.CommandBars("Edit") ' 編集
 Set myCtrl = myCmmdBar.FindControl(ID:=755) ' 形式を指定して貼り付け
 myCtrl.Execute
 Rem [新しい表]を指定。
 '
 Rem MsgBox myPublisher.Selection.ShapeRange.Width ' 試行用
 Rem myPublisher.Selection.ShapeRange.Item(1).Width = 300 ' 試行用
 '
 If myPublisher.Selection.ShapeRange.Item(1).HasTable = msoTrue Then
  myPublisher.Selection.ShapeRange.Item(1).Table.Columns.Item(1).Width = myWidthMax
 End If
 '
 Set myShape = Nothing
 Set myPublisher = Nothing
 Set myCmmdBar = Nothing
 Set myCtrl = Nothing
End Sub ' myPicPasteSemiAuto

285 / 308 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
207142
(SS)C-BOARD v3.8 is Free