Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2030 / 2272 ツリー ←次へ | 前へ→

【4136】インポートでなく、追加貼り付け ひろのしま 05/1/13(木) 13:08 質問[未読]
【4137】Re:インポートでなく、追加貼り付け クロ 05/1/13(木) 13:52 回答[未読]
【4192】Re:インポートでなく、追加貼り付け ひろのしま 05/1/17(月) 18:16 質問[未読]
【4195】Re:インポートでなく、追加貼り付け クロ 05/1/18(火) 8:20 回答[未読]
【4196】Re:インポートでなく、追加貼り付け ひろのしま 05/1/18(火) 9:29 お礼[未読]
【4197】Re:インポートでなく、追加貼り付け クロ 05/1/18(火) 9:46 回答[未読]

【4136】インポートでなく、追加貼り付け
質問  ひろのしま  - 05/1/13(木) 13:08 -

引用なし
パスワード
   すみません、質問いたします。
アクセステーブルに指定されたエクセルのセル範囲をインポートする場合、
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9,
"テーブル名",
"パス付きエクセルファイル名",False,
"エクセルシート名!"
"指定されたセル範囲"

のコマンドで行います。ですが、私が行おうとしている作業で、インポートされる側のテーブルの7列のうちの5列を選択して
エクセルの指定5列を追加貼り付けを行うという作用を行わなければなりません。
つまり、テーブルを表示する場合のコマンドですと、
  with Docmd
  .OpenTable "事象パターンマスタ", acViewNormal, acEdit 'テーブル表示
  'ここで、列を選択するコマンドを記述する
  .RunCommand acCmdPasteAppend '追加貼付
  end with
となりますが、この作業をテーブルを見せずにVBAコマンド上で行いたいのです。
どうか、よきアドバイスをお願いします。

【4137】Re:インポートでなく、追加貼り付け
回答  クロ  - 05/1/13(木) 13:52 -

引用なし
パスワード
   TransferSpreadsheetのTableName引数にインポート先テーブルでなく
クエリで抽出してフィールド(選択した5列)を指定してみてはどうですか?

【4192】Re:インポートでなく、追加貼り付け
質問  ひろのしま  - 05/1/17(月) 18:16 -

引用なし
パスワード
   ▼クロ さん:
>TransferSpreadsheetのTableName引数にインポート先テーブルでなく
>クエリで抽出してフィールド(選択した5列)を指定してみてはどうですか?

ありがとうございます。無事インポートできました。で、追加の質問なのですが、
Accessでテーブルの列名を変えることの出来る,Oracleで使用するコマンド
はありませんでしょうか。
Docmd.RunSQL"Alter table テーブル名 change column 旧列名 新列名;"
Docmd.RunSQL"Alter table テーブル名 modify column 旧列名 新列名;"
だと、エラー表示になってしまいます。
贅沢な質問ですが、よろしくお願いします。

【4195】Re:インポートでなく、追加貼り付け
回答  クロ  - 05/1/18(火) 8:20 -

引用なし
パスワード
   >Accessでテーブルの列名を変えることの出来る,Oracleで使用するコマンド
>はありませんでしょうか。

Oracleのことはそちらの掲示板などで聞かれた方がよいかと...

>Docmd.RunSQL"Alter table テーブル名 change column 旧列名 新列名;"
>Docmd.RunSQL"Alter table テーブル名 modify column 旧列名 新列名;"

AccessのSQLではフィールド名を変更することはできなかったと思います。

【4196】Re:インポートでなく、追加貼り付け
お礼  ひろのしま  - 05/1/18(火) 9:29 -

引用なし
パスワード
   ▼クロ さん:
>>Accessでテーブルの列名を変えることの出来る,Oracleで使用するコマンド
>>はありませんでしょうか。
>
>Oracleのことはそちらの掲示板などで聞かれた方がよいかと...
>
>>Docmd.RunSQL"Alter table テーブル名 change column 旧列名 新列名;"
>>Docmd.RunSQL"Alter table テーブル名 modify column 旧列名 新列名;"
>
>AccessのSQLではフィールド名を変更することはできなかったと思います。

すみません。下記のコマンドで解決できました。
'テーブル名を変更するコマンド(不要)------------------
Dim Tdf As TableDef
Dim Fld As Field
Set Tdf = CurrentDb.TableDefs("該当テーブル名")
For Each Fld In Tdf.Fields
   If fld.name="該当フィールド名" Then
     fld.Name="変更後フィールド名"
   End if
Next

クロさん、ご回答ありがとうございます。それと、もう一つ質問なのですが、
Accessにおいて使えるOracleやMySQLのコマンドの範囲がいまいち把握できません。
Docmd.RUNSQL "Alter table 該当テーブル名 add column 追加列名 text;"
の、列を追加するコマンドが使用できたので上記のコマンドを使用してしまいました。
ですので、もし、レジストリーやAccessの参照設定などで変更できる、あるいは絶対に出来ない等の理由があれば教えてください。

【4197】Re:インポートでなく、追加貼り付け
回答  クロ  - 05/1/18(火) 9:46 -

引用なし
パスワード
   それほど詳しくないので…。
参考までに
ヘルプで「Microsoft Jet SQL のリファレンス」を
ご覧になってはどうでしょうか?

Ac2002の場合
利用できるSQLはJetSQL(Ver4)で(ANSI SQL-89準拠)のようです。
ツール>オプションで「ANSI SQL-92」使用に変更できるようです。

2030 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078256
(SS)C-BOARD v3.8 is Free