こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

macのofficeのVBAでファイルを検索する

現在iMac 1.9GHz(isight内蔵) PowerPC G5 でoffice 2004 for macを使用しています。

以下のような複数のフォルダを含む任意のフォルダ(AA)内から任意のファイル名(aa or dd)のファイルが存在するかどうかを検索し、
ファイルが存在すればファイル名を、無ければ無いことを返すプログラムを作成しようと考えています。

AA---BB---aa.xls
|
--CC---bb.xls
| |
| --cc.xls
---------dd.xls




そのために以下のプログラムを用意しました。(他のサイトのマル写しですが)

ーーーーー
Sub Sample()
Dim f, buf As String, cnt As Long, FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
With Application.FileSearch
.NewSearch
buf = InputBox("検索するファイル名を指定してください")
If buf = "" Or buf = "False" Then Exit Sub
.Filename = buf
buf = GetFolder("検索を開始するフォルダを指定してください")
If buf = "" Then Exit Sub
.LookIn = buf
.SearchSubFolders = True ''サブフォルダも検索する
If .Execute() > 0 Then
For Each f In .FoundFiles
cnt = cnt + 1
Cells(cnt, 1) = f ''パス+ファイル名
Cells(cnt, 2) = FSO.GetFile(f).Name ''ファイル名
Cells(cnt, 3) = FSO.GetFile(f).ParentFolder ''パス
Next f
Else
MsgBox "見つかりませんでした"
End If
End With
Set FSO = Nothing
End Sub


Function GetFolder(msg As String)
Dim Shell, myPath
Set Shell = CreateObject("Shell.Application")
Set myPath = Shell.BrowseForFolder(&O0, msg, &H1 + &H10)
If Not myPath Is Nothing Then
GetFolder = myPath.Items.Item.Path
Else
GetFolder = ""
End If
Set Shell = Nothing
Set myPath = Nothing
End Function
ーーーーー
このプログラムをexcel2004上のマクロとして実行すると、


実行時エラー’429’:
ActiveX コンポーネントはオブジェクトを作成できません。


とエラーが表示されます。

そこで、デバッグとして一行ずつステップインさせると、二行目の

Set FSO = CreateObject("Scripting.FileSystemObject")

の部分でエラーとなり、動作が停止します。

何故この様なエラーが発生するのか判りません。
このエラーが発生する理由と解決策をお教えいただきたいと思います。

宜しくお願いいたします。

投稿日時 - 2010-12-08 11:05:44

QNo.6370638

困ってます

質問者が選んだベストアンサー

VBA マクロから AppleScript を呼ぶ場合は、MacScript 関数を使います。
http://office.microsoft.com/ja-jp/access-help/HA001228880.aspx

最初から全て AppleScript で書いて、メニューバーに表示されるスクリプトメニューから実行するという方法もあります。
(スクリプトメニューの表示は AppleScript エディタの環境設定で行います)

投稿日時 - 2010-12-10 11:47:11

お礼

ご回答ありがとうございます。

MacScript 関数 という物が存在するのですね。
もう少し勉強してからチャレンジしてみます。

ありがとうございました。

投稿日時 - 2010-12-14 09:19:48

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ActiveX コンポーネントを動作する為には『WindowsOS』が動作している事が前提です。
ですからこのスクリプトはエラーに成ります。
Macの場合は『AppleScript エディタ』でスクリプトを作成。

投稿日時 - 2010-12-09 08:53:33

お礼

ご回答ありがとうございます。

>Macの場合は『AppleScript エディタ』でスクリプトを作成。
と有りますが、
Excelのマクロで使用する場合は
AppleScript エディタで作成したスクリプトをExcelで呼び出す。

というような使い方をするということでしょうか。

ご教授いただければ幸いです。
宜しくお願いいたします。

投稿日時 - 2010-12-10 11:35:25

ANo.1

> ActiveX コンポーネントはオブジェクトを作成できません。

というエラーメッセージそのままの理由です。

> Mac. の Excel で ActiveX コントロールを使用することはできません。
http://support.microsoft.com/kb/274222/ja

解決策は、Windows を使用するしかありません。

投稿日時 - 2010-12-08 11:16:45

お礼

ご回答ありがとうございます。

macでは使用出来ないのですか。少し予想外です。

もともとはwindows機を使用していたので、macに移行した
だけでエラーが発生したことで混乱しました。

投稿日時 - 2010-12-10 11:32:50

あなたにオススメの質問