プロが教える店舗&オフィスのセキュリティ対策術

VBAで新規にエクセルのアプリケーションを起動し、
その中に既存のファイルを起動する方法は有りますか?


Sub Sample()
Dim appExcel As Excel.Application
Dim WSH As Variant
Dim strPath As String

Set appExcel = New Excel.Application
Set WSH = CreateObject("Wscript.Shell")

strPath = ActiveWorkbook.Path

With appExcel
.Visible = True
.Workbooks.Add
.ActiveWorkbook.SaveAs (strPath & "\ test.xls")
End With

Set WSH = Nothing
End Sub

このコードは、ネットから拾ったサンプルコードなのですが
新しいアプリケーションでエクセルを立ち上げることはできたのですが
新規のブックが開いてしまい、
更に、開きたいファイルに上書き保存してしまいそうです。

新規のブックが開く原因は
.Workbooks.Addで、
上書き保存する原因は
.ActiveWorkbook.SaveAs
だとわかってるのですが、
この部分を同変更すればいいのかがわかりません。

Workbooks.Open?Filename:="C:\Users\test.xlsx"
だと、現在実行しているvbaファイルを同じ枠内で
該当のファイルが開いてしまいます。

A 回答 (3件)

こんにちは。



Excel.Application オブジェクトの 直下に .Workbooks コレクションがある訳ですから、
  appExcel.Workbooks.Open Filename:=......
という風に指定すればいいことになります。
ご提示の記述では、WSHは使っていないようですから、省いたものでお応えします。

Sub Re8741206()
Dim appExcel As Excel.Application
Dim strPath As String

  Set appExcel = New Excel.Application

  strPath = "C:\Users" ' ActiveWorkbook.Path

  With appExcel
    .Visible = True
    ' ' 既存のブックを開く
    .Workbooks.Open Filename:=strPath & "\test.xlsx"  '"C:\Users\test.xlsx"

    ' ' 処理

    ' ' 処理が済んだら閉じる
'    .Quit
  End With

  ' ' 処理が済んだら解放
  Set appExcel = Nothing
End Sub
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/22 15:55

.Workbooks.Add "C:\Users\test.xlsx"



とかでどうなりますか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/22 15:55

No2です。



蛇足だとは思いますが
.ActiveWorkbook.SaveAs
は不要です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/09/22 15:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!