ACCESSのVBAを使ったプログラムを製造していますが、ACCESSのVBAの場合、どうしても利用者に見えてしまいます。
EXCELのときは、確かコンパイルしてXLA形式にすると利用者からは見えなくなったのですが。
ACCESSのVBAを利用者から隠す方法を、どなたかご教授頂けませんか?
宜しくお願い致します。

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

A 回答 (3件)

AccessをデフォでインストールするだけでMDEの作成は使える筈ですが・・・



・モジュールの編集画面で「全てのモジュールをコンパイル」は実行できますか?
・参照設定でエラーが出ている部分はありませんか?

この2点を確認してみてはどうでしょう?
これでダメだと再インストールですかね?
    • good
    • 0
この回答へのお礼

ありがとうございました。
コンパイルエラーが発生しておりました。エラー除去後、解決致しました。

お礼日時:2001/12/25 13:34

パスワードを設定する場合は、VBEから「ツール」「??のプロパティー」「保護」のタブでパスワードを設定する。



ACCESSのウインドウから「ツール」「データベースユーティリティ」「MDEファイルの作成」というのもあります。

MDEファイルは作ったことがないので、詳細は聞かないでください。
    • good
    • 0

MDEファイルを作成すれば、デザイン等も変更不可になります


メニューバー → データベースユーティリティ → MDEファイルの作成

この回答への補足

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

早速やってみましたが、「MDEファイルの作成」がディメットされていて、押せません。何か、問題があるのでしょうか?
(MSGBOXで文字列を出力すと言う簡単なモジュールを作って実験してみましたが、やっぱり駄目でした)

当方、ACCESS2002です。 すいません、宜しくお願い致します。

補足日時:2001/12/21 14:46
    • good
    • 0
この回答へのお礼

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

早速やってみましたが、「MDEファイルの作成」がディメットされていて、押せません。何か、問題があるのでしょうか?
(MSGBOXで文字列を出力すと言う簡単なモジュールを作って実験してみましたが、やっぱり駄目でした)

当方、ACCESS2002です。 すいません、宜しくお願い致します。

お礼日時:2001/12/21 14:44

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

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

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

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

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

Q掃除機のコードをまとめる

事務所で使用している掃除機(業務用)の電源コードをまとめることができる商品を探しています。
最近の掃除機はほとんどが電源コードは中に収納(?)できるようになっていますが、使用している掃除機は電源コードが出たままになっています。
そこで電源コードをまとめることができる商品をさがしているのですが名前がわかりません。
少し前にテレビで見たのですが、巻尺を大きくしたようなものに電源コードをいれてコードの長さの限界がきたらそこから少しずつ長さを伸ばしていくような商品が良いです。
掃除機はけっこう使用するので輪ゴムのようなもので束ねるという方法はなしでおねがいいたします。

説明がわかりにくくなってしまいましたが商品の名前などがわかる方、情報おねがいいたします。

Aベストアンサー

業務用掃除機は、本体に巻きつけることを基本にしています。掃除機を縛るようにまきつけてください。

業務用の掃除機は大電流をつかいますのでコードリール形状のものが使用できません。過熱や火災の原因になりますのでそのまま使用することをお薦めします。

QAccess VBA Split利用方法

お世話になります。

VBAを勉強している最中です。
Accessを利用して、txtファイルをインポート後、テーブルの項目を配列利用して
カンマ区切りにしたいのと、Splitを利用して、配列を条件分岐に利用して、テーブルに
書き込みをしたいとおもってます。

おそらく基本的なことで自分で勉強するべきと思うのですが
漠然なイメージしかない状態で、ヒントやこういう方法があるなど
教えていただけますでしょうか

基本的な使い方ですと
Private Sub XXX_Click()
str = Split("あああ いいい ううう")
  MsgBox str(1)
End Sub

上記の用な利用方法と思いますが、このような使い方ではなく
test(0)のような使い方をして、条件分岐で利用したいと
おもってます。

イメージとしては、下記のようなことをイメージしてます。

Public Sub Test()

  Dim test() As String
Dim row As String
  Dim iNum1 As Long,
  Dim iNum2 As Long
  
  DoCmd.SetWarnings False
  DoCmd.RunSQL "DELETE * FROM data"
 DoCmd.TransferText acImportFixed, "インポート定義", "data", "d:\data.txt"
  DoCmd.SetWarnings True

  iNum1 = 0
  iNum2 = 0

  Do While xxx
     If test(0) = 0 Then 
        iNum1 = iNum1 + 1
iNum2 = 1
     Else
        xxxx
     End If

  Loop
End Sub

ここでSplitを利用してどのように指定するのが望ましいのか考えてしまってます。
test = row.Split(" ") を利用する場合、どのように連結(row)させるのかが不明です。

知識不足もあり、説明がわかりづらいと思うのですが、よろしくお願いします。

お世話になります。

VBAを勉強している最中です。
Accessを利用して、txtファイルをインポート後、テーブルの項目を配列利用して
カンマ区切りにしたいのと、Splitを利用して、配列を条件分岐に利用して、テーブルに
書き込みをしたいとおもってます。

おそらく基本的なことで自分で勉強するべきと思うのですが
漠然なイメージしかない状態で、ヒントやこういう方法があるなど
教えていただけますでしょうか

基本的な使い方ですと
Private Sub XXX_Click()
str = Split("あああ いいい ううう")
  M...続きを読む

Aベストアンサー

No4について少し説明をしておきます。
No4のSub cmdFile2() について、

  Do While Not EOF(1)
    Line Input #1, LineofText
    '配列にデータを格納
    arrayText = Split(LineofText, ",")
    '配列の要素をテーブルに格納
      rs.AddNew
      For i = 0 To UBound(arrayText)
      rs.Fields(i) = arrayText(i)
      Next i
      rs.Update
  Loop


arrayTextの型はVariantですが、配列を格納する場合は
この型で行ないます。

(1)
Line Input #1, LineofText
はテキストファイルのデータを一行ずつ変数LineofTextに読み込む
コードで、たとえば、LineofTextに
関東,東京,群馬,神奈川,千葉
のようにデータが格納されている考えてください。

(2)
次に、
arrayText = Split(LineofText, ",")
によって、カンマを区切りとして配列を
arrayTextに作ります。

(3)
ここからが肝要ですが、補足に

>Dim aaa() As String のような状態にした場合、
>そこからどうテーブルの列をを認識させて、
>aaa(0)がフィールド1の配列として認識させる
>ことができるのかがよくわかっていないといいますか・・・
>わかりづらいでしょうか

とありますが、

    '配列の要素をテーブルに格納
      rs.AddNew
      For i = 0 To UBound(arrayText)
      rs.Fields(i) = arrayText(i)
      Next i
      rs.Update

は、ちょうどこの部分を表しているところで、
rs.Fields(i) = arrayText(i)
の、左側はテーブルのi番目のフィールドを表し、右側は
配列のi番目の要素を表しています。今、テーブルと
テキストファイルの列の数は同じとしているので、
rs.Fields(i) = arrayText(i)
のようにして、テーブルの列の位置と、配列の要素の位置
を簡単に同期させることができます。


(4)
一つの行の処理が終わったら、
Do While Not EOF(1)

Loop
によって、次の行に進み、データを同様に取得します。
なお、テーブルの次の行に新しくデータを格納するのは、
rs.AddNew

rs<Update
のくみあわせによって、新しい行にレコードを追加する
ことができることになります。そして新たにiは0から
始まるので行の先頭からレコードを追加できる、と
いうことになります。


なお、テキストファイルにNullがある場合、たとえば、

関東,東京,,神奈川,千葉
関西,大阪,兵庫,,奈良
中国,広島,岡山,鳥取,山口

のように、ところどころデータが空の部分がある場合、
No4のSub cmdFile2()を実行すると、長さが0の文字列
を格納できません、といったエラーが出ます。

そういった場合は、まさに条件分岐で、たとえば、

  Do While Not EOF(1)
    Line Input #1, LineofText
    '配列にデータを格納
    arrayText = Split(LineofText, ",")
    '配列の要素をテーブルに格納
      rs.AddNew
      For i = 0 To UBound(arrayText)
      If arrayText(i) <> "" Then
      rs.Fields(i) = arrayText(i)
      Else
      rs.Fields(i) = "空"
      End If
      Next i
      rs.Update
  Loop

のようにして、処理を行ないます。

なお、Accessのテーブルのフィールドの型は
テキスト型としています。

以上です。

No4について少し説明をしておきます。
No4のSub cmdFile2() について、

  Do While Not EOF(1)
    Line Input #1, LineofText
    '配列にデータを格納
    arrayText = Split(LineofText, ",")
    '配列の要素をテーブルに格納
      rs.AddNew
      For i = 0 To UBound(arrayText)
      rs.Fields(i) = arrayText(i)
      Next i
      rs.Update
  Loop


arrayTextの型はVariantですが、配列を格納する場合は
この型で行ないます。

(1)
Line Inpu...続きを読む

Q電気コードのまとめ方

パソコン、プリンター、テレビ、FAX、電話ゲームなど家電が多くて、コンセントが蛸足状態です。
それぞれのコードが邪魔でしょうがいないのですが、いくつかはある程度束ねてテープで軽く巻いてあります。
ちなみに、電気コードをまとめる為に、一回結ぶのは大丈夫でしょうか?
蝶結びとか、固結びでは無いです。
軽く一度だけ結ぶだけです。
どなたかアドバイス下さい。

Aベストアンサー

No.6の方の言われる事は、電気コードと使用電流に関する重要な基本的な事項ですので、一部重複しますが、補足させてください。

電気コードに電流が流れるとコードの電気抵抗と電流の2乗に比例して熱を発生しますが、この熱は、コードの表面から放熱され、ある温度で安定します。
電気コードに安全に流せる電流は、上記により専門家で決められていますが、規格の基準が、コードを束ねたり、丸めたりせず、ばらけてコードの表面の空気への放熱を妨げない条件になっています。
束ねたり、丸めたりすると放熱面積が不足し温度が上昇するということです。
カバーやパイプのようなものにいれても、かなりの電流の低減が必要です。

普通は、機器の設計者も安全を見てはいますが、更に取扱説明書に「束ねないで使用するよう」に注意書きを入れるのが一般です。
一例として掃除機の巻き込み式のものには、赤と黄色のマークがあり、黄色までは必ず引き出して使用するようになっています。

電子機器では、使用電流がそれほど多くはないので、問題ないものもあるには違い無いのですが、見分けられるかが問題です。

便利グッツなどには、この辺の検討が不十分なものもありますから、自己責任でお願いします。
発生熱量と放熱と上昇温度について、自信が無ければ、ばらけたままでの使用をお勧めします。
あるいは、束ねた中に温度計を仕掛けて、最悪条件で1昼夜程度の温度試験をなさるのが良いでしょう。

No.6の方の言われる事は、電気コードと使用電流に関する重要な基本的な事項ですので、一部重複しますが、補足させてください。

電気コードに電流が流れるとコードの電気抵抗と電流の2乗に比例して熱を発生しますが、この熱は、コードの表面から放熱され、ある温度で安定します。
電気コードに安全に流せる電流は、上記により専門家で決められていますが、規格の基準が、コードを束ねたり、丸めたりせず、ばらけてコードの表面の空気への放熱を妨げない条件になっています。
束ねたり、丸めたりすると放...続きを読む

QACCESS VBAで別のACCESS(mdb)を起動できますか

ACCESS VBAで別のACCESS(mdb)を起動できますか?

その場合 呼び出し元の
ACCESSは、終了しますか?

できれば終了したほうが良いです。

教えてください。

よろしくお願いします。

Aベストアンサー

>ACCESS VBAで別のACCESS(mdb)を起動できますか?
ADOを使って読み書きは出来ます。

>ACCESSは、終了しますか?
>できれば終了したほうが良いです。
結論から言えば無理です。
VBAは現在開いているACCESSから起動しているわけですから現在のMDBを閉じた瞬間にVBAは終了してしまいます。
VBAでなくVBを考えたほうが早いと思いますが

Q電気コードをまとめる良い方法。

 電気コードをまとめる良い方法はありませんか?。
 とにかく、ぐちゃぐちゃでそのうち絡まって解くのが大変ですし。

Aベストアンサー

以下のページの、「 ケーブル整理用品 」 の類などはいかがでしょう。

ELECOM - ケーブルアクセサリ
http://www2.elecom.co.jp/cable/accessory/index.asp

参考URL:http://www2.elecom.co.jp/cable/accessory/index.asp

QAccess2003VBA・MDBファイルの容量をVBAで知りたいです。

Access2003VBAで質問です。

(1)VBA実行中(自分自身)のMDBファイルの容量を、VBAで知ることはできますか?
CSVファイルを読み込む処理ですが、1.9ギガくらいで、処理をとめたいのです。

(2)VBA実行中(自分自身)のMDBファイルのディレクトリを取得する方法を教えて下さい。

(3)自分自身のMDBファイルは、最適化できませんよね。
DAOで、閉じてるMDBファイルをコピーするしかないのかな?

Aベストアンサー

1)&2)
Sub Test()
  Dim FS As Object
  Set FS = CreateObject("Scripting.FileSystemObject")
  Debug.Print "size=" & FS.getfile(CurrentProject.FullName).Size
  Debug.Print "path=" & CurrentProject.Path, "name=" & CurrentProject.Name
  Set FS = Nothing
End Sub

3)
自身を最適化する方法は色々な方が考えられています
ペン萩 さん
http://www.penhagi.com/access/tips/27_saiteki.htm
YU-TANG さん
http://x7net.com/~access/AcTipsGnrlHowToCompactCurrentMDB.html

Q電化製品のコードをまとめるもの!

パソコンや家電の配線コードが長くて、見た目にもジャマです!!

で、コレをまとめるものを購入しようと思ったのですが、検索しようにも名前が分かりません!!(>_<)

誰か、製品の名前を教えてください!!

Aベストアンサー

コルゲートチューブかスパイラルチューブはどうでしょうか。

コルゲートチューブは蛇腹上のチューブに切れ目が入っているので切れ目からコードを入れます。中のコードの太さに限界があります。ですが外しやすいです。

スパイラルチューブはらせん状になったチューブをコードに巻き付けるような感じです。巻き付けるので中のコードが多少太くても対応できます。ですが外す時にちょっとめんどうです。

どちらも100円ショップやホームセンター、大型の電気店などで売っています。

QAccess vba 教えてください。 初心者です

以下のような
テーブルT_ソフトリスト、テーブルT_ソフト
フォームF_入力
があったときに、フォームの使用者のコンボボックスに入力をしたときに、
T_ソフトから使用者を探して、ソフトリストIDを取得し、そのソフトリストIDを元にT_ソフトソフトのソフト名をフォームのコンボボックスに表示させるようにしたいのですが、
どの様なソースコードを書けばよいでしょうか?



「T_ソフトリスト」←テーブル
==================================
ID  | ソフト名 |
──────────────
1   | A | 
2  | B | 
3  | C | 
4  | D | 
5  | E | 
==================================

「T_ソフト」←テーブル
==================================
ID |ソフトリストID | 使用者 |
───────────────────
1 |  4     | 佐藤  |
2 |  2     | 鈴木  |
3 |  5     | 斉藤  |
4 |  1     | 佐藤  |
5 |  3     | 田中  |
==================================

「F_入力」←フォーム
==================================
使用者  [コンボボックス]←Combo_UserType
ソフト名 [コンボボックス]←Combo_User
==================================

以下のような
テーブルT_ソフトリスト、テーブルT_ソフト
フォームF_入力
があったときに、フォームの使用者のコンボボックスに入力をしたときに、
T_ソフトから使用者を探して、ソフトリストIDを取得し、そのソフトリストIDを元にT_ソフトソフトのソフト名をフォームのコンボボックスに表示させるようにしたいのですが、
どの様なソースコードを書けばよいでしょうか?



「T_ソフトリスト」←テーブル
==================================
ID  | ソフト名 |
──────────...続きを読む

Aベストアンサー

遅くなりました。

(1) Combo_UserTypeの設定
集合タイプ   テーブル/クエリ
値集合ソース  T_使用者
列数      2
列幅      0cm,2cm
連結列     1
リスト幅    3cm


(2) フォームのコード

'######ここから########

Private Sub Combo_UserType_AfterUpdate()

'MsgBox Me!Combo_UserType.Column(0)
Me!Combo_User.RowSource = ""
Me!Combo_User.Requery
Me!Combo_User.Value = ""

'変数宣言
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim varSoft As String

'オブジェクト設定
Set db = CurrentDb
Set rs1 = db.OpenRecordset("T_ソフトリスト", dbOpenDynaset)
Set rs2 = db.OpenRecordset("T_ソフト", dbOpenDynaset)

'検索開始
If rs2.RecordCount > 0 Then
rs2.MoveFirst
Do Until rs2.EOF
'データが見つかった時の処理
If CLng(Me!Combo_UserType.Column(0)) = CLng(rs2![使用者]) Then
varSoft = DLookup("[ソフト名]", "T_ソフトリスト", "[ID] = " & rs2![ソフトリストID])
Combo_User_NotInList varSoft, acDataErrAdded
End If
rs2.MoveNext
Loop
End If

rs1.Close: Set rs1 = Nothing
rs2.Close: Set rs2 = Nothing
db.Close: Set db = Nothing
End Sub


Private Sub Combo_User_NotInList(NewData As String, Response As Integer)
If Me!Combo_User.RowSource = "" Then
Combo_User.RowSource = NewData
Else
Combo_User.RowSource = Combo_User.RowSource & ";" & NewData
End If
Response = acDataErrAdded
End Sub

'######ここまで######

Combo_UserTypeの更新後では、いくつか変更しました。

(1)
「'データが見つかった時の処理」のコメント以下の2行。
もし、If文の中に入らないようであれば、
If CLng(Me.Combo_UserType.Column(0)) = CLng(rs2![使用者]) Then
のように、両方、あるいはどちらか一方をCLngでキャストしてみて
ください。たぶん、それで入ると思います。

(2)
varSoft = DLookup("[ソフト名]", "T_ソフトリスト", "[ID] = " & rs2![ソフトリストID])
にしましたが、もとの
varSoft = DLookup("[ソフト名]", "T_ソフトリスト", "[ID] = " & rs2![ソフトリストID] & "")
でもデータは取れると思います。

(3)
Me.Combo_UserType.Column(0)
のようにして、コンボボックスでは名前を表示し、
非表示にしているIDをColumn(0)でコンボボックスの
列のインデックスで指定してIDを取得するように
しました。

(4)
最初に抜けていたオブジェクトの後処理を最後に
追加しました。


たぶん、KtoTtoAさんが言われたキャストはCLng
による型変換だろうと思います。。

遅くなりました。

(1) Combo_UserTypeの設定
集合タイプ   テーブル/クエリ
値集合ソース  T_使用者
列数      2
列幅      0cm,2cm
連結列     1
リスト幅    3cm


(2) フォームのコード

'######ここから########

Private Sub Combo_UserType_AfterUpdate()

'MsgBox Me!Combo_UserType.Column(0)
Me!Combo_User.RowSource = ""
Me!Combo_User.Requery
Me!Combo_User.Value = ""

'変数宣言
Dim db As Database
Dim rs1 As Recordset
Dim rs2 As Recordset
Dim varSoft As String
...続きを読む

Qコードをまとめるチューブの名前

電源などのコードをまとめる透明か半透明のチューブみたいな
たぶんみためストローの太いのみたいなものの名前はなんですか?
名前がわからないので調べようがないです。

Aベストアンサー

スパイラルチューブです。

QVBA と コンパイル の関係

VBAのウィキを見ていると
http://ja.wikipedia.org/wiki/Visual_Basic_for_Applications
「基本的にはインタプリタ型の言語であるため、コンパイル(ビルド)の作業は不要である。」

との事ですが
VBE画面のデバッグ画面に「VBAProjectのコンパイル」と言う機能がなぜあるのはなぜでしょうか?
VBAでコンパイル作業は不要だけど、付属として「VBAProjectのコンパイル」機能があるのでしょうか?

Aベストアンサー

こんばんは

私の場合、VBAは何年も使っていますが「VBAProjectのコンパイル」
なんて機能は知りませんでした。

人に教える機会があって、そのときに使ったテキストに出ていたので、初めて知りました。
「VBAProjectのコンパイル」を使わなくても、問題なく動作します。

一つ、使い道をあげるならば、
「VBAProjectのコンパイル」を使うと、実行することなく、文法チェックできます。

もっとも、文法上のエラーがあれば、プログラムが実行される前にエラーが出るように
なっていますので、わざわざ一手間をかける理由は見つかりません。

たぶん、過去のバージョンを使っていた人が「この機能はどこへ行った?」と
ならないように残しているのではないかと思います。
そうはいっても、Excel2000でも、コンパイル操作なしに実行できますから、
当たってないかもしれません。


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

人気Q&Aランキング