アクセスのデータをエクセルに移動できますか?方法があればぜひ教えてください!よろしくお願いします。

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

A 回答 (3件)

'AccessVBAで書くとしたら・・・↓(97/2000で動きます。

XPは知りません!)

Dim RetVal As String 'Shellの変数宣言
Dim vPath As Variant '引数(Path)の変数宣言

'まずAccessのテーブル「TestData」をCドライブの下にあるTest.xlsにインポート
DoCmd.TransferSpreadsheet acExport, , "TestData", "c:\Test.xls"

vPath = "c:\Test.xls"
RetVal = Shell("""" & "C:\Program Files\Microsoft Office97\Office\EXCEL.EXE" & """" _
& """" & vPath & """", 1)
'Accessを閉じる。
Application.Quit

'以上でAccessのテーブルをExcelにインポートしてExcel起動までです。
'適当なフォームにコンボボックス(ボタン)を1つ作って「クリック時」のクラス
'モジュールにカット&ペーストしてみてください。
'注意!「C:\Progr~1\Micros~1\Office\EXCEL.EXE」はインストールした端末
'により異なりますので、デスクトップ上にAccessのショートカットがあれば
'プロパティを開いて「リンク先を探す」等で探してください。もしくはWindows
'の検索で「*Access*」等で探してください。

'Excel側のMAXレコードを超えなければErr無くできるはずです。
'わからなかったらまた質問してください。(暇な時に返事します。)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。とても細かく説明していただき、とても一般人とは思えません。とてもそんなに知識があるとは、うらやましいです。

お礼日時:2002/02/20 22:38

少量でしたら、コピーして貼付けられます。


大量でしたら、クエリとマクロで可能です。
マクロには、出力、エクセル形式で
という指定ができますので
クエリで希望のデータ、あるい全部を
指定してマクロに設定すれば
自動で出力します。
ただ、エクセルには、データ数に制限があります。
MAX6万件ほど。
出力時には、これを超えないような
条件を設定して、必要なら分割して出力します。

エクセルからも条件が整えばアクセスのデータを
引き出すことが可能です。

何かありましたら、質問ください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。エクセルとアクセスが連携すると便利ですね。

お礼日時:2002/02/20 22:34

Accessの「ファイル」ー「エクスポート」でファイルの種類をExcelにしてテーブルを保存すれば良いと思います。

    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございました。一度試してみます!

お礼日時:2002/02/20 22:30

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

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

Qエクセル プルダウンの作り方

お世話になります。
エクセルでプルダウンの作り方を教えていただけませんでしょうか?
住所を▼のボタンでクリックしたら【北海道,青森,秋田,岩手・・・】などの選択ができるようにしたいのです。
宜しくお願いします。

Aベストアンサー

メニューから「データ」、「入力規則」、「設定」で「入力値の種類」を「リスト」を選択します。
そうすると「元の値」という表示がでますので、そこで前もって作っておいたリストの範囲を指定します。
多くないのでしたら、そのままそこにカンマで区切って入力しても出来ます。

Qアクセス⇔エクセル データの移動

エクセルでは横並び、アクセスでは縦並びで持っているデータがあるのですが、
エクセルからアクセスにエクスポートする場合は追加クエリで済むのですが、
アクセスの縦並びのデータをエクセル用に横並びにしてエクスポートするにはどの様にすればよいでしょうか?
IDごとに横並びにしたいのですが、分かる方お願いします。

Aベストアンサー

Accessは未体験に近いため、ExcelからDBにDAO(ADOが未体験)で接続して、
シートに書き出す方法を取ってみました。

DBのパス名・DB名及びテーブル名はこちらのテスト環境の
ままです。
同一IDの最大設定は20になってます。

Sub test()
    '「参照設定」で [Microsoft DAO 3.x Object Library] を参照します。
    Dim mdb As DAO.Database
    Dim mrs As DAO.Recordset
    Dim Dic As Object
    Dim i As Long, j As Long, cou As Long
    Dim st As String
    Dim v, vv
    
    Application.ScreenUpdating = False

    Set Dic = CreateObject("Scripting.Dictionary")
    Set mdb = OpenDatabase("R:\db1.mdb")
    Set mrs = mdb.OpenRecordset("aaa", dbOpenTable)
    
    If mrs.EOF Then
        MsgBox ("データはありません")
        Exit Sub
    End If

    ReDim v(1 To 20, 1 To mrs.RecordCount)
    ReDim vv(1 To mrs.RecordCount)
    
    With Worksheets("Sheet1")
         .Cells.ClearContents
         mrs.MoveFirst
         For cou = 1 To mrs.RecordCount
             st = Trim(mrs.Fields(0))
             If Not Dic.exists(st) Then
                j = j + 1: vv(j) = st
                v(1, j) = mrs.Fields(1)
                Dic(st) = Array(1, j)
             Else
                i = Dic(st)(0) + 1
                v(i, Dic(st)(1)) = mrs.Fields(1)
                Dic(st) = Array(i, j)
             End If
             mrs.MoveNext
         Next
         ReDim Preserve v(1 To 20, 1 To Dic.Count)
         ReDim Preserve vv(1 To Dic.Count)
         .Range("A2").Resize(Dic.Count, 1).Value = Application.Transpose(vv)
         .Range("B2").Resize(Dic.Count, 20).Value = Application.Transpose(v)
         .Range("A1").Value = "ID"
         With .Range("A1").Offset(, 1).Resize(, .Range("A1").CurrentRegion.Columns.Count - 1)
              .Value = "=""名前 "" & column()-1"
              .Value = .Value
         End With
         mrs.Close
         mdb.Close
         Set Dic = Nothing
    End With
    Application.ScreenUpdating = True
End Sub
# 参照設定に注意願います。
  Excel及びAccessはXP、DBはAccess2000形式でテストしました。
ご参考になるかどうか・・・

Accessは未体験に近いため、ExcelからDBにDAO(ADOが未体験)で接続して、
シートに書き出す方法を取ってみました。

DBのパス名・DB名及びテーブル名はこちらのテスト環境の
ままです。
同一IDの最大設定は20になってます。

Sub test()
    '「参照設定」で [Microsoft DAO 3.x Object Library] を参照します。
    Dim mdb As DAO.Database
    Dim mrs As DAO.Recordset
    Dim Dic As Object
    Dim i As Long, j As Long, cou A...続きを読む

Qエクセルでプルダウンメニューの作り方

  エクセルの画面で、よく三角形を逆さまにした形をクリックするといくつかメニューが出てき、どれかを選べるようになっていますが、その作り方を教えてください。
 会社で人事を担当していますが、三角形(プルダウンボタン)をクリックすると社員氏名一覧が表示され、そこから選択できるようにしたいのです。
 しばらく自力でいろいろやってみましたが、さっぱり見当がつかず、どうやればいいのか分かりませんでした。よろしくお願いします。

Aベストアンサー

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならないでしょうか?
Excel2007の場合は↓のURLが参考になるかもしれません。

http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-ny_kis2.html

尚、同一Sheetに「名簿表」を作成する場合は名前定義する必要はなくて
「元の値」の右側の四角をクリックし、リスト表示したいセルをそのまま範囲指定すればOKです。

以上、お役に立てば良いのですが・・・m(_ _)m

こんばんは!
当方使用のExcel2003での一例です!

↓の画像のようにSheet2に名簿表を作成しておきます。
画像ではSheet2のA2セル以降を範囲指定 → 名前ボックスに仮に「名簿」と入力しOK
これで範囲指定したセルが「名簿」と名前定義されましたので、

Sheet1のリスト表示させたいセルを範囲指定 → メニュー → データ → 入力規則
→ リスト → 「元の値」の欄に
=名簿
としてOK

これでSheet1のセルをアクティブにすると右側に下向き▼が表示されますので、そこをクリック!
これで希望に近い形にならない...続きを読む

Qエクセルのデータをアクセスにインポートしたいのですが、フィールド名として使用できないデータがあるようで・・

 「先頭行に、Acsessのフィールド名として使用できないデータが含まれています。」とエラーが出ますが、どんな原因が考えられますか?
 同じ項目(先頭行)で別のエクセルのデータは読み込めます。見た目、まったく同じ文言(先頭項目)なのですが。

Aベストアンサー

ということは・・逆も確認されましたね。(インポートできる方のExcelデータを削除して、インポートできない方のデータを貼り付ける)
では、Excelのデータを範囲指定をして、コピーをしてみてください。
そして、データベースウインドウをクリックして(もちろんオブジェクトはテーブルで)貼り付けのボタンをクリック、もしくはCTRL+Vで貼り付けてみてください。

Qエクセル(Excel) 納品書の作り方【画像修正版

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が見にくかったのでシート<CENTER></CENTER>だけにしました。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルでコピー!
そのまま最後の24行目までコピーしておきます。

F4セルには
=IF(COUNTBLANK(B4:E4),"",D4*E4)
という数式を入れ、F24までオートフィルでコピー!

これでB列に商品番号を入力すればSheet2のデータが反映され、
E列に数量を入力でF列に金額が表示されると思います。

最後に合計金額のF26セルは
=IF(COUNT(F4:F24),SUM(F4:F24),"")
手数料のF27セルは
=IF(F26="","",F26*0.2)

これで何とか形にならないでしょうか?

※ 振込金額の欄は不明ですので手を付けていません。

参考になりますかね?m(_ _)m

こんばんは!
前回投稿した者です。

当方もかなり古い(人間も古い!なぁ~んちゃって!)Excel2003を使用しています。
↓の画像のようにSheet2にデータを作成しておきます。

#N/A というエラーは、「検索値」がない!ということですので
お示しの画像のB列にSheet2のA列にないデータを入力するとそういったエラーが表示されます。

画像のセル配置ですと
C4セルに
=IF($B4="","",VLOOKUP($B4,Sheet2!$A:$C,COLUMN(B1),0))
(「$」マークの位置に気を付けてください)
という数式を入れD4セルまでオートフィルで...続きを読む

Qアクセスのデータベース内のデータをエクセルでみれるように・・・

以前にも同様の質問があったやもしれないのですが、見つける事が出来ず・・・。
同じ事聞いていましたらごめんなさい(TcT)

アクセスのテーブルにあるデータベース(行には管理番号・氏名・住所・電話番号等の情報)を
エクセルで見たいのですが、データベースの情報が50万件程あり、エクセルにコピー等の方法ではデータが多すぎて移行出来ません。
そこで質問なんですが、
アクセスデータベースの管理番号(10桁位の数)をエクセルのセルに管理番号を入力すると、
入力した管理番号の行の情報のみを表示出来るような方法がありますか?
宜しくお願い致します。

Aベストアンサー

こんにちは。

VBAでADOを使って組めば、後々の取り扱いが簡単ですが、Excel自体にVBAをなくても取り出せるようになっています。

メニューのデータ-外部データの取り込み-新しいデータベース・クエリを使います。

データソースの選択で、データベースを「MS Access Database」を選択-OK
Access のmdb ファイルを選び-……最後に Microsoft Query でクエリの編集を行うようにします。Query の抽出条件テーブルで、フィールド名を選択したら、抽出条件で、[パラメータ1]などとして、Query を閉じます。

そうすれば、出力場所と同時に、パラメータの入れる場所を聞いてきますので、そこで指定すれば、入力すればExcel上に出てきます。

気をつけなくてはならないのは、パラメータをセルに入れるときに、Access のキーワードとは若干違いますので、MS-Query のヘルプなどを参照してください。

Qエクセル(Excel) 納品書の作り方【改めて】

昨日http://oshiete.goo.ne.jp/qa/7348426.htmlで質問させていただき、詳しくご回答いただき少し進んだのですが、状況が変わったので改めて質問させていただきます。

■エクセル(Excel)で納品書の作成をしています。
シート1に納品書、シート2に商品マスタ(一覧)を作っていて、シート2の一覧を反映させて
納品書に番号を打ち込むだけで、商品名・単価までが出るシステムを作りたいのですが、
昨日のご回答の中の「VLOOKUP」?を入れて、自分なりにマス目の数字を変えてやってみたのですが
反映されずN/?のようなエラーになってしまいます。

※画像が貼り付けてあります。商品名は1番以外伏せさせていただいています。
くっつけてありますが、左側がシート1・右側がシート2です。

1、上記のように、シート2との関連付けの係数を、写真の場合の数字で教えてください。

2、合計と、合計から20%を引いた数値を割り出す関数も、写真の数字で御願いします。

宜しくご教授お願い致します。

Aベストアンサー

画像がいまいちよく見えないのですが、納品書の項目は左から、No、商品番号、商品名、単価、数量、金額でいいのでしょうか(名前は多少違っていても意味があっていればもんだいないです)

でしたら、
C1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,2,FALSE))
D1セルに=IF(ISBLANK(B2),"",VLOOKUP(B2,Sheet2!$A$2:$C$200,3,FALSE))
E1セルは空白で
F1セルに=IF(D2="","",D2*E2)
といれて、C1からF1までをコピーしてその下の行にタテに貼り付ければ出来ますよ。
おそらくエラーが出たのは、コピーしたときにVLOOKUP関数の最初のセルの指定がずれてしまっているのでは無いかと思いますよ。     

Qエクセルやアクセスのデータ保存。

エクセルやアクセスでデータを印刷する場合、内容量によっては複数ページに及んでしまうケースが起こります。

私はエクセルやアクセスのデータを、用途によりJPG形式やPDF形式で出力して業務に使用しているのですが、複数ページに渡る場合は「内容を1ページごとにファイルを分けて保存できれば」と思う時があります。

こういったことは可能でしょうか。
情報をお持ちの方、お知恵を拝借できると幸いです。

Aベストアンサー

PDFでしたら、そういうソフトがあるようです。

(SepPDF)
http://www.forest.impress.co.jp/lib/sys/file/fileseprat/seppdf.html

Qエクセル2007でプルダウンで選んだものに反応

Excel2007でプルダウンで選んだものに反応して隣のセルが自動入力される方法(エクセル2007)
A1をプルダウンで「猫」「犬」から選べるようにし、「猫」を選んだ場合B1に自動に「111」が、「犬」を選んだ場合B1に自動に「222」と入力されるようにしたいです。
ご教授の程、宜しくお願いします。

Aベストアンサー

VLOOKUP関数での方法です。
(1)別シートに入力文字列と対応コード表を作成。(仮にSheet2のA:B列範囲で順不同)
(2)B1に=IF(COUNTIF(Sheet2!A:A,A1),VLOOKUP(A1,Sheet2!A:B,2FALSE),"")を設定
   入力文字列が存在しない場合は空白としています。

Qエクセル側からアクセスへデータ転送

エクセル側からアクセスにデータ転送する時に

Sub Data_Add()
Dim db As New ADODB.Connection
Dim Rs As New ADODB.Recordset

db.Open _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Users\Owner\Desktop\1.mdb;"
アクセス2003にデータを転送する場合はこれでうまくいきましたが、
アクセス2007にデータを転送しようと、
\1.accdb;"とすると、データベースの形式を認識できません。となってしまいます。
どうしたらいいでしょうか?
だれか教えて頂けませんか?

Aベストアンサー

プロバイダーでOLEDBの゛設定もした上で
AS.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=C:\Users\Owner\Desktop\1.accdb"


人気Q&Aランキング

おすすめ情報