プロが教えるわが家の防犯対策術!

いつもお世話になっております。
1.件名の通り、下記VBA構文をネットで見つけ、Windowsで試したところ、うまく作動しました。
しかし、macOSだと、マクロは動きますが、画像が白い□に、赤いばってんが表示され、うまく機能していないようです。デバックが出てこないので原因がわからずで。。。
どこに手を加えれば良いか、わからないので、恐縮ですが、VBA全文ご教示くださいますと幸いです。

2.また、同マクロでpngファイルでも作動できるようにしたいのですが、どこか調整すべき点はありますでしょうか。

環境は以下の通りです。
macOS High Sierra ver 10.13.6
Excel for Mac ver16.16.1
不足情報あれば、おしらせください。

よろしくおねがいします。

以下構文↓

' 選択したセルに記載された画像ファイルパス(名)のファイルを読み込み、EXCELに貼り付ける。
'
Sub EggFunc_pasteImage()

' 変数定義
Dim filePath As String
Dim targetCell As Range

' エラーを無視する(画像ファイル読込み失敗時用)
On Error Resume Next

' 選択したセル範囲を順次処理
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

A 回答 (4件)

エラー原因が不明のまま


>' エラーを無視する(画像ファイル読込み失敗時用)
>On Error Resume Next
を使うのはお勧めできません。取り得ず外しておきましょう。

>' 画像ファイル名として取得
>filePath = targetCell.Value
Pathもしているのでしょうが、WindowsとMacOSでは区切り文字が異なります。
これが原因ではないでしょうか。
こちらを参考にしてください。
ファイルパスのフォルダの区切り記号が違う
http://darumaexcel.uijin.com/info/pause.html
    • good
    • 0

調べてみたらMac版OfficeのVBAエディタはまだ完全ではなく、Windows版でできるはずの機能が未実装だそうです。

ただしブレークポイントの設定やイミディエイトウィンドウは使えるので、それで地味に追いかけるしかないでしょう。そのへんは以下に解説があります。

http://gadgets-geek.blog.jp/archives/1045571708. …
    • good
    • 0

WindowsとMac、OSが違うと仮想PCを構築し使うのでは?


1)仮想PC(バーチャルマシン)を構築し、Windowsをインストール
Virtual PC for Mac 7
VMware Fusion
エミュレター

2)Boot Campを利用しWindowsをインストールし、デュアルブート

3)互換性のあるレイヤーを準備し、APIレベルでOSの差異を吸収
Wine
CrossOver Mac

4)Microsoft 社のリモートデスクトップMicrosoft Remote Desktop Connection Client for Mac 2
    • good
    • 0

参照設定でしょうね


開発ーーーvba-ーーツールーーー参照設定

使うサブルーチンに チェックがついていると思いますが、両方比べればwinにあって、macにないものが 原因

だからと言って、macにそれに該当するものがあるか? 何に該当するか
難しい・・・

もしそうなら、補足にて。
    • good
    • 0

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