Access VBA質問箱 IV

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

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


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

【4922】ExcelのデータをAccessのデータにしたい nemotake 05/4/18(月) 15:34 質問[未読]
【4926】Re:ExcelのデータをAccessのデータ... 小僧 05/4/20(水) 9:39 発言[未読]
【4931】Re:ExcelのデータをAccessのデータ... nemotake 05/4/20(水) 13:04 お礼[未読]
【4932】Re:ExcelのデータをAccessのデータ... nemotake 05/4/20(水) 14:57 質問[未読]
【4934】Re:ExcelのデータをAccessのデータ... 小僧 05/4/20(水) 16:08 回答[未読]
【4935】Re:ExcelのデータをAccessのデータ... nemotake 05/4/20(水) 17:49 お礼[未読]

【4922】ExcelのデータをAccessのデータにし...
質問  nemotake  - 05/4/18(月) 15:34 -

引用なし
パスワード
   モジュールで処理したいのですが、Excelのシート中のデータをAccessのテーブルに格納したいのですが、Excelのデータを使用するのは初めてなので教えてください。
例)シート名・・・計画
  A1のデータ1000を
  Accessのテーブル・・・・計画テーブル
  の4月に格納したいのですが、全然わかりません。
Excelのデータの読み読み方、データの記述の仕方がよくわかりません。
よろしくお願いします

【4926】Re:ExcelのデータをAccessのデータ...
発言  小僧  - 05/4/20(水) 9:39 -

引用なし
パスワード
   ▼nemotake さん:
おはようございます。

ご提示された例が当方にはちょっと解りづらいので
以下のような例をあげさせて頂きます。

ブック名:temp.xls
シート名: 計画
セル  :A1

にある値を

テーブル名:計画テーブル
月(テキスト型)  値(テキスト型)
1月
2月
3月
4月

4月の値フィールドに挿入する例です。

※要Excel、ADO参照設定

Sub エクセル値参照()
Dim xlsApp As New Excel.Application
Dim xlsWkb As New Excel.Workbook
Dim WkbName As String
Dim ShtName As String
Dim TblName As String
Dim RS As DAO.Recordset

  WkbName = "C:\temp.xls"
  ShtName = "計画"
  TblName = "計画テーブル"
  Set RS = CurrentDb.OpenRecordset(TblName, dbOpenDynaset)
  Set xlsWkb = xlsApp.Workbooks.Open(WkbName)
    RS.FindFirst "月 = '4月'"
    RS.Edit
    RS![値] = xlsWkb.Sheets(ShtName).Range("A1").Value
    RS.Update
  xlsWkb.Close: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing
  RS.Close: Set RS = Nothing
End Sub

【4931】Re:ExcelのデータをAccessのデータ...
お礼  nemotake  - 05/4/20(水) 13:04 -

引用なし
パスワード
   小僧 さん
ありがとうございます。
大変わかりやすくてたすかりました。
早速やってみます。
本当にありがとうございました

【4932】Re:ExcelのデータをAccessのデータ...
質問  nemotake  - 05/4/20(水) 14:57 -

引用なし
パスワード
   小僧 さん
この記述はAccess2000ですか?
Access97を使用してるのですがコンパイルで
Dim xlsApp As New Excel.Applicationでユーザ定義型は定義されていませんになってしまいます。

小僧さんの記述をまねして作ってみたのですがうまくいきません。
何がおかしいのでしょうか?

Public Function T上期計画テーブル作成()
Dim xlsApp As New Excel.Application
Dim xlsWkb As New Excel.Workbook
Dim WkbName As String
Dim ShtName As String
Dim OTRs As Recordset
  
  Db.Execute "CREATE TABLE 上期計画テーブル(店舗コード STRING(3),諸勘定科目番号 STRING(5),目標区分 STRING(2)," _
      & "4月 DOUBLE,5月 DOUBLE,6月 DOUBLE,7月 DOUBLE,8月 DOUBLE,9月 DOUBLE)"
    
   Set OTRs = Db.OpenRecordset("上期計画テーブル", dbOpenDynaset)
   
   WkbName = "C:事業計画書.xls"
   ShtName = "預金計画表"
   Set xlsWkb = xlsApp.Workbooks.Open(WkbName)
       
     OTRs.AddNew
     OTRs!店舗コード = xlsWkb.Sheets(ShtName).Range("D5").Value
     OTRs.Update
   
   
  xlsWkb.Close: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing
  OTRs.Close
  
End Function

なにとぞ宜しくお願いします

【4934】Re:ExcelのデータをAccessのデータ...
回答  小僧  - 05/4/20(水) 16:08 -

引用なし
パスワード
   ▼nemotake さん:
こんにちは。

>小僧 さん
>この記述はAccess2000ですか?
>Access97を使用してるのですがコンパイルで
>Dim xlsApp As New Excel.Applicationでユーザ定義型は定義されていませんにな>ってしまいます。

これは参照設定の問題ですね。
VBAのコードを表示させた状態で、[ツール] → [参照設定]のところで
Microsoft Excel x.x Object Library にチェックして下さい。(Ac97だと8.0)
Microsoft DAO x.x Objedct Library にもお願いします。

>小僧さんの記述をまねして作ってみたのですがうまくいきません。
>何がおかしいのでしょうか?

気がついたところをちょっと修正しました。

Public Function T上期計画テーブル作成()
Dim xlsApp As New Excel.Application
Dim xlsWkb As New Excel.Workbook
Dim WkbName As String
Dim ShtName As String
Dim OTRs As Recordset

   CurrentDb.Execute _
    "CREATE TABLE 上期計画テーブル (店舗コード STRING(3), " _
    & "諸勘定科目番号 STRING(5),目標区分 STRING(2)," _
    & "4月 DOUBLE,5月 DOUBLE,6月 DOUBLE, " _
    & "7月 DOUBLE,8月 DOUBLE,9月 DOUBLE)"
  
   Set OTRs = CurrentDb.OpenRecordset("上期計画テーブル", dbOpenDynaset)
  
   WkbName = "C:\事業計画書.xls"
   ShtName = "預金計画表"
   Set xlsWkb = xlsApp.Workbooks.Open(WkbName)

On Error GoTo Errpoint
     OTRs.AddNew
     OTRs!店舗コード = xlsWkb.Sheets(ShtName).Range("D5").Value
     OTRs.Update
Errpoint:
  xlsWkb.Close: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing
  OTRs.Close
  
  If Err.Number <> 0 Then MsgBox "エラーが発生しました"
End Function

Access2002,Access97で動作確認しました。

このコードは前提として
1:上期計画テーブルが存在しない事
2:c:\事業計画書.xls が存在している事。
3:預金計画表シートが存在している事。

が必要になってきます。特に
  Set xlsWkb = xlsApp.Workbooks.Open(WkbName)

  xlsWkb.Close: Set xlsWkb = Nothing
  xlsApp.Quit: Set xlsApp = Nothing

の間でエラーが発生してしまうと、AccessがExcelを掴んだままになって
しまい動作が不安定になってしまいますのでエラーが発生した場合は
Excelを閉じる所まで飛ばすように作りました。
「エラーが発生しました」というメッセージボックスが発生した場合は
上記の間のエラーと考えてください。

【4935】Re:ExcelのデータをAccessのデータ...
お礼  nemotake  - 05/4/20(水) 17:49 -

引用なし
パスワード
   小僧 さん:
できました。ありがとうございました。
これで頭が沸騰しなくてすみました。
今日はゆっくり眠れそうです。本当にありがとうございました

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