質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AppleScript

AppleScriptは、アップル社が開発しているMac OS用のスクリプト言語。AppleScript本体に限らず、同じ言語で多くのAppleScript対応アプリケーションを操縦することが可能です。 自然言語(英語)に近い構文を持ちます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

1回答

7772閲覧

macでこのスクリプトが動くようにしたい

roloc2909

総合スコア6

AppleScript

AppleScriptは、アップル社が開発しているMac OS用のスクリプト言語。AppleScript本体に限らず、同じ言語で多くのAppleScript対応アプリケーションを操縦することが可能です。 自然言語(英語)に近い構文を持ちます。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2020/09/28 07:01

データの集計にWINDOWSでマクロを組んでいて、完成したのでmacに移行したら全く動きませんでした。。。

調べてみたらmacではVBAは動作せず、Dir関数も動かないようですね。
MACのエクセル上でこれを動作させるにはどのようにすればいいでしょうか?

VBA

1Sub 確認() 2 3 Application.ScreenUpdating = False ' 動作を見えなくする 4 Set FSO = CreateObject("Scripting.FileSystemObject") ' ダイアログを使用できるように 5 6 With CreateObject("WScript.Shell") ' 既定の保存先をこのbookがある場所に指定 7 .CurrentDirectory = ThisWorkbook.Path & "\" 8 End With 9 10'********************************************************************************************************************** 11' 【手動】 パスを入れる!!! 12 Const sDirPath As String = "C:\Users\lab\Desktop\目標フォルダ\" 13'********************************************************************************************************************** 14 15 16 t = Range("B3").Value ' 時間を取得 17 k = StrConv(UCase(Range("B4").Text), vbUpperCase) ' 地点イニシャルを取得(大文字に変換) 18 Key = "*" & k & "*" ' 絶対パスの検索用に前後にワイルドカード 19 i = 1 20 21 22 Set objFolder = FSO.GetFolder(sDirPath) ' 地点取得 23 24 For Each site In objFolder.SubFolders ' 地点のLoop 25 26 If site Like Key Then ' イニシャルを含んでいるか判定 27 28 machine = Dir(site & "\WAVE\", vbDirectory) ' 機材取得 29 30 Do While machine <> "" ' 機材フォルダでのLoop 31 32 If GetAttr(site & "\WAVE\" & machine) And vbDirectory Then ' フォルダか判定 33 If (machine) <> "." And (machine) <> ".." Then ' 名前のあるフォルダか判定 34 35 num = FSO.GetFolder(site & "\WAVE\" & machine).Files.Count ' ファイル数を取得する 36 37 If num <> t Then ' 観測時間分あるか判定 38 39 Cells(7 + i, 1) = site ' パス 40 Cells(7 + i, 3) = machine ' 機材名 41 Cells(7 + i, 4) = num ' データ数 42 43 i = i + 1 44 45 End If ' 観測時間分あるか判定終了 46 End If ' 名前のあるフォルダか判定終了 47 End If ' フォルダか判定終了 48 49 machine = Dir() 50 51 Loop ' 機材フォルダでのLoop終了 52 End If ' イニシャルを含んでいるか判定終了 53 Next site ' 地点フォルダでのLoop終了 54 55 Set objFso = Nothing 56 57 Range("B8").AutoFill Destination:=Range("B8:B" & Range("A" & Cells.Rows.Count).End(xlUp).Row), Type:=xlFillCopy ' B8から下にオートフィル 58 59 60 Filename = Application.GetSaveAsFilename(InitialFileName:="Result.csv" _ 61 , Filefilter:="CSVファイル,*.csv ,Excelファイル,*.xls*") ' 保存先ダイアログ 62 63 64 If Filename <> "False" Then ' ファイル名が指定されているのか判定 65 ThisWorkbook.SaveAs Filename, FileFormat:=xlCSV 66 Else 67 ThisWorkbook.SaveAs Filename:="確認結果" & ".csv", FileFormat:=xlCSV 68 End If 69 70 71End Sub 72

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

radames1000

2020/09/28 08:17

MacのOfficeのバージョンは何ですか?
roloc2909

2020/09/28 08:36

radames1000さん バージョン 16.41 です。
guest

回答1

0

質問者様が誤解されているようなので
MacでもVBAはうごきます。

ただ

vba

1 Set FSO = CreateObject("Scripting.FileSystemObject") ' ダイアログを使用できるように 2 With CreateObject("WScript.Shell") ' 既定の保存先をこのbookがある場所に指定 3 DIR関数

(windowsとmacではpathの概念と処理が違う)

この処理はWindows固有の処理です。
その為動かないだけです。

対応はWindowsとMacを分ける事です

VBA

1#If MAC_OFFICE_VERSION >= 15 Then 2'MAC Office15以上の場合 3 4#ELSEIf Mac Then 5'上記以外のMAC Officeの場合 6 7#ELSE 8'Windowsの場合 9 10#End IF

と書き分けることができます。

投稿2020/09/28 07:13

kuma_kuma_

総合スコア2506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

roloc2909

2020/09/28 07:31

kuma_kuma_ さん お返事ありがとうございます。 なるほどです、Windows固有のものだったんですね。 そしたら、返信にあった3つに対してそれぞれmac上で同じ動作をするような命令文があるのでしょうか?
kuma_kuma_

2020/09/28 07:55

一応あるみたいですが当方Macを所有していないので検証ができません。 その為回答できない事をご了承ください。
roloc2909

2020/09/28 08:11

kuma_kuma_ さん 分かりました。 ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問