痔になりやすい生活習慣とは?

お世話になります。
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の前面に表示させるには、どうすればいいでしょうか?
御教示よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Windows7,Office2010でもやってみましたが


.activateを入れれば前面になりました。

なお、前レスで書き落としましたが
Dim objWord As Word.Application
でやるとエラーで動かなかったので
Vista機、Win7機とも
Dim objWord As Object
で調べました。
    • good
    • 1
この回答へのお礼

2度もご返事を頂きありがとうございます。
新規に作ってやりました。
やはり、.activateを入れれば前面になるのですね。
色々試しました。そうすると職場のPCでは後面、自宅PCでは前面になる事が判りました。
両方ともWindows7+Excel2010です。
違いと云えば
職場はNetwork版で主メモリは2G
自宅はHome版で主メモリは4G
です。
実装メモリの差でしょうか。
これはExcelから別のExcelを呼び出し、そこからWordを呼び出す方式にしています。
職場でExcelからWordを呼び出す処理はごく一部ですから、このまま手作業で前面に持ってくる手順にしたいと思います。

後で気が付いたのですが回答を締め切ってしまったので、
試して頂いたPC実装メモリを聞く事ができないのが気がかりとなってしまいました。
とりあえずは自宅PCで実現出来たのですから、一旦クローズさせて頂きます。
ありがとうございました。

お礼日時:2011/06/09 19:31

Vista ,Excel2010,Word2010で新規に作成し、


.activateを入れると
Wordだけでも、docxを開いてもExcelの前面に表示されます。

面倒ですが
互換ファイルとしてではなく、コードをコピーして新規bookに貼りつけたらどうでしょう。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QエクセルからWordファイルをオープン

Excel VBAで、雑誌を参考に、次の様に作りました。
Function EwWordWordOpen(totoFullName As Variant)
  Dim objWordApp As Word.Application
  Set objWordApp = CreateObject("Word.Application")
  objWordApp.Documents.Open (totoFullName)
  Set objWordApp = Nothing
End Function

↑の方法ですと、次の動作となります。
1回目は何もしない。
2回目以降は、「ファイルがロックされています。読取専用で開きますか」のMsgBoxが表示されて、OKを入力するとWordを読取専用で開きます。

次に4行目のOpen行を
  objWordApp.Documents.Open (totoFullName), ReadOnly:=True
とすると、このステートは無視される様で何も行なわれません。

正しく、Wordファイルを開く方法を教えて頂きたく、よろしくお願いします。

Excel VBAで、雑誌を参考に、次の様に作りました。
Function EwWordWordOpen(totoFullName As Variant)
  Dim objWordApp As Word.Application
  Set objWordApp = CreateObject("Word.Application")
  objWordApp.Documents.Open (totoFullName)
  Set objWordApp = Nothing
End Function

↑の方法ですと、次の動作となります。
1回目は何もしない。
2回目以降は、「ファイルがロックされています。読取専用で開きますか」のMsgBoxが表示されて、OKを入力するとWordを読取専用で開きます。
...続きを読む

Aベストアンサー

> 1回目は何もしない。

キーボードで、Alt+Ctrl+Delキーの同時押しでタスクマネージャを
確認してもらうとわかりますが、実際には指定したWordのファイルは
非表示で展開済みになっています。
(タスクマネージャ上では「WINWORD.EXE」と表示されます)

そのため、2回目以降は二重で開こうとしていることになるため、
「読み取り専用で」というMsgBoxが表示されることになります。

これ(非表示展開)を回避するためには、「Visible」プロパティを
使用します。
(最初の状態で非表示なのは、VBAでの自動処理を行う中では、
 ユーザーから隠した状態の方が一般的、ということなのかと
 思います)


Function EwWordWordOpen(totoFullName As Variant)
  Dim objWordApp As Word.Application
  Set objWordApp = CreateObject("Word.Application")
  objWordApp.Documents.Open (totoFullName)
  objWordApp.Visible = True   '←【Wordアプリケーションを可視化】
  Set objWordApp = Nothing
End Function

> 1回目は何もしない。

キーボードで、Alt+Ctrl+Delキーの同時押しでタスクマネージャを
確認してもらうとわかりますが、実際には指定したWordのファイルは
非表示で展開済みになっています。
(タスクマネージャ上では「WINWORD.EXE」と表示されます)

そのため、2回目以降は二重で開こうとしていることになるため、
「読み取り専用で」というMsgBoxが表示されることになります。

これ(非表示展開)を回避するためには、「Visible」プロパティを
使用します。
(最初の状態で非表示なのは、VBAでの自...続きを読む

QAccessのマクロでWordを最前面に開く

Access2010を使用しています。
フォームにボタンを設置し、
そのボタンをクリックすると
「WORD」というテーブル書出しクエリが実行されて、
その実行結果を
「form.dotx」というWordファイルに差込みしたいと思っています。

Private Sub コマンド39_Click()
DoCmd.OpenQuery "WORD"

Dim oDoc As Object
Set oDoc = GetObject("\\XXX\XXX\form.dotx")
oDoc.Application.Visible = True

End Sub

上記のようにマクロを書いてみたんですが
実行すると
WORDファイルを開く前のメッセージボックス
”この文書を開くと、次のSQLコマンドが実行されます”
がウィンドウの最背面に表示されてしまい、
Accessほかにひらいているものをひとつひとつ最小化すると
やっとそのメッセージボックスが表示されるような状態です。

Wordのレジストリをいじって
このメッセージボックスを表示させない方法もあるようですが
http://free-style.mkstyle.net/web/pc/sql.html
社内で共有して使うものなので
できればレジストリを操作するようなことはしたくありません。

マクロを実行したら
Wordを開く際のメッセージボックスが最前面に表示されるような方法は
あるのでしょうか?

ご教授お願いいたします!

Access2010を使用しています。
フォームにボタンを設置し、
そのボタンをクリックすると
「WORD」というテーブル書出しクエリが実行されて、
その実行結果を
「form.dotx」というWordファイルに差込みしたいと思っています。

Private Sub コマンド39_Click()
DoCmd.OpenQuery "WORD"

Dim oDoc As Object
Set oDoc = GetObject("\\XXX\XXX\form.dotx")
oDoc.Application.Visible = True

End Sub

上記のようにマクロを書いてみたんですが
実行すると
WORDファイルを開く前のメッセージボックス
”この文書を開く...続きを読む

Aベストアンサー

VBAでレジストリを操作する方法もあるのですが、それはやめておきます。ただ、多くのソフトウェアは、レジストリを操作しているのですが、他のPCで、作ったままのVBAでは、アンチウィルスに引っかかてしまいます。

今回は、私の場合、OSの関係か、そのコードで再現はできなかったのですが、現象は理解できます。

Dim fn As String '一応、念の為にファイル名を別書きにしました。
fn = "\\XXX\XXX\form.dotx"
CreateObject("Wscript.Shell").Run fn

こんな風にすれば、SQLは生きた状態で、Wordは前面で開くはずです。
Word自体を前面に持ってくる方法もありますが、とりあえず、これで試してみてください。

QExcelVBAで既に開いてるwordを閉じる

ExcelVBAで困っております。

現在Excelで住所録を作り、1度送付してから1ヶ月したら自動でwordを起動し
送付の印刷をするマクロを作ってます。

普通に開いて閉じることはできましたが、
既にwordが開いていた場合に読み込み専用になり、少し困っております。

理想としては、既に開いていた場合、1度保存して終了し、
再度開くようにしたいです。


分かる方がいらっしゃいましたら教えてください。

よろしくお願い致します。

Aベストアンサー

試してください。
(例)
Dim wdapp As Object
Dim wddoc As Object
Dim wdpath As String
Dim wdname As String

wdname = "abc.docx"

On Error Resume Next
Set wdapp = GetObject(, "Word.Application")
Set wddoc = wdapp.Documents(wdname)
On Error GoTo 0
If wddoc Is Nothing Then Set wdapp = Nothing: Exit Sub

wdpath = wddoc.FullName
wddoc.Save
wddoc.Close
wdapp.Documents.Open FileName:=wdpath, ReadOnly:=False

Set wdapp = Nothing: Set wddoc = Nothing

試してください。
(例)
Dim wdapp As Object
Dim wddoc As Object
Dim wdpath As String
Dim wdname As String

wdname = "abc.docx"

On Error Resume Next
Set wdapp = GetObject(, "Word.Application")
Set wddoc = wdapp.Documents(wdname)
On Error GoTo 0
If wddoc Is Nothing Then Set wdapp = Nothing: Exit Sub

wdpath = wddoc.FullName
wddoc.Save
wddoc.Close
wdapp.Documents.Open FileName:=wdpath, ReadOnly:=False

Set wdapp = N...続きを読む

Qエクセルからワードのマクロを実行したい

1. ワードで作られた報告書の表の数値をエクセルにコピーし、
2. その数値を使ってエクセルのオートシェイプでグラフを描き、
3. グラフをもう一度ワードの所定の位置に図として貼りつける、
というマクロを作成しています。ワードの表をコピーするマクロと、エクセルでグラフを描くマクロは作成できました。

問題はエクセルのシートに配置したコマンドボタンをクリックすると、グラフの入ったセル範囲をコピーするまではできたのですが、その後にワードのマクロを指定して実行させる方法がわかりません。
1.→2.のエクセルのマクロを実行する方はauto_openで何とかなったのですが、2.→3.は既にワード文書は開かれていますし、auto_openでは1.の手順ができなくなってしまうので困っています。
もし、エクセルのマクロでワードを操作などできるのでしたらそれでもよいのですが…。

ワードのマクロは初挑戦で、色々サイトも探したのですが見つかりませんでした…。

使用していますのは、Windows98SE,Excel97,Word97です。
ご存知の方、どうぞよろしくお願い致します。

1. ワードで作られた報告書の表の数値をエクセルにコピーし、
2. その数値を使ってエクセルのオートシェイプでグラフを描き、
3. グラフをもう一度ワードの所定の位置に図として貼りつける、
というマクロを作成しています。ワードの表をコピーするマクロと、エクセルでグラフを描くマクロは作成できました。

問題はエクセルのシートに配置したコマンドボタンをクリックすると、グラフの入ったセル範囲をコピーするまではできたのですが、その後にワードのマクロを指定して実行させる方法がわかりません。
...続きを読む

Aベストアンサー

ふむ、よくわからないんですけど
> エクセルからワードのマクロを指定して実行させることができますでしょうか?

だけでしたら、

Dim wdApp As Word.Application

Set wdApp = GetObject(, "word.application")
wdApp.Run "wdtest"

てな感じで、開いてる Word の wdtest というマクロが
Excel側から実行できます。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QEXCELのマクロでワードファイルを開きたい

いつもお世話になります。初心者ですのでよろしくお願いします。

WORDで50種類くらいの帳票を作成しました。一つのファイルに50ページあるのではなくて、50のファイルに一つずつ帳票を作成しました。また、EXCELでこれらの帳票の目次を作成しました。これは1枚のシートに50の帳票のタイトルが一覧表となっています。このエクセルの目次シートから必要なタイトルを選択するとそれに該当する帳票のワードファイルが開くようにしたいのですが、マクロでなんとかなりませんでしょうか?

EXCEL2000、WORD2000を使用しています。補足、お礼は明日になりますが、よろしくお願いします。
わかりづらい説明で申し訳ありません。

Aベストアンサー

(例データ)
A1:B2以下
A列   B列
XX帳票aaa.doc
YY帳票テスト1.doc
・・・・・
(コード)
シートのSelectionChangeイベントで
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Mid(Target.Address, 1, 2) = "$B" Then
fn = """" & Target & """"
Set wd = CreateObject("word.Application")
wd.Visible = True
wd.documents.Open Filename:="c:\My Documents\" & fn
End If
End Sub
B列の行をクリックすると、B列の文書名の文書が開く。

Qexcel VBAを利用し、テンプレートとなるワードファイルの一部分を

excel VBAを利用し、テンプレートとなるワードファイルの一部分をエクセルデータで
置換を行い、新しいワードファイルとして保存するという処理を作成しています。

[環境]
Windows Vista
Office 2007
差し込み文書ではなく個別にファイルを作りたいという条件があります。

処理としては、
テンプレートを開く→置換を実施→別名で保存→テンプレートを変更せず閉じる
を繰り返し実施しています。
ただ、このやり方ですと最後の閉じる処理を行った際に、
「wordは、動作を停止しました」というエラーメッセージが頻繁に出てしまいます。
出来上がったファイル自体は問題なく読めているんですが。
処理自体に問題があるんでしょうか?
VBA自体初心者であり、他に良い方法などありましたらご教示いただけたら助かります。


#処理内容はだいぶ簡略化しています。
Public Function output_word2()
  Dim word        As New word.Application
  Dim document      As word.document
  Dim file_name      As String
  Dim output       As String
  Dim path        As String
  Dim row        As Integer
  
  Sheets(CALC_SHEET).Select 'データ取得用シート

  path = Application.ActiveWorkbook.path
  file_name = path & "\xxxxxx.doc"          '元の文書
  row = 3
  Do
    If Range("B" & row).Value = "" Then
      Exit Do
    End If
    
    With word
      .Documents.Open Filename:=file_name
      Set document = .ActiveDocument
    End With
    
    word.Selection.Find.Text = "{置換対象文字}"
    word.Selection.Find.Forward = True
    word.Selection.Find.Replacement.Text = Range("C" & row).Value
    word.Selection.Find.Execute , , , , , , , , , , wdReplaceAll
    
    output = path & "\output\" & Range("C" & row).Value  & ".doc"
    
    document.SaveAs Filename:=output   '置換後のword文書を別名で保存
    document.Close SaveChanges:=False
    word.Quit
    row = row + 1
    Set word = Nothing
    Set document = Nothing
  Loop
End Function

excel VBAを利用し、テンプレートとなるワードファイルの一部分をエクセルデータで
置換を行い、新しいワードファイルとして保存するという処理を作成しています。

[環境]
Windows Vista
Office 2007
差し込み文書ではなく個別にファイルを作りたいという条件があります。

処理としては、
テンプレートを開く→置換を実施→別名で保存→テンプレートを変更せず閉じる
を繰り返し実施しています。
ただ、このやり方ですと最後の閉じる処理を行った際に、
「wordは、動作を停止しました」というエラーメッセージが頻...続きを読む

Aベストアンサー

その元のコードは、癖になりますから、エラーが発生するとかいう以前に直した方がよいですね。時々、非VBAのプログラマの人にいますが、VBAは、ほとんど、予約語が存在しないので、変数名は、何でも付けられますが、それをそのまま使うと、他人からは、まったくコードを読めなくなってしまいます。エラーが発生しても原因がわかりにくくなります。

それから、ハングした後は、タスクマネージャーで、WinWord を削除しないと、エラーが繰り返すはずです。それで、メモリに残らないように、以下のように、エラーが発生したら、必ず、wdApp を外すようにします。

'//
 Sub WordDocDupulicate()
 Dim wdApp As Word.Application
 Dim wdDoc As Word.Document
 Dim wdRng As Word.Range
 Dim Fname  As String
 Dim sOutput As String
 
 Dim mPath  As String
 Dim mRow As Long
 Dim sh As Worksheet
 Set wdApp = New Word.Application
 
 Const CALC_SHEET As String = "Sheet1" '←シート名
 Set sh = Worksheets(CALC_SHEET) 'データ取得用シート
 sh.Select
 
 mPath = ActiveWorkbook.Path & "\"
 Fname = mPath & "xxxxxx.doc"
 
 sOutput = mPath & "\"
 On Error GoTo ErrHandler
 '元の文書
 If Dir(Fname) = "" Then
  MsgBox "元の文書がありません。", vbExclamation
  GoTo ErrHandler
 End If
 mRow = 3
 Do
  With wdApp
   Set wdDoc = .Documents.Open(Fname)
   Set wdRng = wdDoc.Content
  End With
  With wdRng.Find
   .Text = "[置換対象文字]"
   .Forward = True
   .Replacement.Text = Range("C" & mRow).Value
   .MatchCase = False
   .MatchWildcards = False
   .MatchFuzzy = True
   '.Execute Replace:=wdReplaceAll 'Ver Word2003
   .Execute , , , , , , , , , , wdReplaceAll
  End With
  sOutput = mPath & "test1\" & Range("C" & mRow).Value & ".doc"
  wdDoc.SaveAs sOutput '置換後のword文書を別名で保存
  wdDoc.Close False
  mRow = mRow + 1
 Loop Until sh.Range("C" & mRow).Value = ""
 wdApp.Quit
ErrHandler:
 If Err.Number > 0 Then
  MsgBox Err.Number & " : " & Err.Description
 Else
  Beep '正常終了
 End If
 Set wdRng = Nothing
 Set wdDoc = Nothing
 Set wdApp = Nothing
 Set sh = Nothing
End Sub

その元のコードは、癖になりますから、エラーが発生するとかいう以前に直した方がよいですね。時々、非VBAのプログラマの人にいますが、VBAは、ほとんど、予約語が存在しないので、変数名は、何でも付けられますが、それをそのまま使うと、他人からは、まったくコードを読めなくなってしまいます。エラーが発生しても原因がわかりにくくなります。

それから、ハングした後は、タスクマネージャーで、WinWord を削除しないと、エラーが繰り返すはずです。それで、メモリに残らないように、以下のように、エラーが...続きを読む

Q指定のWORKBOOKを前面表示する方法(エクセル:VBA)

いつもお世話になっております。
エクセルにて処理が終了した時点で、VBAを使い自動的にメールを送るマクロを組みました。しかし、ユーザーからのリクエストにより、自動送信する前にメール内容を確認したいとのことで、一度このメール内容でOKかどうか聞いてから、送信するように書き換えました。そのMsgBoxは当然エクセル上に現れるのですが、特にシングルディスプレイユーザーの場合、送信用のメールが前面に出てしまい、エクセル上に表示されたMsgBoxに気が付かない人もいますので、送信用メールが作成されたら、エクセルを前面に出してMsgBoxの指示に従わせたいのですが、どう書けばいいのか分かりません。とりあえず、私がトライしてみた文字ールは下記のとおりですが、エクセルは前面には出ません(ただし、エクセルプログラム全体が点滅?しますが)。
~前略~

With myMail
.To = "abc@xxxxx.com"
.Cc = "123@xxxxx.com"
.Subject = Filename '指定済みです
.Body = strBody '指定済みです
.display '.sendの代わりにいったんここで表示させました
End With

Windows("XYZ.xls").Activate 'このワークブックで作業をしてます。全面にはでてきません。

mymsg = MsgBox("このメール内容で送信してもよろしいですか?"~中略~,vbYesNo + vbQuestion, "送信確認")
If mymsg = 6 Then
myMail.send

~後略~

いつもお世話になっております。
エクセルにて処理が終了した時点で、VBAを使い自動的にメールを送るマクロを組みました。しかし、ユーザーからのリクエストにより、自動送信する前にメール内容を確認したいとのことで、一度このメール内容でOKかどうか聞いてから、送信するように書き換えました。そのMsgBoxは当然エクセル上に現れるのですが、特にシングルディスプレイユーザーの場合、送信用のメールが前面に出てしまい、エクセル上に表示されたMsgBoxに気が付かない人もいますので、送信用メールが作成された...続きを読む

Aベストアンサー

Windows("XYZ.xls").Activate
のところに
VBA.AppActivate Excel.Application.Caption
を追加してみてください。

QエクセルVBAでワードの文字を検索して置換えたい

エクセル置換表を基に、開いてあるワードの文書内を検索して、該当の旧番号があれば、新番号に置換えるVBAのプログラムを
教えていただけませんか。
また、参考になる書籍等があれば教えていただけませんか。 

【実施内容詳細】
エクセル置換表を基に、開いてあるワードの文書内(ヘッダー、フッター含)を検索して、該当の旧番号があれば、新番号に置換える。
使用ソフト ワード エクセル 2003
使用ファイル名  A.doc B.xls

ステップ1 ワードの文書内に旧番号A1がないか検索して、A1があれば、新番号B1に置き換える。
ステップ2 ワードの文書内に旧番号A2がないか検索して、A2があれば、新番号B2に置き換える。
ステップ3 エクセルA列の最後(空欄)まで実施して終了する。

エクセル置換表

     A列  B列
    旧番号 新番号
 行2  A1    B1
 行3  A2    B2
 以下同様  

追記:
マクロを使用したことはありませんので事前設定方法も教えていただけませんか。 

Aベストアンサー

.Find.Executeの処理結果がうまく拾えなかったので、置換表のC列に出したのは、単に通過した、という意味、、、

Option Explicit
Sub WORD検索置換()
Const xPath = "D:\tmp\tmp\aho.doc"
Const xKey = "A"
Const xKey_Rep = "B"
Const wdReplaceAll = 2
Dim objWord As New Word.Application
Dim objDoc As Word.Document
Dim objSelection As Object
Dim xSheet As Worksheet
Dim xResult As Boolean
Dim xLast As Long
Dim kk As Long
Dim nn As Long
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set xSheet = Sheets("Sheet1")
xLast = xSheet.Cells(Rows.Count, "A").End(xlUp).Row
' Word文書を開く
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Open(xPath)
Set objSelection = objWord.Selection
With objSelection
For nn = 2 To xLast
If (xSheet.Cells(nn, xKey).Value <> Empty) Then
'objSelection.Find.Text = "Contoso"
.Find.Text = xSheet.Cells(nn, xKey).Value
.Find.Forward = True
.Find.MatchWholeWord = True
.Find.Replacement.Text = xSheet.Cells(nn, xKey_Rep).Value
xResult = .Find.Execute(Replace:=wdReplaceAll)
xSheet.Cells(nn, "C").Value = Empty
'if (xResult) then
xSheet.Cells(nn, "C").Value = "Done??"
'End If
End If
Next
End With
objWord.Documents.Close
'objWord.Quit
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

.Find.Executeの処理結果がうまく拾えなかったので、置換表のC列に出したのは、単に通過した、という意味、、、

Option Explicit
Sub WORD検索置換()
Const xPath = "D:\tmp\tmp\aho.doc"
Const xKey = "A"
Const xKey_Rep = "B"
Const wdReplaceAll = 2
Dim objWord As New Word.Application
Dim objDoc As Word.Document
Dim objSelection As Object
Dim xSheet As Worksheet
Dim xResult As Boolean
Dim xLast As Long
Dim kk As Long
Dim nn As Long
On Error Resume Next
Application.ScreenUpdating = Fal...続きを読む

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング