執筆:EugeneAmnis
Excel 2019 for Mac VBA での画像の扱い
前回ユーザーフォーム上のイメージコントロールは使用可能なのかを調べ、イメージコントロールの Picture属性に直接設定 のみ成功しました。今回はインターネットの掲示板で質問されていた問題のあったコードを少し改変してシート上に画像を挿入する事ができるのか調べてみたいと思います。
参考サイト Windowsで動くVBAがmacOSで動かない
コード内容
改変後ですが、コードの概要は選択セル内の画像パスを元に画像を挿入し、サイズをセル内に収めて中央に配置するものです。質問者の方が丁寧にコメントされているのでわかりやすいかと思います。
Sub EggFunc_pasteImage()
' 変数定義
Dim filePath As String
Dim targetCell As Range
' 選択したセル範囲を順次処理
For Each targetCell In Selection.Cells
' セルを選択
targetCell.Select
' 値があれば
If targetCell.value <> "" Then
' 画像ファイル名として取得
filePath = targetCell.value
' 画像読込み
ActiveSheet.Pictures.Insert(filePath).Select
' 画像が大きい場合、画像サイズをセル幅に合わせる
If Selection.Width > targetCell.Width Or Selection.Height > targetCell.Height Then
If Selection.Width / targetCell.Width > Selection.Height / targetCell.Height Then
Selection.Height = Selection.Height * (targetCell.Width / Selection.Width)
Selection.Width = targetCell.Width
Else
Selection.Width = Selection.Width * (targetCell.Height / Selection.Height)
Selection.Height = targetCell.Height
End If
End If
' 表示位置をセル中央に移動
Selection.Top = targetCell.Top + (targetCell.Height - Selection.Height) / 2
Selection.Left = targetCell.Left + (targetCell.Width - Selection.Width) / 2
End If
Next
End Sub
Windows版での挙動
質問者様の言うとおり問題なく動いています。
Mac版での挙動
質問者様の言うとおり読み込めません。アクセス権の付与作業がないのが問題と考え、画像を展開したままファイルを閉じて開いてアクセス権を付与しましたが変化はありませんでした。
次にマクロの自動記録でマクロを作成し、そのマクロのファイルパスを変更したものを動かすと画像の挿入に成功しました。これを踏まえ、該当コードをノックアウト方式でデバッグを行なっていきました。位置変更のノックアウトで動くことを確認後、位置変更のコードを再度追加したところ問題なく動きました。
別のセルに画像パスを入力し、動かしてみると今度は画像の挿入に失敗しました。アクセス権の付与などをしても画像の挿入には失敗したままでした。原因は今現在のところ不明です。
Excel 2019 for Mac VBA での画像の扱いは安定しているとは言えない状況だと言う事がわかりました。事実上使用できないと判断した方が良さそうです。
リンク
リンク