たとえばPC1よりPC2へTXT形式でデータを落としてきて、そのデータの行と列を入れ替え、それをAccessでリンクさせるという一連の作業を自動でできたらと思っているのですが、VBAは現在勉強注なのですが、ほとんどわからないためどうしたものかと思っています。
一度きりならエクセルなどで編集して列と行を入れ替えて使おうと思ったのですが、リンク元のtxtデータには毎日新しいデータを上書きするのでそうもいかないので、どうしたものかとろいろ考えたのですがよい考えが浮かびません。
どなたかよい方法を知っておりましたらぜひ、教えていただけないでしょうか。
よろしくお願いします。

A 回答 (1件)

Accessへリンクは出来ません。


 どしてもリンクしたいとなるといくつかの条件がつきます。
 行と列の数は毎回同じ。
 テキストを編集するプログラムを別途容易できる。
 毎回同じ場所に同じファイル名で保存される。

 上記条件が満たされるとなると、そのファイル名でリンクを作成する。
 後は、PC1の方でデータを作成する段階で、列と行を入換えるプログラムを作成すればOK


 上記条件が一つでも成り立たない場合は、VBAを使用して、テーブルの中にデータを入れ込む必要があります。
 どちらかっていうと、こちらの方が簡単(手間ですけど)
 作業内容は
1)テーブルを作成する。デフォルトは、一列しかないテーブル
2)1行目のTXTデータを読込む。
3)1行目のデータの一項目を読込んで、テーブルに保存する。
4)次の行をデータを読込んで、次のレコードに格納する。
5)4を終了まで繰返す
6)TXTデータの2行目を読込む
7)テーブルに1列使いする
8)追加したテーブルにデータを綱目毎に買い込む
9)8を終了まで繰返す
10)6から順次次のデータを読込んで、終了まで繰返す

って手法で、出来ると思います。
 列と行の数が固定ならもう少し簡単な方法はるのですけどね...。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
1>行と列の数は毎回同じ。
2>テキストを編集するプログラムを別途容易できる。
3>毎回同じ場所に同じファイル名で保存される。
上記の内容ですと3の部分しか当てはまらないのでやはり無理ですね。
なので、確かに手間がかかりそうですが、私にも何とか出来そうですので、後の手順を試してみようと思います。
アドバイス本当にありがとうございました。

お礼日時:2001/05/25 08:43

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

関連するカテゴリからQ&Aを探す

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

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

Qテーブルリンク エクセルの4行目を先頭行にしたい

エクセルのデータをアクセスにテーブルリンクしたいのですが
エクセルの先頭行が4行目から始まります。
なおかつA1に文字が入ります。
(画像参照)

このエクセルデータをアクセスの
「テーブルのリンク」→ファイルを選ぶ
→ワークシートリンクウィザードが表示され、次のページに進み、
「先頭行をフィールド名として使う」にチェックを入れたいのですが、先頭行は4行目です。

この場合、どうすればエクセルの4行目を
アクセスのテーブルリンクの先頭行にできるのでしょうか?

エクセルのA1の文字を消去すれば自動的に4行目がアクセスで先頭行になりますが
エクセルの方は決まったフォーマットなのでA1の文字を消去することはできません。

ご回答よろしくお願いします。

Aベストアンサー

#1です

Excel ファイル側に手を入れられるのなら、#2さんの方がお勧めです。

なお、範囲名部分が行方向に増えるのなら、(Excel側で範囲を再設定)
何もせずに Access 側から変更を含めて値を得ることが出来るようですが、
列方向に範囲が広がった場合、 リンクの更新(RefreshLink)が必要みたいです。

嘘を言ってるかも知れないので、裏取りはしっかりとしてください。

QTXTデータを既存の、Access2000のテーブルへインポートしたいのですが・・・

OSはWindows98SE
SoftはAccess2000です。

現在Accessに、約5000件くらいの既存データがあります。(主キー:主索引)
-----------------------------------------------------------------
 主索引| 発注番号| 発注日 |担当者|販売先|商品番号|商品名・・・  
-----------------------------------------------------------------
00000001|0000000111|20011001| 03 |1001| A001 |ボイド
00000002|0000000222|20011005| 05 |1003| B004 |塩ビパイプ
  ・     ・     ・     ・   ・    ・    ・
  ・     ・     ・     ・   ・    ・    ・

そこへ約50件くらいのTXTデータを新しく追加及び、既存データに対して追加変更があったデータに修正(上書き)をしたいのですがどなたか教えていただけないでしょうか。
自分なりに、更新クエリを使ってみたり、VBの本を読んだりしたのですがよくわからず悩んでいます。。
何かヒントとなるものでも結構です。
説明が下手で申し訳ありませんがどうぞよろしくお願い致します。

OSはWindows98SE
SoftはAccess2000です。

現在Accessに、約5000件くらいの既存データがあります。(主キー:主索引)
-----------------------------------------------------------------
 主索引| 発注番号| 発注日 |担当者|販売先|商品番号|商品名・・・  
-----------------------------------------------------------------
00000001|0000000111|20011001| 03 |1001| A001 |ボイド
00000002|0000000222|20011005| 05 |1003| B004 |塩ビパイプ
  ・     ・...続きを読む

Aベストアンサー

まず、どこまで解かってて、どこから解かっていらっしゃらないのか解かりませんが(^^;、一から説明してみたいと思います。

現在AccessにあるテーブルをA、約五十件というデータをBというテーブルにインポートしたとします。

Aに無いデータを追加する方法・・・フィールド名・数共に同一であると仮定してあります。
この場合、不一致クエリを使用してAに含まれていないデータを抽出後、そのデータをテーブルに追加クエリを用いて追加します。
具体的には(今後のためにウィザードは使用しません)、
1)新規クエリをデザインビューで開く。
2)A、Bを「テーブルの表示」より追加する。
3)Aの「主索引」にBの「主索引」をドラッグする。
4)結合線が表示されるのでダブルクリックし、「結合のプロパティー」を表示する。
5)「Bの全レコードとAの同じ結合フィールドのレコードだけを含める」を選択。
6)Aの「主索引」をダブルクリックしてクエリにフィールドを追加。
7)フィールドの「表示」チェックをはずし、「抽出条件」に「Is Null」と記述。
8)Bの「*」をダブルクリックして全てのフィールドをクエリに追加。

ここまでで不一致クエリ(Aに無いデータの抽出)は終了です。適当なクエリ名(仮にIQ_Cとします)をつけて保存します。
このクエリを追加クエリに変更します。

9)IQ_Cをデザインモードで開く。
10)メニューバーより「クエリ」→「追加」を選択。
11)追加先を要求されるのでAを選択。
12)抽出条件に「Is Null」が入力されている列の「レコードの追加」(主索引となっていると思いますが)を削除(Delete)

これで完成です。
デザインモードで一度開いた後にビューに切り替えると追加されるレコードが表示されます。また、クエリをダブルクリックすれば追加クエリが実行されます。

長くなりましたが、お役に立てれば幸いです。

まず、どこまで解かってて、どこから解かっていらっしゃらないのか解かりませんが(^^;、一から説明してみたいと思います。

現在AccessにあるテーブルをA、約五十件というデータをBというテーブルにインポートしたとします。

Aに無いデータを追加する方法・・・フィールド名・数共に同一であると仮定してあります。
この場合、不一致クエリを使用してAに含まれていないデータを抽出後、そのデータをテーブルに追加クエリを用いて追加します。
具体的には(今後のためにウィザードは使用しません)、
1)新...続きを読む

Qエクセルで、条件を指定した行数のカウントについて

エクセルにて、条件に合致する行数のカウントを行うことは出来ますでしょうか。

添付画像のようなエクセルファイルにて、各日毎に「AAA」を含む行は何行あり、「BBB」を含む行は何行あるかをカウントしたいです。

添付のエクセルであれば、A列が「10月1日」でB列に「AAA」を含む行は○行という条件でカントが出来れば実現可能とは思いますが、
こういったカウントの仕方がそもそもエクセルで出来るのかどうか知りたいです。

もし、エクセル以外の方法で可能なのであれば、その方法も教えていただけるとありがたいです。

Aベストアンサー

SUMPRODUCT関数などを使った場合にはデータ数が多くなった場合には計算が重くなります。
作業列を使った方法がよいでしょう。
お示しのデータがシート1に有るとしてC列を作業列としてC2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(A1="","",IF(COUNTIF(B1,"AAA*"),A1&"AAA",IF(COUNTIF(B1,"BBB*"),A1&"BBB","")))

次にお望みの表を別のシートに表示させるとしたら別のpシートのB1セルにはAAAと入力しC1セルにはBBBと入力します。
A2セルから下方には例えば10月1日からの日付を入力します。
B2セルには次の式を入力してC2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。

=IF($A2="","",COUNTIF(Sheet1!$C:$C,$A2&B$1))

QSQLで返すデータを1列で表記したい。。

こんにちは。
素人と思って頂いて全くまちがいありません。

どうぞよろしくお願い致します。

例えば
select * from CUSTを行うと以下の様に出るとします。 

顧客A リンゴ
顧客A バナナ
顧客B リンゴ
顧客A 梨
顧客C バナナ
顧客B 梨

この様な表記では無く、

顧客Aと入力したら返すデータを リンゴ、バナナ、梨と言う様に同列に表記する方法はありますか?

何か他のツールを使用すれば出来ると言った事でも構いません。
皆様どうぞよろしくお願い致します。

Aベストアンサー

DBMSによります
MySQLならGROUP_CONCAT関数
PostgreSQLなら以下のサイトの要領
http://www.geocities.jp/oraclesqlpuzzle/postgresql/postgresql-memo.html
Oracleなら
http://www.geocities.jp/oraclesqlpuzzle/10-18.html
再帰SQLに対応していれば
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=41853&forum=26
の例が使えるかもしれません。

Qテキストファイルから必要な項目(行)をエクセルの行に移行させるには

テキストファイルから必要な項目(行)をエクセルの行に移行させる簡単な方法を教えて下さい。
1テキスト=エクセルの1行

Aベストアンサー

コピーアンドペーストでうまくいく気がします。
テキストファイルを、ノートパッドなどで開いて、全文をコピーし、エクセルに貼り付けるだけです。エクセルは、左上端のセル一つだけが選択された状態にしておきます。複数のセルを選択しているとサイズが合わないと文句を言われるかもしれません。

QAccessデータベースで行と列を指定して出力・・・

Accessのデータベースを使っています。
行と列を指定すると、1つだけ結果が出ると思うんですが、それを選択し、出力する方法を教えてください。

Aベストアンサー

横から失礼します。

ASPのカテゴリーに質問していれば「ASPからです」の部分は暗黙の情報になってたんですけどね・・・
と言うことは置いといて。

ASPのサーバサイド・スクリプトでAccessのMDBにアタッチする方法はすでにご存知だと思うので割愛します。
Access自体の使い方もわかりますよね?
クエリーも作れますよね?
で、それを前提に進めます。


> 3.行と列を指定する方法は、顧客IDが"1012"の人とかです。
MDBファイルをAccessで開いて、必要な条件で選択クエリーを作成してください。(保存はしなくていいです)
クエリーのビューをデザインから「SQLビュー」に切り替えると先のクエリーのSQL文字列表記が表示されるので、これをASPコード内で使用してください。

例えば、テーブル[tbl01顧客]のフィールド[m01顧客ID]の値が文字列「1012」のレコードの、フィールド[m01顧客ID]とフィールド[m01顧客名]とフィールド[m01顧客会社名]を取得したいなら、
"SELECT m01顧客ID, m01顧客名, m01顧客会社名 FROM tbl01顧客 WHERE (m01顧客ID='1012');"
というSQL文字列になります。

この文字列をRecordsetオブジェクトでOpenすれば該当するレコードを取得することができます。

ASPの簡単な入門書なら、おそらくどの書籍でもAccessにアタッチする方法が書かれていると思いますので、読みやすいものを購入してみてはどうでしょうか。

横から失礼します。

ASPのカテゴリーに質問していれば「ASPからです」の部分は暗黙の情報になってたんですけどね・・・
と言うことは置いといて。

ASPのサーバサイド・スクリプトでAccessのMDBにアタッチする方法はすでにご存知だと思うので割愛します。
Access自体の使い方もわかりますよね?
クエリーも作れますよね?
で、それを前提に進めます。


> 3.行と列を指定する方法は、顧客IDが"1012"の人とかです。
MDBファイルをAccessで開いて、必要な条件で選択クエリーを作成してください。(保存...続きを読む

Qエクセルの行の幅について

 エクセルの行幅を立ち上げ時点から太くしたいと思います。
 エクセルの行の幅は、立ち上げると12.75という高さになっているようです。しかし、これでは少々見づらいので15くらいにしたいと思います。
 もちろん、「行の高さ」で変更できるのは分かるのですが、毎回、修正するのが煩雑です。従って、立ち上げた初期段階から行の高さを変更することはできないでしょうか。

Aベストアンサー

う~ん。

確か、エクセルの初期設定で変更できるのは、
「シート数」「フォントの書体」「フォントの大きさ」
くらいだったと思います。
行の幅を、立ち上げ時から指定の幅にする事は出来なかったような…。

私自身、エクセルを結構利用するのですが、行の幅を変更するときは、
「全選択(画面左上の行(1)の上、と列(A)の左、の長方形の部分をクリック)」して、
行(1)と、行(2)の間にある線をドラッグして一気に全ての行の幅を変えています。

もし、それすらも煩雑と感じるほどにエクセルを新規で立ち上げているのであれば、
以下の方法はどうでしょうか?

1.行の幅を15に設定した「白紙のエクセル」をデスクトップに保存する。
2.新規で利用したい場合は、1で保存したエクセルをデスクトップ上でコピー(Ctrl + C)&ペースト(Ctrl + V)
3.ペーストしたエクセル(白紙で行幅15)を立ち上げる。

こうすれば、毎回行幅を変更する事なく、立ち上げ時から行幅15のエクセルが使用できますよ♪

ただ、全選択して一気に行幅を変える前者のやり方の方が簡単な気もしますが…。(汗

う~ん。

確か、エクセルの初期設定で変更できるのは、
「シート数」「フォントの書体」「フォントの大きさ」
くらいだったと思います。
行の幅を、立ち上げ時から指定の幅にする事は出来なかったような…。

私自身、エクセルを結構利用するのですが、行の幅を変更するときは、
「全選択(画面左上の行(1)の上、と列(A)の左、の長方形の部分をクリック)」して、
行(1)と、行(2)の間にある線をドラッグして一気に全ての行の幅を変えています。

もし、それすらも煩雑と感じるほどにエクセルを新規で立...続きを読む

Q[ASP+SQLserver]列名から列番号を取得できないか?

こんにちわ。
ASPでDBを扱うWebページを作っています。

次のようなデータベースがあるとします・・・
(0),(1),(2),(3) →列番号
ID,Name,Tel,Email

こういう場合、
Response.write ("Tel") とか
Response.write (2) とかでその内容が表示できますよね?

それを踏まえて・・・。
このデータベースの列名「Tel」がわかっていてその列が何番にあるか、、、この場合「2」であるということが知りたい場合はどのようにすればいいでしょうか?

そういうコマンドなどあればうれしいのですが・・・。

お手数をおかけしますが宜しくお願いいたします。

Aベストアンサー

> rsSample.Open SQL,dbConnection,3,2

rsSampleが、ADODB.Recordsetのインスタンスなら、
コレクションrsSample.Fieldsから各Fieldオブジェクトを参照して、属性Nameの値を探索すれば、特定できます。

詳しくは、ADODBのマニュアルをご覧ください。

参考URL:http://msdn.microsoft.com/library/en-us/ado270/htm/mdcolfields.asp

Qエクセルの行の幅がずれる

エクセルで表を作っているのですが
行の高さを25にして確かめてみると
どうしても24.5というように25の幅になっていません。
どうすればきっちり自分の設定した行の高さになるのでしょうか教えてください。
エクセルは2000を使っています。

Aベストアンサー

セルの高さの単位はなんでしょう?
ポイントという単位なのですが、1ポイントは約0.35mmでポイントは文字の大きさの単位と同じです。エクセルでは11ポイントの場合標準の高さが13.5、14ポイントでは17.5と変化します。
エクセルの標準フォントの高さを基準にしています。(これはオプションで変更できます。)

ピクセルと言う基準があって、これをポイントと言う単位に直しているので、25と言う端数のない数値にならない事がある。

例えば、幅はどうでしょう、これは標準フォントの文字数を表しています。(規定があるのですが省略)

と言う事で、出来ません。
25の右にあるピクセルと言う単位を基本に使うようにしたらいかがでしょう。
例えば列幅とも100ピクセルを選択するとセルは正方形になります。(ピクセルは列幅とも同じ物です。)
この併記はエクセル2000から始まったようですが。(単位が違うので、合わせるためみたいです。)

QMS-ACCESS2000で数万件のデータの列のコピー方法教えてください

Access2000で下記の様なレコードで約5万件のデータがあるのですが、これを列1から列2に、そっくりコピーする方法を教えてください。

【列1】【列2】【列3】【列n】
(値A)
(値B)
  |
(値N)

列1を、そっくりコピーしようとして、列1を一括選択しクリップボードにコピーして、列2を選択してペーストしたところ「ファイルの共有ロック数が制限を越えています(Error 3502)。」とエラーが表示され、約1900件位のデータしか列2にコピー出来ませんでした。

数万件あるデータの、とある列を一括コピーをするには、どのようにすればよいのでしょうか?
(クエリー等で出来るのでしょうか?)

Aベストアンサー

Accessのレジストリ初期値の「MaxLocksPerFile」の値を
9500から60000程度に変更して増やしてみてはいかがでしょうか?


http://66.102.7.104/search?q=cache:2GrOJ24_-qAJ:www.accessclub.jp/bbs2/0039/beginter12607.html+MaxLocksPerFile&hl=ja&lr=lang_ja


上のページのこぴぺですみませんが・・・

・198633 - [ACC2000] レプリカ同期中に「ファイル共有ロック数上限を超えています」エラー
http://support.microsoft.com/default.aspx?scid=kb;JA;198633

・815281 - [ACC2003] [PRB] 多数のトランザクション処理中に ファイルの共有ロック数が制限を超えています エラーが発生する
http://support.microsoft.com/default.aspx?scid=kb;ja;815281

・No4927.モジュール実行時のエラーについて
http://www.accessclub.jp/bbs/0011/beginers4927.html

・No7502.共有ロック数が制限を越えてしまった
http://www.accessclub.jp/bbs/0016/beginers7502.html

などをご参考にされてはいかがでしょうか?

はずれでしたらごめんなさい。

また、レジストリは操作に失敗すると大変なことになますので必ずバックアップを取ってから行ってください。

Accessのレジストリ初期値の「MaxLocksPerFile」の値を
9500から60000程度に変更して増やしてみてはいかがでしょうか?


http://66.102.7.104/search?q=cache:2GrOJ24_-qAJ:www.accessclub.jp/bbs2/0039/beginter12607.html+MaxLocksPerFile&hl=ja&lr=lang_ja


上のページのこぴぺですみませんが・・・

・198633 - [ACC2000] レプリカ同期中に「ファイル共有ロック数上限を超えています」エラー
http://support.microsoft.com/default.aspx?scid=kb;JA;198633

・815281 - [ACC2003] [PRB] 多数の...続きを読む


人気Q&Aランキング

おすすめ情報