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

解決済みの質問

EXCEL2010のVBAについて教えて下さい。

1つのBOOKから、
フォルダの中に入っているいろんなファイルを開くVBAです。
2002、2003では上手くいくのですが、2010で同じように記述したところ、
EXCEL以外のファイルが開きません。

どうかご教授よろしくお願いします。

With CreateObject("Scripting.FileSystemObject")
FileType = .getfile(Myfilename).Type
End With

If Right(Myfilename, 4) = ".xls" Or Right(Myfilename, 5) = ".xlsx" Then
Workbooks.Open Myfilename

ElseIf Right(Myfilename, 4) = ".doc" Or Right(Myfilename, 5) = ".docx" Then
Set objwd = CreateObject("Word.Application")
objwd.Documents.Open Myfilename
ElseIf Right(Myfilename, 4) = ".ppt" Or Right(Myfilename, 5) = ".pptx" Then
Set PttApp = CreateObject("Powerpoint.Application")
PttApp.Presentations.Open (Myfilename), ReadOnly:=msoFalse

Else
MsgBox "ファイル不正:" & FileType
Exit Sub
End If

投稿日時 - 2011-11-07 16:44:07

QNo.7119091

困ってます

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

#1のご指摘の通りではないですか。
下記はPPTの部分など省略してます。エクセルの中から、CreateObjectでワードを呼び出しているので、objwd.Visible = Trueを入れると文書画面が現れます。画面に見えてないだけが判るはずです。
エクセルはエクセルの中から開いているので不要でしょう。
MsgBox "ワードを開いた"は確認のためで用済み後削除のこと。
むしろGetOpenFilenameの引数の書き方で苦労した。PPTが無いので、その分を増やしてください。
そして、「ファイルを開く」のダイアロウグの、「ファイルの種類」の▼をクリックして、エクセルやワードやPPTの拡張子を指定することになります。するとそれに絞られたファイルの一覧がでます。
ーー
Sub test01()
myFileName = Application.GetOpenFilename("エクセル ファイル(*.xls),*.xls,エクセル ファイル(*.xlsm),*.xlsm , ワード ファイル(*.doc),*.doc,ワード ファイル(*.docx),*.docx")
If Right(myFileName, 4) = ".xls" Or Right(myFileName, 5) = ".xlsx" Then
Workbooks.Open myFileName
MsgBox "エクセルを開いた"
Workbooks.Close
ElseIf Right(myFileName, 4) = ".doc" Or Right(myFileName, 5) = ".docx" Then
Set objwd = CreateObject("Word.Application")
Set wd = objwd.Documents.Open(myFileName)
objwd.Visible = True
MsgBox "ワードを開いた"
wd.Close
Set objwd = Nothing
ElseIf Right(myFileName, 4) = ".ppt" Or Right(myFileName, 5) = ".pptx" Then
Set PPtApp = CreateObject("Powerpoint.Application")
PPtApp.Presentations.Open (myFileName), ReadOnly:=msoFalse
Else
MsgBox "ファイル不正:" & FileType
Exit Sub
End If
End Sub

投稿日時 - 2011-11-07 21:35:06

お礼

ありがとうございます。

Visible = True
で開くことは出来ましたが、EXCELの画面に已然と隠れたままです。
全面にするにはEXCELを縮小化する事も書く必要がありそうですね。

投稿日時 - 2011-11-12 10:44:03

ANo.2

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

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

回答(2)

ANo.1

もしかして。
開かないのでは無く、開いた Word , PowerPoint が見えないだけ(Visible = False)では?
CreateObject で OfficeApplication を実行した場合、Application.Visible の規定値は False です。

objwd.Documents.Open の下に
objwd.Visible = True を追加してみて下さい。

同様に、PttApp.Presentations.Open の下に
PttApp.Visible = True を追加してみて下さい。

投稿日時 - 2011-11-07 17:28:21

あなたにオススメの質問