EXCEL2010のVBAでフォルダ内の異なるファイルを開く方法

このQ&Aのポイント
  • EXCEL2010のVBAで、フォルダ内にあるさまざまなファイルを開く方法について教えてください。
  • 2002年や2003年ではうまく動作していたVBAコードが、EXCEL2010ではうまく動作しなくなりました。
  • 具体的には、EXCEL以外のファイルを開くことができません。どのように修正すればよいでしょうか?
回答を見る
  • ベストアンサー

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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

#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

siitakekonbu
質問者

お礼

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

その他の回答 (1)

回答No.1

もしかして。 開かないのでは無く、開いた Word , PowerPoint が見えないだけ(Visible = False)では? CreateObject で OfficeApplication を実行した場合、Application.Visible の規定値は False です。 objwd.Documents.Open の下に objwd.Visible = True を追加してみて下さい。 同様に、PttApp.Presentations.Open の下に PttApp.Visible = True を追加してみて下さい。

関連するQ&A

  • ファイルが既に開いているかどうかを取得するには

    Sub Sample1() Dim App As Object Dim MyFileName As String Set App = CreateObject("Excel.Application") MyFileName = "C:\Users\test.xlsm" With App .Workbooks.Open Filename:=MyFileName .Visible = True If .ReadOnly Then MsgBox "既に開いています" App.Quit '既に開いているのなら、閉じる End If End With End Sub このようなコードを作ったのですが、どうやらIf .ReadOnly Thenの部分が間違っているようです。 エラーになります。 既にファイルが開いているか、読み取り専用かどうかを取得するコードをご教授ください。

  • vba 読み取り専用で他のファイルを開くには

    エクセルvbaで他のエクセルファイルを読み取り専用で開きたいのですが 「読み取り専用で!」とするにはどうすればいいですか? 今のままだとエラーになります。 ------------------------- Sub a() Set App = CreateObject("Excel.Application") Set xlBook = App.Workbooks.Open(MyFileName) With App .Visible = True .ReadOnly '実行時エラー438 End With Set App = Nothing End Sub

  • CreateObjectとGetObjectの違い

    当方エクセル2003です。 Sub test_CreateObject() Dim App As Excel.Application Dim MyFileName As String Set App = CreateObject("Excel.Application") MyFileName = ActiveWorkbook.Path & "\新規Microsoft Excel ワークシート.xls" With App .Workbooks.Open FileName:=MyFileName .Visible = True End With Set App = Nothing End Sub --------------------------------------------------------- Sub test_GetObject() Dim App As Excel.Application Dim MyFileName As String Set App = GetObject(, "Excel.Application") MyFileName = ActiveWorkbook.Path & "\新規Microsoft Excel ワークシート.xls" With App .Workbooks.Open FileName:=MyFileName .Visible = True End With Set App = Nothing End Sub この二つは何が違うのでしょうか? どちらも既存のエクセルファイルがが開きます。

  • 開かれた別ファイルが読み取り専用で開かれるのならば

    Sub tset() Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(MyFileName) xlApp.Visible = True Set xlBook = Nothing Set xlApp = Nothing End Sub こんな感じで、別ファイアルを開いているのですが、 開かれた別ファイル(MyFileName)が、 読み取り専用で開かれるのならば、と言う条件でコードを書きたいのですが どうすればいいでしょうか? MyFileName側の Private Sub Workbook_Open() End Sub で操作したいです。

  •  VBSの作り方がわかりません

    下記のようなVBSを使いたいのですが   テキストでなくエクセルをアクティブにしたいのですがうまくいきません   どのように直せばよいのかお教えください。  お願いいたします。 Dim excel With CreateObject("Wscript.Shell") .Run "D:\DATA\T.txt" End With On Error Resume Next Set excel = GetObject(, "Excel.Application") If Err.Number <> 0 Then Set excel = CreateObject("Excel.Application") End If excel.Visible = True excel.Workbooks.Open "D:\DATA\Sin1.xls"

  • vbaでフォルダの中のファイルを削除したい

    vbaでフォルダの中のファイルを削除したいのですが その場合は、 Sub フォルダの中身を全て削除する() Set myFSO = CreateObject("Scripting.FileSystemObject") With myFSO MyFolderName = ConsT_フォルダ名 & "\" MyFileName = Dir(MyFolderName & "\*.*") Do While MyFileName <> "" myFSO.DeleteFile MyFolderName & "\" & MyFileName MyFileName = Dir() Loop End With Set myFSO = Nothing End Sub の様にして、一つ一つループして消していかないとダメでしょうか? フォルダは残して、カラのフォルダにしたいです。

  • フォルダ指定ダイアログ(Excel97VBA)

    とあるサイトで、下記のようにして、フォルダを指定するダイアログを表示させるコードを見つけました。 Set objKng = CreateObject("Shell.Application") Set dirKng = objKng.BrowseForFolder(0, "フォルダを選択してください。", 0) 上記2行についてどなたか解説して頂けないでしょうか? 特に、("Shell.Application")の""内の意味・他に何ができるのか、(0,"・・・",0)のゼロが分かりません。 また、このダイアログで、IF文を使って条件分岐させるにはどうすればいいのでしょうか? 以下のような感じで作りたいのですが。 If キャンセル押下時 then Exit Sub Else 実行 End If 宜しくお願いします。

  • Excel2010VBAからWordの呼び出し

    お世話になります。 Excel2003VBAで、次の様にWordファイルをオープンしていました。 Dim boReadOnly As Boolean Dim objWord As Word.Application boReadOnly = True Set objWord = CreateObject("Word.Application") With objWord .Documents.Open toFullName, ReadOnly:=boReadOnly .Visible = True End With これを、Excel2010VBAへ移植すると、WordファイルがExecelの後方に隠れて表示されてしまいます。 暫定として、.Visibleの次行に、   .Activate を追加しています。これを行なうと、Startアイコンの→横に、Wordアイコンが点滅するので、 Wordがオープンした事はわかります。 Wordファイルを呼び出し元のExcelの前面に表示させるには、どうすればいいでしょうか? 御教示よろしくお願いします。

  • 位置の指定をすることは可能ですか?

    VBAでテキストファイルを生成するコードを作ったのですが その際位置の指定をすることは可能ですか? Sub test() Dim myFSO As New FileSystemObject Dim ts As TextStream Dim MyFileName As String Dim MyPath As String MyPath = MyDesktop & "\" MyFileName = "test.txt" Set myFSO = CreateObject("Scripting.FileSystemObject") Set ts = myFSO.CreateTextFile(MyPath & MyFileName, True) CreateObject("Shell.Application").ShellExecute MyPath & MyFileName 'ここで位置の指定をしたい Set ts = Nothing Set myFSO = Nothing End Sub こんな感じのコードは作成しました。 With MyFileName .Top = 100 .Left = 100 End With みたいな感じで位置の指定は可能ですか? APIを使わないと無理ですか?

  • VBAで既存のパワポのファイルを開くには?

    アクセスやエクセルからVBAで既存のパワポのファイルを開くには? 参照設定をして、 Sub test() Dim App As PowerPoint.Application Dim MyFileName As String Set App = CreateObject("PowerPoint.Application") MyFileName = CurrentProject.Path & "サンプル.ppt" App.Visible = True Set App = Nothing End Sub を実行すると、パワポの空のアプリケーション開きますが肝心のファイルが開きません。 開く方法を教えてください。

専門家に質問してみよう