プロが教えるわが家の防犯対策術!

ACCESS2007を使用しています。
EXCELをインポートすると、余計な空白の行と列があり、フィールド名が定義されていないので、フィールド1、フィールド2のようになり、レコード数もブランクで取り込まれています。
インポート時に、この余計な空白の行と列を削除したいのですが、どうすればいいでしょうか?
現在、アクションマクロにて実行を行っていますので、アクションマクロでの対応を教えてください。
どうぞよろしくお願いいたします。

A 回答 (1件)

VBAでの記述はできますが、


アクションマクロの既存機能だけではできないと思います。


VBAでプロシージャを作れば、マクロのアクションとして
「プロシージャの実行」を選択し、作成したプロシージャ名を
指定してやれば、指定行・列のみインポートできます。


VBAで記述してみられる気になられたのなら、
http://www.geocities.jp/cbc_vbnet/
http://www.accessclub.jp/bbs3/0565/superbeg16353 …
あたりを参考になさると良いかと思います。
何かわからなければまた、新たに質問してください。
くれぐれも、御自分でいろいろ試さないで「VBAで作ってください」
などと丸投げなさらぬよう。


それはできないということであれば、毎回毎回、メニューバーの[ファイル]→
[外部データの取り込み]→[インポート]から取り込むという手もあります。
    • good
    • 0

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

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

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

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

QACCESSにEXCELからインポートした時に先頭に空列ができる

ACCESS97、EXCEL97を使っています。
EXCELのワークシートにあるデータを、ACCESSにインポートしたいのですが、インポート後のACCESSのデータベースの先頭に空欄の列(以下「空列」)が勝手に9~10行くらいできてしまうのです(もちろんEXCELのデータには空列はありません)。
どうして空列ができてしまうのでしょうか。
原因や解消方法をご存知の方よろしくお願いします。ちょっとした可能性でも構いません。

Aベストアンサー

インポートする際にウィザードで「名前の付いた範囲」を指定してもダメでしょうか?
または先にテーブルを作っておいてNullのレコードはインポートしないようにして
そのテーブルへExcelからインポートしてみてはいかがでしょうか。

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Qアクセスで、毎回インポートエラーが出るのはなぜ?

アクセス2003に、エクセルデータをインポートする時に、
「テーブル$_インポート エラー」というテーブルが作成されてしまいます。
取込み自体は出来ているようなのですが、どのテーブルにインポートしても、毎回同じ内容の、このエラーテーブルが別に出来てしまいます。
何か致命的な問題があるのでしょうか?

困っています。どうか宜しくおねがいします!

「テーブル$_インポート エラー」のデータシートビュー内容↓
   
  エラー           フィールド      行
データ型の変換エラー        F4     11
データ型の変換エラー      F9      11
データ型の変換エラー      F4      22
データ型の変換エラー      F9      22
データ型の変換エラー      F14      22
データ型の変換エラー      F4      24
データ型の変換エラー      F9      24

Aベストアンサー

>ただ、どのエクセルシートを取込んでも、同じエラー内容
>が出るのです。
これは、おかしいですね。 なんとも不思議ですね・・
内容が違えば、例えエラーが事実であっても、内容は異なるはずですから。
エラーが出たらエラーテーブル自体を削除しても
また、同じ内容で作成されるんですよね?

例えば、EXCEL側ではC列しか使っていないと思っていても、セルに対してスペースとかが入っていて
インポートする際に、C列を超えて認識してしまうことはありますが
どのシートでもと言うのは、ありえないですね。

本来の目的のA、B、CのみのEXCELを開いて、ごみが無いかD列以降を
広範囲に、列削除して試してみましょうか?

少なくとも、その状態でF14とかのエラーが再度作成されるとなると、
EXCELのデータでエラーが出ているのではない確証にはなります。

QAccessでテーブル名やクエリ名一覧の抜き出し

Accessでテーブルやクエリを沢山(100個以上?)使っております。

そこで、テーブル名やクエリ名の管理をしたいので、テーブル名(クエリ名)の一覧を抜き出したいのですが、どうすればいいのでしょうか?
または、そういうことは無理なのでしょうか??(;O;)

1個づつコピーペーストでテールブル名をエクセルに貼り付けて行こうかな?と思ったのですが、さすがに数が多すぎるので困っております。

できるだけ簡単な方法がいいのですが、もしなければVBAでもいいです。

おわかりの方がいらっしゃいましたら、よろしくお願いします。

Aベストアンサー

・クエリを新規作成
・以下SQLを貼り付け
SELECT MSysObjects.Type, MSysObjects.Name, MSysObjects.Flags
FROM MSysObjects
ORDER BY MSysObjects.Type, MSysObjects.Name;
・デザインビューで表示
あとは、TypeとFlagsの条件を変えてあげれば一覧できます。

QAccessでテーブルの値をテキストボックスに代入するには?

[ID][文字列]の2つのフィールドからなる単純なテーブルがあり、削除クエリを併用して常に最新のデータしか格納されていない状態に工夫できました。(データは常に1つ)
そこでフォーム上にあるテキストボックスにこのテーブルの[文字列]フィールドのデータを表示させたいのですが、
どうしたらよいでしょうか?

また、このテーブルの[文字列]フィールドのデータを直接変数として使いたい場合はVBAでどのように記述すればよいのでしょうか?

Aベストアンサー

テーブルに"データは常に1つ"ならコントロールソースに
「=DLOOKUP("文字列のフィールド名","テーブル名")」
IDごとに"データは常に1つ"ならコントロールソースに
「=DLOOKUP("文字列のフィールド名","テーブル名","[ID]='" & Me.ID & "'")」

Dlookup関数のヘルプ
http://office.microsoft.com/ja-jp/assistance/HP010496551041.aspx

Qアクセスでのテキストデータ取り込みについて

アクセスでテキストデータを取り込む際でのご質問がございます。
外部データからテキストデータを指定して
文字コードを指定して指定フィールドを文字列(テキスト型)として取り込もうとする際

例 取り込み前のデータ(文字列の後ろにスペースを含んだ半角20桁の文字列)

   "1234567‐11‐2‐3 "
"1234567‐234 "
" "
  *投稿画面ではスペースが表示されません)

  文字列(テキスト型)として取り込んだデータ

   "1234567‐11‐2‐3"
"1234567‐234"
""
となりスペースが消されてしまうのですが
スペースが消されないでテキストデータを
取り込める方法をご存知の方いらっしゃいますでしょうか?
どうぞよろしくお願いします。

Aベストアンサー

それは、選択クエリです。
http://www.geocities.jp/haku1569/pasocom/microsoft/access/qeri/0024.html
更新クエリに変更してください。

2007以降ならクエリをデザインビューで開けば
リボンの中に『更新』てのが有ります。

Qインポート時のエラー「データ型の変換エラー」

ACCESS2000を使用しています。
CSVファイルをマクロを使い、インポートしようとしているのですが、ある列に「33300G2」というデータがあります。
インポートのマクロを実行するとそのデータのみがインポートエラー(エラー内容は「データ型の変換エラー」)となってしまいます。
ちなみに、エラーが出る列は、「33300G2」以外全てが数字のみなのですが関係あるのでしょうか。
もし原因らしきものがわかればアドバイスよろしくお願いいたします。

Aベストアンサー

インポート定義をして下さい。
インポート→設定→データ型を変更して下さい。
何かあれば補足して下さい。
がんばれ

QAccessでvlookupみたいなことはできますか。

Accessで、2つのテーブルがあります。

touroku_m テーブル……ID、登録No、氏名、携帯メール
keitai_m テーブル……ID、登録No、携帯メール

keitai_mの方には、携帯メールフィールドに、アドレスが入力されています。
touroku_mテーブルの携帯メールフィールドは空なので、登録Noを比較して、共通だったらkeitai_mに入力してある携帯メールアドレスをtouroku_mに一気に入れたいのです。

こんなことは可能でしょうか。

Aベストアンサー

レス遅くなってすみません。
えっと、追加クエリはテーブル名を見て追加しますので、追加クエリが実行されるときにtouroku_mの名前のテーブルに追加されます。
なので最初touroku_mという名前のテーブルが名前を変えると、それには追加されませんが、またtouroku_mに戻せば追加されるようになりますよ。
要は追加クエリを実行したいテーブルの名前をtouroku_mにしとけば大丈夫です。


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

人気Q&Aランキング