人気マンガがだれでも無料♪電子コミック読み放題!!

WORD2016です。
VBAに関しては初心者です。

あるフォルダにある複数の画像をWORDのドキュメント(新規または既存)のヘッダーに1ページに1つずつ挿入し、既定編集することをVBAで解決できないでしょうか?

画像が50個あれば、ページが50ページ必要です。
今、開いているドキュメントが2ページなら、自動的に改ページとセクション区切りを入れてページを増やすイメージです。

挿入後の画像は、縦横比固定、倍率100%、水平垂直ともにページ基準で中央です。

画像のファイル名は都度バラバラですが、リネームせずにそのまま昇順で処理したいです。

現時点では、自分でヘッダーに入り、画像を挿入した状態で、以下の方法で処理しています。

 Sub 画像を等倍率、センター()

   With Selection.ShapeRange
   .LockAspectRatio = msoTrue

   .ScaleHeight 1, msoTrue

    .RelativeHorizontalPosition = _
    wdRelativeHorizontalPositionPage

   .RelativeVerticalPosition = _
   wdRelativeVerticalPositionPage

    .Left = wdShapeCenter
   .Top = wdShapeCenter

  End With
 End Sub

しかし、画像が多く手間がかかるため何とかならないかと思います。
どうかお願いします。

質問者からの補足コメント

  • うれしい

    恐れ入ります。
    背景、透かし、といった用途で画像を使います。

    スポーツ少年団の卒団記念の作成です。

    子供の活躍した印象深い画像を背景に入れ、本ページには出場した試合、結果、子供が書いた原稿を配置します。1人1ページで卒団者分のページです。(毎年恒例)(お金がないので自作記念品です)

    本文と同じ階層にあると、意図せずに画像に触ってしまい位置が移動したり、他の図形などとの上下関係を配慮しなければ選択がままならないのでヘッダーに置きたいと思いました。

    返信いただいてありがとうございます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2019/01/03 20:52

A 回答 (6件)

No.4での簡易版にちょっと追加と修正することで、フォルダにある


ファイル数でセクション区切りを追加して、画像を挿入することが
できそうです。
(新規文書から作成する場合)

修正部分(前半部分のみ)

 Dim i,j As Integer
 Dim PIC As Shape
 Dim objFile As Object
 Dim objFldr As Object
 Dim sec As Section
 Dim hd_ft As HeaderFooter

' 画面の更新を止める
 Application.ScreenUpdating = False

 Set objFldr = CreateObject("Scripting.FileSystemObject")
' 画像の数を取得しセクション区切りを挿入
 For j = 1 To objFldr _
 .GetFolder("フォルダのフルパス" & "フォルダ名").Files.Count - 1
  ActiveDocument.Sections.Add
 Next

' 各セクションのヘッダーで前と同じを解除
 For Each sec In ActiveDocument.Sections
  For Each hd_ft In sec.Headers
   hd_ft.LinkToPrevious = False
  Next
 Next sec

 i = 0
' 画像フォルダを指定

=====以下省略=====
    • good
    • 0
この回答へのお礼

これは、非常にありがたいです。
セクション区切りを数えながら増やしていたので、途中でわかんなくなったりしたものですから。
画像もセクションも数えなくてもいいのはありがたいです。
気合を入れないと取り掛かれなかった作業が楽しくなりそうです。
ありがとうございます。

お礼日時:2019/01/07 00:12

> 実行時エラー’5941’:


なんだろう?
GetFolder("フォルダのフルパス" & "フォルダ名").
の部分は問題ないのでしょうか?
例えば、エクスプローラーからフォルダのパスを取得するために
パスのコピーを使う場合なら、以下のようになりますよね。
"C:\Users\ユーザー名\Pictures\images"

("フォルダのフルパス" & "フォルダ名")において、フルパスの後
又はフォルダ名の前に\記号を付けていないとか?
    • good
    • 0
この回答へのお礼

フォルダ名の記載は以下のようにしています。
For Each objFile In objFldr.GetFolder("C:\Users\FFF\Desktop" & "\123").Files

デスクトップにある123というフォルダです。

実は、そのフォルダ内にワードファイルとテキストファイルを同居させてました。
もしやと思い、画像ファイルのみにしたら、エラーが出現しなくなりました。

いろいろ試してみましたら、画像ファイルのみでなければというより、ファイルの数に対してのエラーのようです。
画像ファイルとテキストファイル混在でも合計がセクションの数と合っているとエラーは出ません。
マクロの結果としては、ページの中心に×印のオブジェクトが配置されるページが出現しますが、画像ではないので理解できます。

対応策がわかったので、最強です。
ありがとうございました。

お礼日時:2019/01/06 01:14

一応簡易版として、仮のマクロを提示しますね。



ネット上のマクロを継ぎ接ぎしただけなので、希望とは少し違うと
思いますが、指定したフォルダにある画像の数に応じた処理をする
ようにはなっています。
セクション数と画像数が同じなら、問題なく動くと思う。
差し込み印刷での新規文書を作らなくても、[セクション区切り]が
人数分用意されていれば動作します。

Sub 各ヘッダーに画像を挿入簡易版()
 Dim i As Integer
 Dim PIC As Shape
 Dim objFile As Object
 Dim objFldr As Object
 Dim sec As Section
 Dim hd_ft As HeaderFooter

' 各セクションのヘッダーで前と同じを解除
 For Each sec In ActiveDocument.Sections
  For Each hd_ft In sec.Headers
   hd_ft.LinkToPrevious = False
  Next
 Next sec

' 画面の更新を止める
 Application.ScreenUpdating = False

 Set objFldr = CreateObject("Scripting.FileSystemObject")
i = 0
' 画像フォルダを指定
 For Each objFile In objFldr.GetFolder("フォルダのフルパス" & "フォルダ名").Files
' 画像の数だけ処理する
 i = i + 1
' 各セクションに設定
 Set PIC = ActiveDocument _
   .Sections(i).Headers(wdHeaderFooterPrimary) _
   .Shapes.AddPicture(objFile)
' 配置関係の書式を設定
  With PIC
   .LockAspectRatio = msoTrue
   .ScaleHeight 1, msoTrue
   .RelativeHorizontalPosition = _
    wdRelativeHorizontalPositionPage
   .RelativeVerticalPosition = _
    wdRelativeVerticalPositionPage
   .Left = wdShapeCenter
   .Top = wdShapeCenter
  End With
 Next

' 画面の更新に戻す
 Application.ScreenUpdating = True

 Set objFldr = Nothing
 Set PIC = Nothing

End Sub
    • good
    • 0
この回答へのお礼

非常にやりたいことに近く感激しています。
画像の数だけセクションを用意しておけばうまく行くようですね。

ただ、少し不思議な挙動をしますが、私のやり方が間違っているのでしょうか。
マクロの実行をするとエラーメッセージがでて中断します。
リッセットボタンを押した後に画像が各ページに配置されます。

エラーメッセージ
実行時エラー’5941’:
指定されたコレクションのメンバーは存在しません。

デバッグをクリックすると、下記部分が黄色くなります。
Set PIC = ActiveDocument _
.Sections(i).Headers(wdHeaderFooterPrimary) _
.Shapes.AddPicture(objFile)

リセットを押すと画像が配置されます。

ここまででも十分負荷が軽減されました。
ありがとうございます。

お礼日時:2019/01/05 22:03

とりあえず、関連する情報だけ提示しておきます。


https://www.relief.jp/docs/word-vba-header-foote …
https://www.relief.jp/docs/word-vba-add-shape-he …
https://www.wordvbalab.com/code/2386/

これらの組み合わせで、差し込み印刷から新規文書への差し込みを
した文書に対して、対応できるか検証してみます。
結果がいつになるかは不明です。
    • good
    • 0
この回答へのお礼

VBAに関しての書籍を読んでも当てはまりそうなものが見つけられず、ネットからのサンプルの改良も試みましたが、エラーメッセージすら解釈できずお手上げです。
時間を割いていただいて本当にありがとうございます。

お礼日時:2019/01/05 02:55

現在の作業手順は、子供の出場した試合と結果、子供が書いた原稿


を配置し、ヘッダーを開いて[前と同じ]を解除し、画像を挿入して
から中央配置しているということですよね。
これらをページごとに繰り返しているので、できるだけ作業の手間
を省きたいということですね。

ページごとの基本となるレイアウトが同じであれば、差し込み印刷
を使う方法を私はお勧めします。

理由は幾つかあります。
・Excel側でデータを蓄積できることと
・人数の増減に対応しやすいこと
・Word側のページごとの基本のレイアウトが同じであること
・[新規文書への差し込み]で、ページでセクション区切りすること
・セクションが最初からあることで[前と同じ]を解除しやすいこと
・マクロでの処理が比較的簡単になるので、編集しやすいこと

事前にExcel側のデータを設定しないとならないが、次回以降の
管理がしやすくなります。
事前に、差し込み印刷のための差し込みフィールドを配置しておく
必要があるが、一度作成しておけば来年以降も再利用できます。

このことから、私としては差し込み印刷をお勧めします。

差し込み印刷での新規文書におけるマクロ処理については、簡単な
ものなら私なりに提示できるかもしれません。
(すぐには提示できませんが、検証後に回答するつもりです)
    • good
    • 0
この回答へのお礼

早速ありがとうございます。
求めている最終結果はお察しの通りです。
感謝いたします。

お礼日時:2019/01/04 13:46

質問にあるVBAは、挿入してある画像の折り返し指定のまま単純に


等倍でページ中央に配置するだけのものですよね。

これだけでもかなりの行になるのですから、各ファイル名の取得や
セクションの追加、画像の配置などの処理が必要なので、マクロが
複雑で長くなります。
それを書いてくれる奇特な回答者がいるのか半信半疑です。

単純にページごとに画像を配置するだけなら、差し込み印刷で対応
したほうが簡単です。

何故、ヘッダーでないと駄目なのでしょうか?
各ページごとに画像を配置するだけのことではないのですか?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qワード上Shapeの位置情報を統一基準で取得したい

ワードVBAを書いています。
お客さんのワード文書にShapeが貼り付いていて、その位置情報を、ページの境界線からの距離(ポイント)で取得したいと思っています。
shape.RelativeHorizontalPositionは、wdRelativeHorizontalPositionColumn となっていました。
これはどういう意味なんでしょうか?
色々調べたのですが、なかなかいい情報が見つかりません。
shape.Left/Topを、何の座標と足せば、見た目の座標になるのでしょうか?
詳しい方がおられたら教えてください。

Aベストアンサー

#1 です。
失礼しました。
Top および Left はアンカーからの位置っぽいですね。
なのでアンカーがページ端からどのぐらいの位置にあるのかを加えなければなりません。
Dim leftPos As Single
Dim topPos As Single
leftPos = myShape.Anchor.Information(wdHorizontalPositionRelativeToPage) + myShape.Left
topPos = myShape.Anchor.Information(wdVerticalPositionRelativeToPage) + myShape.Top

これで出せると思います。
Google 様に word shape absolute position vba で聞いてみました。

QWORD VBAでヘッタ・フッタの編集は?

 Word2000で、文書の一部を編集して使いまわししています。本文の方は、マクロの自動記録で作成したものを手直しして使っていますが、ヘッタ・フッタについては、枠を作ってそこにテキストボックスを組み合わせて作っているためかマクロが記録してくれません。というか、マクロの自動記録をONにすると修正できません。VBAで編集することは出来ないのでしょうか?
 何か方法があれば教えてください。

Aベストアンサー

Win2000+Word2000SR-1の環境です。

マクロの記録、
[表示]-[ヘッダ、フッタ]
ヘッダに「あああ」を入力
テキストボックス追加、「ああ」を入力

は記録できました。結果は後述。

--
> 修正できません。

どういう手順で修正しようとしているのでしょう?
修正するとエラーが出る?メニューが灰色で選択できない?

--
そのときの記録結果:

Sub Macro1()
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
ActiveWindow.Panes(2).Close
End If
If ActiveWindow.ActivePane.View.Type = wdNormalView Or ActiveWindow. _
ActivePane.View.Type = wdOutlineView Then
ActiveWindow.ActivePane.View.Type = wdPrintView
End If
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
Selection.TypeText Text:="あああ" & vbTab
Selection.HeaderFooter.Shapes.AddTextbox(msoTextOrientationHorizontal, _
184.05, 72.25, 108#, 90#).Select
Selection.ShapeRange.TextFrame.TextRange.Select
Selection.Collapse
Selection.TypeText Text:="ああ"
ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
End Sub

Win2000+Word2000SR-1の環境です。

マクロの記録、
[表示]-[ヘッダ、フッタ]
ヘッダに「あああ」を入力
テキストボックス追加、「ああ」を入力

は記録できました。結果は後述。

--
> 修正できません。

どういう手順で修正しようとしているのでしょう?
修正するとエラーが出る?メニューが灰色で選択できない?

--
そのときの記録結果:

Sub Macro1()
If ActiveWindow.View.SplitSpecial <> wdPaneNone Then
ActiveWindow.Panes(2).Close
End If
If ActiveWindow...続きを読む

Q【ワード】マクロで画像を選択する

ワードでマクロを記録している途中は、画像を選択できないのですが、
画像を選択という処理はマクロに出来ないのでしょうか?

Aベストアンサー

こんな感じ。

  ActiveDocument.Content.ShapeRange("Picture 1").Select

ShapeRange はシェープ等も含んでしまいますが、一括選択するなら、

  ActiveDocument.Content.ShapeRange.Select

です。ShapeRange を ヘルプで調べてみて下さい。名前を列挙するなら、

  For Each Pic In ActiveDocument.Content.ShapeRange
    If Pic.Name Like "Picture*" Then '<--画像だけ
      MsgBox Pic.Name
    End If
  Next Pic

のように ActiveDocument.Content (アクティブな文書の本文内)にある
ShapeRange コレクション(シェープや画像の集まり)を For Each ループ
で回します。

QWord VBA 写真 挿入

Excel で写真の挿入VBAは 皆さんのご回答を元になんとか出来ました。
回答者さま 有難う御座いました。
挿入したファイル(写真)のサイズ変更(見た目のサイズ)も出来ます。


ところが、
Wordへの写真挿入 
サイズの変更 になりますと、(VBAで記述したいのに)

「図の書式設定」自体効きません。

↑ 「マクロの記録」をしても、出来ません。
(ボタンは False 状態)


「マクロの記録」で出来ないという事は
つまり、Wordでは無理って考えれば良いのでしょうか。

Aベストアンサー

こんにちは。KenKen_SP です。

> つまり、Wordでは無理って考えれば良いのでしょうか。

何をやりたいのか具体的に書かれてないので、コメントし難いのですが、
とりあえず、画像を挿入したいなら、

  Application.Dialogs(wdDialogInsertPicture).Show

で画像挿入のダイアログを表示できます。また、ファイル名を指定して画像を
挿入し、各種操作するには、

Sub Sample()

  Dim PIC As Shape
  Dim strFilename As String

  strFilename = "C:\Sample.jpg"

  Set PIC = ActiveDocument.Shapes.AddPicture(strFilename)
  With PIC
    .LockAspectRatio = msoTrue ' 縦横比を保つ
    ' ミリメートル指定でサイズを変更する場合(例:50mm)
    .Width = MillimetersToPoints(50)
    ' 水平方向の位置を決めるときの基準点を余白に設定
    .RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin
    ' 垂直方向の位置を決めるときの基準点を余白に設定
    .RelativeVerticalPosition = wdRelativeVerticalPositionMargin
    ' ミリメートル指定で余白位置からの場所を指定(例:上10mm、左10mm)
    .Top = MillimetersToPoints(10)
    .Left = MillimetersToPoints(10)
    ' さらに動かしてみる(例:20ポイントずらす)
    ' ミリメートル指定なら .IncrementTop MillimetersToPoints(10) で 10mm
    .IncrementTop 20
    .IncrementLeft 20
    ' さらに回転(例:90度)
    .IncrementRotation 90#
  End With
  Set PIC = Nothing

End Sub

こんな感じで。微妙に Excel とは違いますが、基本は一緒です。

こんにちは。KenKen_SP です。

> つまり、Wordでは無理って考えれば良いのでしょうか。

何をやりたいのか具体的に書かれてないので、コメントし難いのですが、
とりあえず、画像を挿入したいなら、

  Application.Dialogs(wdDialogInsertPicture).Show

で画像挿入のダイアログを表示できます。また、ファイル名を指定して画像を
挿入し、各種操作するには、

Sub Sample()

  Dim PIC As Shape
  Dim strFilename As String

  strFilename = "C:\Sample.jpg"

  Set PIC = Acti...続きを読む

QWord VBA フッターでの文字の置換

ワードのVBAを使って、文章のみならず、フッターの文字の置換をやりたい。
過去ログをいろいろ調べましたが、今一つわかりません。

下のテストマクロにて、本文の文字は置換できます。
そこで、オブジェクトの階層をたどって、使えそうなコマンドに仕上げて
  [ Selection.HeaderFooter.Range.Find ]
実行しましたが、オブジェクト変数が設定されていませんと、返ってきます。

Sub Test()
With Selection.Find
.Text = "豊臣"
.Replacement.Text = "徳川"
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
ここまでは、本文での話であり、うまく置換はできます。

ここからが、問題のフッターでの置換作業の部分のつもりです。
With Selection.HeaderFooter.Range.Find ’<--この行にてエラー
.Text = "豊臣"
.Replacement.Text = "徳川"
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
End Sub

以上、よろしくお願い致します。

ワードのVBAを使って、文章のみならず、フッターの文字の置換をやりたい。
過去ログをいろいろ調べましたが、今一つわかりません。

下のテストマクロにて、本文の文字は置換できます。
そこで、オブジェクトの階層をたどって、使えそうなコマンドに仕上げて
  [ Selection.HeaderFooter.Range.Find ]
実行しましたが、オブジェクト変数が設定されていませんと、返ってきます。

Sub Test()
With Selection.Find
.Text = "豊臣"
.Replacement.Text = "徳川"
.Wrap = wd...続きを読む

Aベストアンサー

私が回答した過去ログを試してみて。

Word2010特定の名前を置き換えるマクロ
https://oshiete.goo.ne.jp/qa/8497837.html

Qエクセルのデータ抽出方法を教えてください

下記のような表から、A列のコードをもとにして「D」列の「3」行目の100、200、300(ピンク色)のセルを参照したいのですが関数がわかりません。
別のシートに10000なら100、20000なら200と表示させたいです。
vlookupでは行が1行でないとできませんでした。

Aベストアンサー

以下でいかがですか。
H2 =INDEX(E2:E13,MATCH(G2,A2:A13,0)+1)

Qエクセル リストと完全一致するセルに色をつける

シート1のA列とB列に
aaa ccc
bbb ggg
ccc kkk
ddd ooo
と言うリストがあって、A1〜A4はAチーム、B1〜B4まではBチームと名前を付けています
シート2にAチームのリスト4個が続いているものがあればセルを赤、Bチームのリスト4個が続いているものがあればセルを黄色に塗りたいです
AチームとBチームの中には同じ品番がある時もあります
条件付き書式で設定は出来るでしょうか?

Aベストアンサー

(´・ω・`)
”○” の数を数えるんじゃないんだよなあ。

・・・本題・・・

条件付き書式ですよね。

シート2のリストの並び順は
 aaa
 ccc
 bbb
 ddd
では「Aチーム」と認識しないという事でよろしいでしょうか?
ならば、とても簡単です。

シート2の一覧において、

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

という範囲について調べれば良いという事。

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル

 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4

 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5

 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

の4パターンについてそれぞれ調べれば良いだけ。

自分なら
 aaa-bbb-ccc-ddd
のようにシート1から文字列を作り、それが調べるセルで同じパターンになるかを調べます。
シート1はA5セルから、シート2はA11セルからデータが入力されているなら、

 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A11 & A12 & A13 & A14
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A12 & A13 & A14 & A15
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A13 & A14 & A15 & A16
 シート1!A5 & シート1!A6 & シート1!A7 & シート1!A8 = A14 & A15 & A16 & A17

という条件になる。
この4つのうちの一つでも条件を満たせばセルに赤色を付ければいい。
「Bチーム」についても同様にすればいいので、
この場合、8つの条件式を設定することになります。

面倒でもこの考え方ができていないと、ちょっと条件が変わっただけで対処できずに終わります。
冒頭で「並び順」について書きましたが、並び順がシート1のリストの通りでなくとも色を付けたい場合でも、この考え方は必要ということです。

・・・
ちなみに厄介なのが、どちらのチームにも「ccc」がいるというところかな。
これが無ければ違う方法でシンプルにできるんですけどねえ。

(´・ω・`)
”○” の数を数えるんじゃないんだよなあ。

・・・本題・・・

条件付き書式ですよね。

シート2のリストの並び順は
 aaa
 ccc
 bbb
 ddd
では「Aチーム」と認識しないという事でよろしいでしょうか?
ならば、とても簡単です。

シート2の一覧において、

 判定するセル1
 判定するセル2
 判定するセル3
 色を付けるセル
 判定するセル4
 判定するセル5
 判定するセル6

という範囲について調べれば良いという事。

 判定するセル1
 判定するセル2
 判定するセル3
 色を付け...続きを読む

Qワードマクロで画像を選択する方法

「図の挿入」を使って画像ファイルから読み込んで貼り付けた画像を、ワードマクロで選択したいと思っています。
どのようなコードを書けばいいか、教えてください。

ちなみに、以前どなたかがされた質問に対する回答(http://oshiete1.goo.ne.jp/qa2224793.html)で
ActiveDocument.Content.ShapeRange.Select
を使うという方法が提示されていましたが、「図の挿入」で読み込んだ画像ファイルには使えないようです。

よろしくお願いします。

Aベストアンサー

#1のご回答がありますが
私も判らずながらやってみました。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbawd11/html/woobjInlineShapes1.asp
にInlineShapes の説明があります。
ーー
まずエクセルの操作で、挿入ー図ーファイルからでファイル名を指定します。
するとInlineShapes のオブジェクトになるようで、
Sub test02()
For Each ishape In ActiveDocument.InlineShapes
ishape.ConvertToShape
Next ishape

End Sub
を実行するとShape オブジェクトに変換できます。
Sub test01()
Dim pc As Object
Dim ishape As Object
MsgBox ActiveDocument.Shapes.Count
MsgBox ActiveDocument.InlineShapes.Count
For Each pc In ActiveDocument.Shapes
MsgBox pc.Name
Next
End Sub
を実行しますと
メッセージボックスで2と0がでて
Picture 6
などと表示できます。
Sub test03()
ActiveDocument.Shapes("Picture 6").Select
Selection.Delete
End Sub
で削除できました。
ーーー
InlineShapeを捉える件ですが
http://www.keep-on.com/excelyou/2001lng4/200112/01120012.txt
に書いておられますが
Indexでしか捕らえられないのかもしれません。
Sub test04()
MsgBox ActiveDocument.InlineShapes.Count
n = ActiveDocument.InlineShapes.Count
For i = 1 To n
MsgBox ActiveDocument.InlineShapes(i).Height
Next i
End Sub
私もNameでやってみましたができませんでした。
他に方法があるのかどうかわかりません。
Shapes->InlineShapeは選択したものにつき
Sub ConvertToInlineShape()
With Selection
' \\ If we selected a Shape then convert to InlineShape
If .Type = wdSelectionShape Then
.ShapeRange(1).ConvertToInlineShape
End If
End With
End Sub
というコードを見つけました。
Pictureの判別は
Sub test05()
Dim inlineShape
For Each inlineShape In ActiveDocument.InlineShapes
If inlineShape.Type = wdInlineShapePicture Then
MsgBox inlineShape.Height
End If
Next
End Sub
を見つけました。

#1のご回答がありますが
私も判らずながらやってみました。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbawd11/html/woobjInlineShapes1.asp
にInlineShapes の説明があります。
ーー
まずエクセルの操作で、挿入ー図ーファイルからでファイル名を指定します。
するとInlineShapes のオブジェクトになるようで、
Sub test02()
For Each ishape In ActiveDocument.InlineShapes
ishape.ConvertToShape
Next ishape

End Sub
を実行するとShape オブジェクトに変換で...続きを読む

Q条件付き書式の設定の仕方

別の表にあるセルと同じものがあればセルに色を付けたいのです。

条件付き書式の設定で良いかと思いますが

例えば

=COUNTIF(A1:A11,D2)

この式の

A1:A11

この部分は$A1:$A11 のように絶対値での範囲指定しないとエラーになってしまいます。

この部分のデーターは時々追加などがありますので、$A1 列単位での範囲指定をしたいのですが
できないのでしょうか?

よろしくお願いいたします。

Aベストアンサー

>>一からやっていることを整理して書いていただけますか?
と書いたと思うんですが。

A列とB列はそれぞれ文字列で入っているのですか?データ型は同じ?
例示ではどれにも色はつきませんよね?
うまく行かないのは全部ですか?うまくいくデータといかないデータの例は挙げられますか?
条件付き書式にはどのように設定しているのか適用先と条件を書いてもらえますか?
再掲ですが、
>>つまり、見た目空白のセルにも色がついてしまいます
>ここには元々どのようなデータが入っていたのですか?

Q2つの条件で検索する方法を教えてください。

お世話になります。

データがE1:G16にあります。A2とB2を入力すると、C2にG列の該当するデータを検索したいのですが、うまく検索することができません。

お知恵をお貸しください。
よろしくお願いいたします。

Aベストアンサー

こんばんは!

重複するデータはない!という前提で・・・

画像の配置だとC2セルに
=IF(COUNTIFS(E2:E16,A2,F2:F16,B2),INDEX(G2:G16,MIN(IF((E2:E16=A2)*(F2:F16=B2),ROW(G2:G16)-1))),"データなし")

上記数式は配列数式になりますので、Ctrl+Shift+Enterで確定!(←必須★)

または
=IF(COUNTIFS(E2:E16,A2,F2:F16,B2),INDEX(G2:G16,SUMPRODUCT((E2:E16=A2)*(F2:F16=B2)*(ROW(G2:G16)-1))),"データなし")

これは配列数式の操作は不要です。

としてみてください。m(_ _)m


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング