以下のソースがありますが
Dim strSaveFilename As String '作成したファイル名
Dim objExcel As Object 'Excel応用対象
On Error GoTo Err_ObjCreateReport04
Set objExcel = CreateObject("Excel.Application")
strSaveFilename = objExcel.GetSaveAsFilename("", "Microsoft Excelブック(*.xls;*.XLS),*.xls;*.XLS")
If strSaveFilename <> "False" Then
With objWkbOne
.SaveAs fileName:=strSaveFilename, Password:=strPassWord
End With
objWkbOne.Close savechanges:=True
Else
Err_ObjCreateReport04:
objWkbOne.Close savechanges:=False
End If
Set objWkbOne = Nothing
objExcel.Quit
Set objExcel = Nothing
でも、ファイル保存のダイアログ表示する時、他のアプリケーションを読んだら、フリーズ コンピュータの動作が停止することです。
原因についてお気付きの点をご指摘いただければ幸いです、よろしくお願いいたします。
何故ご指摘がありませんね?
> 何故ご指摘がありませんね?
日本の方じゃないんでしょうか?
日本語が無茶苦茶で、何を言っているのか良く分かりません。
よって、回答しようがありません。
申し訳ありません。
#少なくとも、提示されたコードを実行しも「フリーズ」は発生しませんでした。
ご迷惑を掛けまして、申し訳ございませんでした。
中国人です、日本語が下手ので、本当にすみません。
教えていただきたいことをもう一度書いてみます。
以下はACCESS2000(9.0.3821 SR-1)でVBAのソースです
Dim strSaveFilename As String '作成したファイル名
Dim objExcel As Object 'Excel応用対象
On Error GoTo Err_ObjCreateReport04
Set objExcel = CreateObject("Excel.Application")
strSaveFilename = objExcel.GetSaveAsFilename("", "Microsoft Excelブック(*.xls;*.XLS),*.xls;*.XLS")
If strSaveFilename <> "False" Then
With objWkbOne
.SaveAs fileName:=strSaveFilename, Password:=strPassWord
End With
objWkbOne.Close savechanges:=True
Else
Err_ObjCreateReport04:
objWkbOne.Close savechanges:=False
End If
Set objWkbOne = Nothing
objExcel.Quit
Set objExcel = Nothing
実行後、ファイル保存のダイアログ表示して、閉めないでください、他のアプリケーションを呼んだら、そのダイアログを戻る時、フリーズ コンピュータの動作が停止することです。
原因についてお気付きの点をご指摘いただければ幸いです、よろしくお願いいたします。
現象確認しました。
が、フリーズしているわけじゃないと思いますよ。
このプログラムでは、
Access->Excel(ダイアログ)と言う風に起動されていて、
Accessは、Excelのダイアログが閉じられるまで、動作できません。
#再描画もできません。
この時、別のアプリケーションを呼んで、戻る時に「Access」の方を指定してしまうと、
「Excel」が「Access」の後に隠れてしまい、操作できなくなります。
#また、Accessの再描画も行われないので、真っ白の画面になります。
ALT-TABで「Excel」のアイコンを指定すれば、再度ダイアログが表示され、操作できませんか?
ご指摘をいただきありがとうございます。
設計書の要求で、ALT-TABを使ってはいけません。
マウスしか使えないです。ほかの方法がありますか?
と言うことは、現象の認識は正しいのですね?
でしたら、「Excelのダイアログ」を使用しなければ良いのではないでしょうか?
単にファイル名を指定するだけなんですから、「Excelのダイアログ」である必要は無いですよね?
Accessにも、ダイアログを表示するための機能(Application.FileDialog)がある様ですので、
そちらを使うようにしてはどうでしょうか?
ご提示をいただきありがとうございます。
問題は解決しました。
でも、ACCESSのバージョンは必ず2002です、そして、Microsoft Office 11.0 Object Libraryもあるのが必要です 。
詳細は
http://support.microsoft.com/default.aspx?scid=kb;ja;282335
御覧ください。
ツイート | ![]() |