Page 53 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼ACCESSとEXCELについて ichi 02/10/1(火) 17:11 ┣Re:ACCESSとEXCELについて こうちゃん 02/10/2(水) 9:27 ┣Re:ACCESSとEXCELについて イケガミ 02/10/2(水) 9:41 ┃ ┗Re:ACCESSとEXCELについて ichi 02/10/2(水) 20:59 ┃ ┗Excelのデジタル署名について yu-ji 02/10/3(木) 9:30 ┣Re:ACCESSとEXCELについて よろずや 02/10/2(水) 21:47 ┃ ┗Re:ACCESSとEXCELについて ichi 02/10/2(水) 22:30 ┃ ┣Re:ACCESSとEXCELについて こうちゃん 02/10/3(木) 8:43 ┃ ┗Re:ACCESSとEXCELについて よろずや 02/10/3(木) 23:34 ┗Re:ACCESSとEXCELについて ichi 02/10/4(金) 0:01 ┗Re:ACCESSとEXCELについて よろずや 02/10/4(金) 0:18 ┗どうしてたちあがるのでしょうね? こうちゃん 02/10/4(金) 8:53 ┗Re:どうしてたちあがるのでしょうね? ichi 02/10/5(土) 0:04 ─────────────────────────────────────── ■題名 : ACCESSとEXCELについて ■名前 : ichi ■日付 : 02/10/1(火) 17:11 -------------------------------------------------------------------------
初めて投稿します。 ichiと申します。 ACCESSにて、EXCELのマクロ付シートを読込もうと 思っているのですが、毎回毎回マクロを有効にしますか? と言うMSGBOXが立ち上がってくるのですが、 これを回避する方法はあるのでしょうか? 突拍子もない質問で申し訳ないのですが、 宜しくお願い致します。 |
ichi さん、こんにちは >ACCESSにて、EXCELのマクロ付シートを読込もうと >思っているのですが、毎回毎回マクロを有効にしますか? >と言うMSGBOXが立ち上がってくるのですが、 >これを回避する方法はあるのでしょうか? > >突拍子もない質問で申し訳ないのですが、 >宜しくお願い致します。 EXCELの「ツール」「マクロ」「セキュリティ」でセキュリティレベルを"低"にすればでなくはなりますが、あまりお勧めできません。 読み込みだけなら、ワークシートを開かずに、DoCmd.TransferSpreadsheetを利用したり、ADOやODBCでデータだけ読み込むような方法をお考えになったほうがいいと思います。 #よろしければ、EXCELを開いた後どんな処理をするのかお教えいただけませんか? もしかするとアドバイスできることがあるかも知れません。 |
Excelのバージョンが分かりませんけど。。 ExcelでVBEの画面を上げて、「ツール」⇒「デジタル署名」を すれば、メッセージは表示されないようになると思います。 |
こうちゃんさん、イケガミさん 早速の回答有難う御座います。 会社では、ネットに繋げない状況なんで 遅くなってしまい、質問している身分なのに 申し訳御座いません。 現在の状況なのですが、 OS・・・Win2000 Excel,ACCESS・・・2000 で作成使用としています。 EXCELにマクロ(入力時のチェックをするマクロ)をつけて、 多数の人に渡して入力してもらい、入力してもらったデータを ACCESSにてデータ管理出来ないかと思っております。 また、EXCEL側はシートをまたがる時もあるので さらに困っています。 その為、デジタル署名を全員に登録してもらう訳にもいかず、 マクロの有効無効のMSGBOXに頭を悩ませてる次第です。 この様な状況なのですが、MSGBOXを表示しないように する事は出来るのでしょうか。 |
▼ichi さん: >その為、デジタル署名を全員に登録してもらう訳にもいかず、 >マクロの有効無効のMSGBOXに頭を悩ませてる次第です。 > >この様な状況なのですが、MSGBOXを表示しないように >する事は出来るのでしょうか。 デジタル署名は、全員に登録してもらう訳ではなく、コードの作成者が そのコードの署名を書く(=コードの作成者が誰かを分かるようにする)という感じ なので、ichiさんだけが行えばいいだけですよ。 |
>ACCESSにて、EXCELのマクロ付シートを読込もうと >思っているのですが、毎回毎回マクロを有効にしますか? >と言うMSGBOXが立ち上がってくるのですが、 >これを回避する方法はあるのでしょうか? 現在のコードを書いていただければ添削できると思います。 |
よろずや さん 返答有難うございます。 ソースは以下の通りです。 添削の程、お願い致します。 Obj_Excel変数とStr_Excel_Path変数は publicで定義してあります。 Sub エクセル読込() Dim Wk_対象Book As Workbook Dim Str_パス As String Dim Str_対象Excel As String Dim Lng_対象Sheet As Long Dim Lng_Sheet_Cnt As Long Dim Lng_入力数 As Long Lng_入力数 = 0 Str_パス = Str_Excel_Path Str_対象Excel = Dir(Str_パス & "\*.XLS") Do While Str_対象Excel <> Empty Set Obj_Excel = GetObject(Str_パス & "\" & Str_対象Excel) With Obj_Excel.Application .Visible = True Obj_Excel.Parent.Windows(1).Visible = True Lng_対象Sheet = .Worksheets.Count For Lng_Sheet_Cnt = 1 To Lng_対象Sheet Lng_入力数 = Lng_入力数 + 1 .Worksheets(Lng_Sheet_Cnt).Activate Call 項目取得 Next .ActiveWorkbook.Saved = True .ActiveWorkbook.Close .Application.Quit End With Str_対象Excel = Dir Loop End Sub |
ichi さん、こんにちは > Call 項目取得 ここで呼んでる 「項目取得」 SubプロシージャもUPしてください。 |
> Set Obj_Excel = GetObject(Str_パス & "\" & Str_対象Excel) > > With Obj_Excel.Application Set Obj_Excel = CreateObject("Excle.Application") With Obj_Excel .Workbooks.Open Str_パス & "\" & Str_対象Excel ってな感じですかね。 試してませんけど... |
yu-jiさん、よろずやさん、こうちゃんさん 返答有難う御座います。 今日も遅くなってしまい、申し訳ございません。 項目取得のプロシジャーについて 項目取得は以下のように変数に格納し DBに対してINSERTしているだけです。 Sub 項目取得() Dim Str_Sql As String With Obj_Excel.Application Str_項目A = """" & .Cells(3, 3) & """" Str_項目B = """" & .Cells(3, 4) & """" ・ ・ Str_項目H = """" & .Cells(3, 5) & """" End With 上記変数を使いINSERTのSQLを書いて読み込みます。 Str_Sql = "INSERT INTO 〜" CodeDb.Execute Str_Sql End Sub デジタル署名について 追記事項になってしまうのですが、署名をつける事に 周りの許可が必要な状況と言う事もあり、少し迷っている 状態です。 CreateObjectについて 早速試してみました。 やはり、MSGBOXが立ち上がってきてしまいます。 やはり、根本的にMSGBOXを出さないようにするには API等をいじらないとダメなのでしょうか。 |
>CreateObjectについて > > 早速試してみました。 > やはり、MSGBOXが立ち上がってきてしまいます。 おかしいですね。 マクロ付きシートと言うことでしたよね。 そのブックのマクロに問題があるのでは... |
CreateObjectを使った以下のコードでマクロ付Excelシートが、マクロ有効確認のダイアログを表示せずに起動することを確認しています。 Excel2000 セキュリティ「中」 Sub エクセル読込() Dim Str_パス As String Dim Str_対象Excel As String Dim Lng_対象Sheet As Long Dim Lng_Sheet_Cnt As Long Dim Lng_入力数 As Long Dim Obj_Excel As Object Lng_入力数 = 0 ' Str_パス = Str_Excel_Path Str_パス = "d:\test" Str_対象Excel = Dir(Str_パス & "\*.XLS") Do While Str_対象Excel <> Empty Set Obj_Excel = CreateObject("Excel.Application") With Obj_Excel.Application .Visible = True .Workbooks.Open Str_対象Excel Obj_Excel.Parent.Windows(1).Visible = True Lng_対象Sheet = .Worksheets.Count For Lng_Sheet_Cnt = 1 To Lng_対象Sheet Lng_入力数 = Lng_入力数 + 1 .Worksheets(Lng_Sheet_Cnt).Activate Call 項目取得 Next .ActiveWorkbook.Saved = True .ActiveWorkbook.Close .Application.Quit End With Str_対象Excel = Dir Loop End Sub |
こうちゃんさん、よろずやさん 返答ありがとうございます 上記の件出来ました。 私のミスで、 Set Obj_Excel = CreateObject("Excel.Application") の後に、 Set Obj_Excel = GetObject("c:\a.xls") を書いていました。。。 本当に申し訳ないです。 色々とみなさんの力で、解決出来ました。 本当に有難う御座いました。 |