ACCESSでセキュリティ警告が出る事象について

このQ&Aのポイント
  • ACCESSでセキュリティ警告が出る事象について、アドバイスをお願いします。
  • フォームに設置したコマンドボタンを押すことで実行させたいと思っています。理由は、インポートするCSVファイルがデータ項目の並びなど複数のパターンがあるためで、インポート定義を複数作成して、コマンドボタンを複数設置するつもりです。
  • 私が書いたコードは、いろいろ調べてコピーして張り付けたものなので、何か書き方が違っていたり、足りないコードがあるのでしょうか?もしくは、セキュリティレベルを変更するかデジタル署名を使用することで回避できるのでしょうか?このACCESSを他の事務所の方に展開して利用してもらおうと考えているため、セキュリティ警告が出ないようにしたいと思っています。
回答を見る
  • ベストアンサー

ACCESSでセキュリティ警告が出る事象について

ACCESSでセキュリティ警告が出る事象について、アドバイスをお願いします。 やりたいことは、以下4点です。 (1)CSVファイル「C:\temp\File1.csv」をテーブル「T_File」としてインポートする。 (2)クエリ「データ確認」を表示する (3)表示したクエリ「データ確認」をエクスポートする。 (4)エクスポートしたメッセージを表示する ※週ごとに実行したいので、最初にテーブル「T_File」を削除します。 フォームに設置したコマンドボタンを押すことで実行させたいと思っています。 理由は、インポートするCSVファイルがデータ項目の並びなど複数のパターンがあるためで、インポート定義を複数作成して、コマンドボタンを複数設置するつもりです。 以下が、1つのコードです。 -------ここから-------- Private Sub コマンド0_Click() On Error GoTo Err_コマンド0_Click DoCmd.OpenQuery "Q_Del", acViewNormal, acEdit DoCmd.TransferText acImportDelim, "File1定義", "T_File", "C:\temp\File1.csv", False, "" DoCmd.OpenQuery "データ確認", acViewNormal, acEdit DoCmd.OutputTo acQuery, "データ確認", "MicrosoftExcelBiff8(*.xls)", "C:\temp\データ確認.xls", False, "", 0 MsgBox "データを 『 C:\temp 』 に出力しました。", vbInformation, "データ出力終了" Exit_コマンド0_Click: Exit Sub Err_コマンド0_Click: MsgBox Err.Description Resume Exit_コマンド0_Click End Sub -------ここまで-------- なんとか思ったように動いているのですが、超初心者が見よう見まねで作成したためか、ACCESSを起動しようとしたり、最適化すると下記のようなメッセージが表示されます。 -------ここから-------- セキュリティ警告 このファイルに、意図的にお使いのコンピュータに損害を与えるコードが含まれる場合、ファイルは安全でない可能性があります。 -------ここまで-------- ここで、質問です。 私が書いたコードは、いろいろ調べてコピーして張り付けたものなので、何か書き方が違っていたり、足りないコードがあるのでしょうか? もしくは、下記URLにあるようにセキュリティレベルを変更するかデジタル署名を使用することで回避できるのでしょうか? http://support.microsoft.com/kb/884310/ja このACCESSを他の事務所の方に展開して利用してもらおうと考えているため、セキュリティ警告が出ないようにしたいと思っています。 (みんなに嫌がられるので・・・) 超初心者のため、どのように伺えばいいのか難しく、表現がおかしかったり言葉足らずのことがあればご指摘ください。 良いアドバイスをお願いいたします!

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

2003からセキュリティが厳しくなって、マクロ付きのXLSファイルを開いたときのように Accessでも確認メッセージが出るようになりました。 (私は2002 & 2010 しか持っていません) VBAの記述方法によって出なくなる・・ということはありません。 載せられたリンク先はランタイム版の説明ですが、 他の方のPCにもAccessは入っているのですよね? デジタル証明書については、私自身よく分かりませんが 下記リンク先の Wendy02 さんの回答が参考になるかと思います。 http://okwave.jp/qa/q2821283.html かいつまんで言えば、 費用が発生する事と個人では取得が困難な点がネックになります。 セキュリティレベルを下げてもらうのが現実的な選択だと思います。 なお、蛇足ですが、Access 2007 SP2からは、MicrosoftExcelBiff8 オプションが消えてしまったようです。 Docmd.transferSpreadsheet メソッドを使われた方が良いかも知れません。 両者の結果を見て考えてみてください。 http://answers.microsoft.com/en-us/office/forum/office_2007-access/transition-from-access-2003-to-access-2007/91683edd-9b06-4023-987c-b6e6ec28416c

hope37
質問者

お礼

早速のご回答、ありがとうございます。 ソースの問題ではなく、MS-Officeのセキュリティの問題なのですね。 突き詰めると費用が発生するのであれば、nicotinismさんのおっしゃるとおり、私も「セキュリティレベルを下げてもらうのが現実的な選択」だと思いました。 現在、私はACCESS2003を利用しているのですが、他のメンバーはまだ2000を利用している方や、2010はいないと思いますが2007を利用している方もいるので「MicrosoftExcelBiff8 オプションが消えてしまった」という情報はとてもたすかります! 参照のURLが英文だったため、いまいち私の能力では理解しきれなかったのですが「Docmd.transferSpreadsheet」を検索してソースを修正したいと思います。 的確なアドバイスをしていただき、ありがとうございました! 自力でできるところまでがんばりたいと思います。 また、よろしくお願いいたします。

関連するQ&A

  • Access VBAでのフィルタ処理

    アクセス2003を使用しています。 今VBAを使用して、フォームのテキストボックスに記入された文字列を検索条件に、 クエリからデータ抽出したいのですが、 うまくいきません。 解決したい事は、 「abc*」といったように、前方が一致している文字列データを すべて抽出するといった処理です。 今は下記のようなプログラムを組んでいます。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click Dim stDocName As String Dim stLinkCriteria As String stDocName = "クエリ1" DoCmd.OpenQuery stDocName, acNormal, acEdit If IsNull(テキストボックス) Then Else stLinkCriteria = "[クエリデータ]=" & "'" & Me![テキストボックス] & "'" End If DoCmd.ApplyFilter stDocName, stLinkCriteria Exit_コマンド1_Click: Exit Sub Err_コマンド1_Click: MsgBox Err.Description Resume Exit_コマンド1_Click End Sub これだと完全に一致しなければ抽出してくれません。 どの様に変更すればよいでしょうか? よろしくお願いします。

  • Access97でのエクスポートエラーメッセージ

    OS WINXP Excel2002 Access97で、下記の操作をやると、 Microsoft Visual Basic 実行時エラー ’1004’:’講習会資料.xls’にアクセスできません。 というメッセージがでます。 再起動してやるとエラーにはならないのですが、もう1回やるとまた エラーメッセージがでます。 EXCELのファイルが何かおかしいのでしょうか? 教えてください。 Private Sub 講習会収支明細_Click() DoCmd.SetWarnings False DoCmd.Maximize If gOnErrorCtl Then On Error GoTo Err_講習会収支明細_Click Dim sh DoCmd.OpenQuery "Q_総会資料用", acViewNormal, acReadOnly DoCmd.OpenQuery "Q_借方仕訳伝票一覧印刷用", acViewNormal, acReadOnly DoCmd.OpenQuery "Q_貸方仕訳伝票一覧印刷用", acViewNormal, acReadOnly DoCmd.OpenQuery "Q_講習会資料残高用", acViewNormal DoCmd.TransferSpreadsheet acExport, 5, "T01_講習会資料残高用", "c:\講習会会計\講習会資料.XLS", True sh = Shell("C:\Program Files\Microsoft Office\Office10\EXCEl c:\講習会会計\講習会資料残高用.XLS", 1) DoCmd.SetWarnings False DoCmd.OpenQuery "Q_講習会収入残高用", acViewNormal DoCmd.TransferSpreadsheet acExport, 5, "T02_講習会資料残高用", "c:\講習会会計\講習会資料.XLS", True Exit_講習会収支明細_Click: Exit Sub Err_講習会収支明細_Click: MsgBox Err.Description Resume Exit_講習会収支明細_Click End Sub

  • Access csvファイルの取り込み

    Access2021 2箇所の保存先の違う所からcsvファイルの取り込みについて伺います。 csv取り込みボタンは、2つ用意しています。 1つ目のボタンに、コード記述して動作確認は正常に動作して他のボタンも正常に動作。 2つ目にのボタンに、csvの格納パス名のみ変更後コード記述して動作確認したら全てのボタンが反応しなくなりました。 動作としては、削除クエリでテーブルのデータを削除してから、指定したフォルダからcsvファイルを選択して取り込ます。 同じテーブルを使用して、格納先の違うcsvファイルを使用する操作になります。 コードは、以下の通りです。 ①ボタン1 Private Sub コマンド61_Click() '削除クエリ実行 DoCmd.SetWarnings False DoCmd.OpenQuery "テーブルデータ削除" DoCmd.SetWarnings True Dim msg As String msg = getFilePicker If msg = "" Then Exit Sub On Error GoTo err_sample DoCmd.TransferText acImportDelim, , "インポート先テーブル名", msg, True MsgBox "インポートが終了しました。", vbInformation + vbOKOnly, "処理完了" Exit Sub err_sample: Select Case Err.Number Case 3011 MsgBox "ファイルが見つかりません。処理を終了します。" Case Else MsgBox Err.Number & ":" & Err.Description End Select End Sub Function getFilePicker(Optional dTitle As String = "ファイル選択") '2003以降 Const msoFileDialogFilePicker As Integer = 3 Dim fDlg As Object Set fDlg = Application.FileDialog(msoFileDialogFilePicker) fDlg.Title = dTitle fDlg.InitialFileName = "csvインポートデータのフォルダパス名①" fDlg.AllowMultiSelect = False fDlg.Filters.Clear fDlg.Filters.Add "すべてのファイル", "*.*" fDlg.Filters.Add "CSV ファイル (*.csv)", "*.csv" fDlg.FilterIndex = 1 If fDlg.Show Then getFilePicker = fDlg.SelectedItems(1) Else getFilePicker = "" Me.Refresh End Function ②ボタン2 Private Sub コマンド62_Click() '削除クエリ実行 DoCmd.SetWarnings False DoCmd.OpenQuery "テーブルデータ削除" DoCmd.SetWarnings True Dim msg As String msg = getFilePicker If msg = "" Then Exit Sub On Error GoTo err_sample DoCmd.TransferText acImportDelim, , "インポート先テーブル名", msg, True MsgBox "インポートが終了しました。", vbInformation + vbOKOnly, "処理完了" Exit Sub err_sample: Select Case Err.Number Case 3011 MsgBox "ファイルが見つかりません。処理を終了します。" Case Else MsgBox Err.Number & ":" & Err.Description End Select End Sub Function getFilePicker(Optional dTitle As String = "ファイル選択") '2003以降 Const msoFileDialogFilePicker As Integer = 3 Dim fDlg As Object Set fDlg = Application.FileDialog(msoFileDialogFilePicker) fDlg.Title = dTitle fDlg.InitialFileName = "csvインポートデータのフォルダパス名②" fDlg.AllowMultiSelect = False fDlg.Filters.Clear fDlg.Filters.Add "すべてのファイル", "*.*" fDlg.Filters.Add "CSV ファイル (*.csv)", "*.csv" fDlg.FilterIndex = 1 If fDlg.Show Then getFilePicker = fDlg.SelectedItems(1) Else getFilePicker = "" Me.Refresh End Function ご教授の程、宜しくお願い致します。

  • クエリデータの取り出し

    下記のようなコードを使い、データだけをEXCELファイルに出していますが、間違えてEXCELファイルを削除した場合データが出ません、 アクセスでEXCELファイルを作成し、クエリデータを出す事は可能でしょうか?初心者の為コードの使い方等々解りません、宜しくお願いします。 Private Sub コマンド62_Click() On Error GoTo Err_コマンド62_Click Dim stDocName As String stDocName = "集計" DoCmd.TransferSpreadsheet acExport, , "集計", "C:\Documents and Settings\user\デスクトップ\ABC\data2" Exit_コマンド62_Click: Exit Sub Err_コマンド62_Click: MsgBox Err.Description Resume Exit_コマンド62_Click End Sub

  • SubではなくFunctionで作られる理由

    access2007を使っています。 素朴な疑問なのですがマクロを変換した時はなぜ Subプロシージャーではなく、Functionなのでしょうか? 「クエリを開く」と言うマクロを、VBAに変換したところ ******************************************************* Function マクロ1() On Error GoTo マクロ1_Err DoCmd.OpenQuery "クエリ1", acViewNormal, acEdit マクロ1_Exit: Exit Function マクロ1_Err: MsgBox Error$ Resume マクロ1_Exit End Function ******************************************************* となりました。 戻り値や返り値はないものは、FunctionプロシージャーではなくSubプロシージャーで作るものと思っていたのですが なぜ上記のコードはFunctionなのでしょうか? Functionで作る理由を教えてください。 特に意味はないのでしょうか? ちなみにFunctionをSubに書き換えて実行したら問題なくクエリが開きました。

  • アクセスVBAのエラーについて

    フォームを閉じるためにフォームにボタンを置いて、イベントプロシージャに下記のように書き込みました。すると添付画像のエラーが返ってきてマクロが動きません。 Private Sub コマンド103_Click() On Error GoTo Err_コマンド103_Click DoCmd.Close Exit_コマンド103_Click: Exit Sub Err_コマンド103_Click: MsgBox Err.Description Resume Exit_コマンド103_Click End Sub で、「ファイル-オプション-現在のデータベース」の”フォームの表示”を問題のフォームに切り替えたら問題なく動作します。 つまり”フォームの表示”で選んだフォームでしかコマンドボタンのマクロが動きません。全てのフォームでマクロが動くにはどうしたらよいのでしょうか?

  • アクセスで複数データ削除

    myPath = "D:\" myfilename = Dir(TxB04) Do Until myfilename = "" DoCmd.TransferText acImportDelim, , "tbl1", myPath & myfilename, False myfilename = Dir Loop MsgBox "取込が正常に終了しました。" MsgBox "二重打刻をチェックしてます。" '取込ファイル名を変換します。 DoCmd.SetWarnings False DoCmd.OpenQuery "データ変換" DoCmd.OpenQuery "実績追加" DoCmd.OpenQuery "重複データ削除" DoCmd.OpenQuery "削除クエリ" DoCmd.SetWarnings True Cmd21.Enabled = False ★Kill (strInFPath)★ 'メッセージマスタ取得 Sqlstate2 = "SELECT * FROM 氏名登録なし;" Set M_MSG2 = MyDB2.OpenRecordset(Sqlstate2, dbOpenSnapshot) If M_MSG2.RecordCount > 0 Then DoCmd.SetWarnings False DoCmd.OpenQuery "くえり1" DoCmd.SetWarnings True End If Exit Sub Err_Set_Seisan_Click: End Sub 今、vbでこのようなデータ取込を作っており★のところで取込データを削除させてます。 ただこれだと1つのデータしか削除できず、複数あったときには対応が困ってます。 こちら歯どのような対応でできるでしょうか? ご指導お願いします。

  • ACCESS 開いている表を閉じるには右上のX(バッテン)をクイックしますが、これをVBで操作するには?

    先日、クエリをVBで実行するには こんな風に↓やる、と聞いたのですが DoCmd.OpenQuery "myクエリ1", acViewNormal, acEdit http://oshiete1.goo.ne.jp/qa2661049.html 例えば、myクエリ1、が画面に表示するクエリだったりすると 今度、画面に表示された、表を閉じるには VBで操作するには、どうするのですか よろしくお願いします

  • 度々すみませんがインポートのことで・・・

    度々すみません。 どうしてもお伺いしたいのですが csvファイルのインポートを コマンドボタンで行いたいのですが 「外部テーブルのファーマットが正しくありません」と エラーが出てしまいます。 下記に何が問題あるのでしょうか、教えて下さい。 ちなみにファイル名はhead.csvでシート名もheadです。 インポートしたいテーブル名はheadです。 テーブルの形式はすべてあわせてあります。 テーブルをカラにしてみたり ヘッダー部分のみの状態でも同じエラーでした。 Private Sub コマンド3_Click() On Error GoTo Err_コマンド3_Click Dim stDocName As String stDocName = "マクロ1" DoCmd.TransferSpreadsheet acImport, , "head", "C:\My Documents\hea d.csv", True, "head" Exit_コマンド3_Click: Exit Sub Err_コマンド3_Click: MsgBox Err.Description Resume Exit_コマンド3_Click End Sub ---------------------------------------- OSは、Windows 98 アプリケーションは、Access 2000 です ----------------------------------------

  • Access コマンドボタンからの印刷

    Access2003を使用し、フォームにコマンドボタンを追加して、そのボタンからレポートの印刷を行なおうとしています。 印刷ダイアログボックスを表示し、直前で印刷のキャンセルもできるようにと下記のように記述しました。 Private Sub 印刷1_Click() On Error GoTo Err_印刷1_Click '[印刷]ダイアログボックスを表示した後、印刷 DoCmd.SelectObject acReport, "レポート1", True DoCmd.RunCommand acCmdPrint DoCmd.OpenReport "レポート1", acViewNormal '正常終了処理 Exit_印刷1_Click: Exit Sub 'エラー発生時 Err_印刷1_Click: Select Case Err.Number Case 2501 Exit Sub Case Else End Select End Sub しかし、これを実行し、印刷すると、なぜか2部印刷されます。 どうやら2回処理が実行されているようです。 また、試しに印刷ダイアログボックスで通常使用しないプリンタを選択してみたら、選択したプリンタから1部、通常使用のプリンタから1部出力されてしまいました。 初心者なもので原因がわからず困惑しております。 どなたか解決方法のご教授お願い致します。

専門家に質問してみよう