10

私は、一連の画像を Excel ドキュメントにインポートし、後でこのドキュメントを他のコンピューターで使用する必要がある友人のために、マクロに取り組んでいます。私が遭遇した問題は、このドキュメントを別のコンピューターで開いたときに、すべての画像が消えてしまい、代わりに、画像のパスが見つからなかったことを示すこれらの小さなエラー サインが表示されることです。

Excel 2007 を使用している自分のコンピューターでマクロを開発しましたが、コードは完全に正常に動作します。私の友人は Excel 2013 を使用していますが、どうやらこれら 2 つのバージョンで画像のインポートと保存を処理する方法に大きな違いがあるようです。

全体として、画像を挿入する方法は 2 つあります。最初に試したのは、次のようなものでした。

Set pic = ActiveSheet.Pictures.Insert("C:\documents\somepicture.jpg")

これを行う 2 番目の方法は次のようになります。

Set pic = Application.ActiveSheet.Shapes.AddPicture("C:\documents\somepicture.jpg", False, True, 1, 1, 1, 1)

この 2 番目のアプローチのドキュメントでは、3 番目のパラメーター (ここでは True) がドキュメントと共に画像を保存する責任があると言われています。

ただし、これらのアプローチはどちらも最終結果では多かれ少なかれ同じように見えます。私にとってはうまく機能しますが、Excel 2013 を使用している友人の PC で実行すると機能しません。 Excelのバージョン(Excel 2010以降、これらの画像インポート方法にバグなどがあることをどこかで読みました)。

4

4 に答える 4

3

私のすべての用途では、画像を追加するとInsert、ハードドライブ上のファイルへの参照が作成されます。何らかの理由で、画像をファイルに埋め込む場合は、形状を追加してから、AddPicture(あなたが使用するように)、これで問題が発生したことはありません。

また、画像の高さと幅を 1 ピクセルに設定しています。以下のように実際の設定が高いことはほとんどありません。

Application.ActiveSheet.Shapes.AddPicture "C:\documents\somepicture.jpg", False, True, 1, 1, 100, 100

ずっと機能していた気がしますが、小さすぎて画像を見たことがないだけです。

于 2013-11-11T15:13:44.957 に答える
1

私は通常、サーバーから画像をファイルにダウンロードし、そのサーバーにアクセスできないクライアントに転送するマクロを実行します。私のコーディングは非常に基本的なものなので、画像を挿入するために使用する特定の行をコピーするだけです。

Set pic = ActiveSheet.Shapes.AddPicture(Filename:="C:\documents\somepicture.jpg", _
    linktofile:=msoFalse, savewithdocument:=msoCTrue, Left:=0, Top:=0, Width:=-1, Height:=-1)

あなたが提案したコードと技術的に同じコードであることは知っていますが、msoCTrue と msoFalse を使用してみてください。それが問題の一部であることを思い出しているようです。うまくいくかどうか教えてください。何か他のことを試すことができるかもしれません。それは私のために働くので、私たちはあなたのためにそれを働かせることができるはずです.

于 2015-11-10T20:09:49.420 に答える
1

以前の回答は本当に役に立ちました!メソッドパラメーターへの参照を追加したかっただけです(幅と高さはピクセル単位だと思っていましたが、ポイント単位であることがわかりました):

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.shapes.addpicture.ASPX

于 2015-01-31T20:25:59.077 に答える