- 締切済み
エクセル2000 外部データの取り込み
お世話になります。 これまで、エクセル2003を使用してアクセスのデータを「データ→外部データの取り込み」で取り込んでいました。 今回使用するエクセルが2000になったのですが、2000には「外部データの取り込み」がありません。 「保存したクエリの実行」では、基となるアクセスのデータを選択できません。 「テキストファイルのインポート」では、基となるアクセスのデータを選択できるのですが、2003とは手順が違う上、文字化けになってしまいました。 過去の質問も検索しましたが、解決できませんでした。 エクセル2000でも、2003のようにアクセスのデータを取り込めるのでしょうか? また、取り込めるとしたら、どのような手順を踏めばよろしいのでしょうか? ご回答のほど、よろしくお願いいたします。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
strColData = CutStr(strDatas(I) & "eof", ";", J) If strXolData <> "eof" Then cells(R+I,・・・・ Else Exit Do End If ヌルデータ対策バージョン ※犬の散歩中にヌルデータ対策の不備に気付きましたので・・・。 ※書きなぐっての回答は、あくまでも、そういう手段もあるのか程度が一番です。 ※なお、VBA コードのレベルは初歩の初歩です。 ※プログラマではない還暦目前の服飾デザイナが趣味で書いたもの。 ※しかし、知らなきゃ判らないのがVBA。それだけのこと。 ※さて、2000でのデータのツールでの取り込みも知ってしまえば何でもないこと。 ※僅か1行のレコードを取り込むという一連の手続きに挑戦されたらどうですか? ※その初手のハードルを跳び越えりゃ、後はスイスイかと。
- mitarashi
- ベストアンサー率59% (574/965)
#5です。 ご質問を読み直すと、2000にも類似のメニューはあるけれど、機能が2003と違っていて不満足という事でしょうか?2003は使った事はないけれど、WEBクエリなどはかなり機能が向上していると聞いています。 Excelからmdbへの接続は、参考URLをご覧ください。
- mitarashi
- ベストアンサー率59% (574/965)
エクセル2000にもデータ/外部データの取り込みメニューは存在します。お手元の2000に、その機能がインストールされていないのでは? ちなみに、外部データの取り込みメニューの内容は、 保存したクエリの実行 新しいWebクエリ 新しいデータベースクエリ テキストファイルのインポート クエリの編集 データ範囲プロパティ といったところです。
バグと思ったのは勘違い! 取得するレコードが整数の範囲内という制限があるだけでした!
お礼
ご回答、ありがとうございます。 ただ、残念なことに理解できませんでした…。 アドバイス頂いた内容が理解できれば、解決できるのでしょうが…。 本当に、ありがとうございました。
Public Function ImportData(ByVal strQuerySQL As String, ByVal R As Long, ByVal C As Long) As String Dim isOK As Balloon Dim I As Long Dim J As Long Dim N As Long チト、バグが・・・。
エクセルは一度も実際には操作したことがない門外漢ですが・・・。 「データ→外部データの取り込み」を、チト、試してみました。 要は、「この機能を再現したい」ということでしょうか? Private Sub CommandButton1_Click() ImportData "SELECT * FROM 各種設定", 1, 1 End Sub 今、シートにコマンドボタンを配置して以上のコードを書いてテストしてみました。 1行目の1列目より、SQL文に合致するデータを読み込んで表示しました。 ImportData関数は、Microsoft Active Data Object 2,8 Library を使用しています。 ※今、書きなぐってテストは僅か1回。 ※更なるテストは質問者で行って下さい。 ※なお、訳が判らなきゃー、利用されない方がいいです。 Option Explicit Public Const conConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Test\Test.mdb" Public Function DBSelect(ByVal strQuerySQL As String, _ Optional ByVal strSeparator1 As String = ";", _ Optional ByVal strSeparator2 As String = "") As String On Error GoTo Err_DBSelect Dim I As Integer Dim J As Integer Dim R As Integer Dim C As Integer Dim M As Integer Dim N As Integer Dim rst As ADODB.Recordset Dim fld As ADODB.Field Dim Datas As String Set rst = New ADODB.Recordset ' ================= ' Begin With: rst ' ----------------- With rst .Open strQuerySQL, _ conConnection, _ adOpenStatic, _ adLockReadOnly If Not .BOF Then M = .RecordCount - 1 N = .Fields.Count - 1 .MoveFirst For C = 0 To N Datas = Datas & .Fields(C).Name & strSeparator1 Next C If Len(strSeparator2) Then Datas = Datas & strSeparator2 End If For R = 0 To M For C = 0 To N Datas = Datas & .Fields(C) & strSeparator1 Next C If Len(strSeparator2) Then Datas = Datas & strSeparator2 End If .MoveNext Next R End If End With ' --------------- ' End With: rst ' =============== Exit_DBSelect: DBSelect = Datas Exit Function Err_DBSelect: MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelect)" & Chr$(13) & Chr$(13) & _ "・Err.Description=" & Err.Description & Chr$(13) & _ "・SQL Text=" & strQuerySQL, _ vbExclamation, " 関数エラーメッセージ" Resume Exit_DBSelect End Function Public Function ImportData(ByVal strQuerySQL As String, ByVal R As Long, ByVal C As Long) As String Dim isOK As Balloon Dim I As Integer Dim J As Integer Dim N As Integer Dim strDataAll As String Dim strDatas() As String Dim strColData As String isOK = True strDataAll = DBSelect(strQuerySQL, ";", "|") strDatas() = Split(strDataAll, "|") N = UBound(strDatas()) - 1 If N > 0 Then For I = 0 To N J = 0 Do J = J + 1 strColData = CutStr(strDatas(I), ";", J) If strColData <> "" Then Cells(R + I, C + J - 1) = strColData Else Exit Do End If Loop Until 0 Next I Else isOK = False End If ImportData = isOK End Function Public Function CutStr(ByVal TEXT As String, _ ByVal Separator As String, _ ByVal N As Integer) As String Dim strDatas() As String strDatas = Split("" & Separator & TEXT, Separator, , 0) CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function
- pbforce
- ベストアンサー率22% (379/1719)
アクセスで必要なテーブルかクエリをCSV形式でエクスポートし、そのCSVファイルをエクセルで開く、コピー&貼り付けるなどはめんどくさいでしょうね?
お礼
アドバイス、ありがとうございます。 アドバイス頂いた手順を試してみます。 本当に、ありがとうございました。
お礼
アドバイス、ありがとうございます。 確かに、エクセル2000にも外部データ取り込みメニューはあるのですが、2003のように簡単にできない上、「保存したクエリの実行」と「テキストファイルのインポート」はアクセスデータの取り込みに失敗してしまいました。 不満足ではなく、使いこなせておりません…。 参考URLのご紹介もありがとうございました。 勉強させていただきます。