ここから本文です

Mac版Excelマクロの質問です。 所用で複数のブックのSheet1を1つのブック(ファイ...

mar********さん

2017/3/1100:41:10

Mac版Excelマクロの質問です。
所用で複数のブックのSheet1を1つのブック(ファイル毎に別シート)にまとめたいと思い、以下のサイトのコードをそのまま使用したのですが、上手く出来ません。

https://rakuzanet.jp/excel-book-sheet-combine.html

パス名は"/Users/◯◯◯/Desktop/test"としました。(◯◯◯はユーザ名です)
実行したところ、新規ブックは作成されるのですが白紙になります。
このコードはMac版に対応していないのでしょうか。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

'2015/09/18 ver1.1
Sub ExcelbookCombine()
'結合したいファイルがあるフォルダの場所 cドライブなら "C:\test\"
Const Fol As String = "/Users/◯◯◯/Desktop/test"
Dim Fn
Dim NewFile As Workbook
Dim Wb As Workbook
Dim Ws1 As Worksheet
Dim Ws2 As Worksheet
Dim R As Range
Set NewFile = Workbooks.Add
Set Ws1 = NewFile.Worksheets(1)
Set R = Ws1.Range("A1")
Fn = Dir(Fol, vbNormal)
Do Until Fn = ""
Set Wb = Workbooks.Open(Fol & Fn)
'ワークシート1をコピーする場合は Wb.Worksheets(1)
'ワークシート2をコピーする場合は Wb.Worksheets(2)
Set Ws2 = Wb.Worksheets(1)
'Aの1行目から8列目までをコピーして結合する
Ws2.Range("A1", Ws2.Cells(Rows.Count, 1).End(xlUp)).Resize(, 8).Copy R
Set R = R.End(xlDown).Offset(1)
Wb.Close
'Debug.Print Fn
Fn = Dir
Loop
Set R = Nothing
Set Ws1 = Nothing: Set Ws2 = Nothing
Set Wb = Nothing: Set NewFile = Nothing
End Sub

閲覧数:
291
回答数:
2
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

tie********さん

2017/3/1104:18:02

>このコードはMac版に対応していないのでしょうか。
対応していません。
なぜなら、Excel for mac 2011 VBAは、Dir関数を使用できないので

'おそらく、次のコードは、動作しないと思います
(※Dir関数が使用できないため)

Sub Dir関数の動作確認()
Dim Fol As String, Fn
Fol = "D:\test\"'★Windows環境の場合(フォルダ名)
'Fol = "Macintosh HD:Users:(ユーザー名):Documents:test"'★Mac環境の場合(フォルダ名)
Fn = Dir(Fol, vbNormal)
MsgBox Fn
End Sub

〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
こちらのサイトに対応策が書いてあるみたいです。
http://chiroleen.hateblo.jp/entry/20130222/1361537144
MacScript関数を使って、変数「scriptToRun」に記述した
AppleScriptを実行する。
とありますね…。
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓

Windows 10(64bit) - Excel2013(32bit)環境で、
上記サイトのコードを走らせてみましたが、
i = MacScript(scriptToRun)
のところで、実行時エラー5
プロシージャの呼び出し、または引数が不正です。
とエラーになります。
詳しくないのですが、Windows環境では、MacScript関数は使えないのですね…。

こちらのサイトでは、MacのVBAで、Dirは使えない。
また、FileSystemObject も使えない。
(こちらはWindowsのActive Xに依存)とあります。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1211486160...
〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
参考までに、Windows環境で動作確認したコードを載せておきます。

'Windowsでは、
'デスクトップの「test」フォルダにある複数のエクセルブックを、
'下記のコードで新規ブックに統合できます

Option Explicit

Sub ExcelbookCombine2()
Dim Fol As String
Dim NewFile As Workbook, Ws1 As Worksheet
Dim R As Range, Fn As String
Dim Wb As Workbook, Ws2 As Worksheet
'----------------------------------------
Fol = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\test\" '★
If Dir(Fol, vbDirectory) = "" Then
MsgBox "次のフォルダは存在しません " & vbCrLf & Fol
End '終了
End If
'----------------------------------------
Set NewFile = Workbooks.Add
Set Ws1 = NewFile.Worksheets(1)
Set R = Ws1.Range("A1") 'Rの初期値
Fn = Dir(Fol, vbNormal)
'----------------------------------------
Do Until Fn = ""
Set Wb = Workbooks.Open(Fol & Fn) '開く
Set Ws2 = Wb.Worksheets(1)
'Debug.Print Ws2.Parent.Name '開いたファイル名
Ws2.Range("A1", Ws2.Cells(Rows.Count, 1).End(xlUp)).Resize(, 8).Copy R 'コピペ
Set R = R.End(xlDown).Offset(1) '次のRを設定
Wb.Close '閉じる
Fn = Dir
Loop
'----------------------------------------
Set NewFile = Nothing: Set Ws1 = Nothing
Set R = Nothing
Set Wb = Nothing: Set Ws2 = Nothing
End Sub

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

a_h********さん

2017/3/1100:53:42

>パス名は"/Users/◯◯◯/Desktop/test"としました。(◯◯◯はユーザ名です)
どこのドライブ?

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる