ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュのexcel2007から2010に乗り換えて

  • mixiチェック
  • このエントリーをはてなブックマークに追加
2007で使っていたマクロで動作が変わりました。

For Each sh In ActiveSheet.Shapes

If sh.Type = msoPicture Then

mydate = Mid(sh.AlternativeText, WorksheetFunction.Search("2", sh.AlternativeText), 10)
err_chk = InStr(mydate, "\")
    **********
**********
**********
**********
*********
End If

2007では写真データがある場合は、mydate = ******
のルーティンに入ったのですが、2010になったら
If sh.Type = msoPicture に写真データがあっても認識して
くれなくなりました。mydate = に入ってくれません。
対応策がありましたら教えてください。

コメント(9)

はじめまして。

2010ではありませんが、2007と2016でサンプルコードを実行して確認してみました。

2007:sh.AlternativeText → ファイル名が取得されました。
2016:sh.AlternativeText → 何も取得できません。(null)

2007では代替テキストに初期値としてファイル名が入るようですが、2016は空白のままでした。
2010ももしかしたら代替テキストが空白なのではないかと推測します。

対応策はわかりませんが、発生事象はこんなところでしょうか。
らっせる苦労  さま
確認していただきありがとうございます。何で古いバージョンではリンク先ホルダーの名称を代替テキストにしていたのを、バージョンアップでやめてしまったのか。マクロの動作を改良するしかないのでこちらに質問を上げさせていた打破ました。
あれっ!キーボードの配置があらしい機械ではちょっと違っているので、
いた打破ました。はいただきましたの間違いでした。
この辺、参考になりますか?
https://docs.microsoft.com/en-us/office/vba/api/excel.shape.alternativetext
https://www.ozgrid.com/VBA/WorkbookPath.htm
>>[4]

参考URLをありがとうございます。翻訳してみましたがチンプンカンプン。写真を取り込んだ時のホルダー名やファイル名の情報を得る説明ではなさそうでした。
excelのバージョンが変わったら、「If sh.Type = msoPicture」という条件にヒットしなくなった、というお話ですよね?実際にsh.Typeにはどんな値が入っていますか?私は試していませんが「11(msoLinkedPicture)」を返すようになったのかも。もしそうであれば、「If sh.Type = msoPicture OR sh.Type = msoLinkedPicture Then...」でいけるかも。
https://docs.microsoft.com/en-us/office/vba/api/office.msoshapetype
>>[6]
横槍失礼します。
多分条件分岐は問題ないのかなと思います。
ただ、AlternativeTextが空で、期待している値が返ってこないというお話なのかなと。
お話から察するに、古いバージョンではAlternativeTextにリンク画像の元ファイルの情報が入っていたみたいですね。
ぜんぜん違うかもしれませんが
代替テキストが、勝手に入っていたものが、2010からは、自分で入れてね!に変わったからじゃないでしょうか?

画像を右クリックし、[代替テキストの編集] を選択してみてください。
なんにも入っていないと思います。

まとはずれでしたら、ごめんなさい。
すでに挿入しているリンク画像から元画像のパスを出すのって難しいんですねぇ。
というか、調べきれなかったw
もういっそ、画像を挿入するマクロを作って、その時一緒にパスを記録する方向にするってのはいかがでしょうか?

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。