• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセス2010 VBA 指定セルのインポート)

【初心者向け】VBAを使ってアクセス2010で指定セルのインポートする方法

このQ&Aのポイント
  • アクセス・エクセル2010を使用して指定セルのインポートを行いたい初心者の方へ。ダイアログを表示させ、取り込みファイル(.xls)を指定してインポートする方法や、指定したファイルと同じフォルダ内にあるファイルを全てインポートする方法、さらにフォームのテキストを使って範囲指定を行う方法などを詳しく解説しています。
  • アクセス・エクセル2010を使用して指定セルのインポートする方法を初心者の方に分かりやすく解説します。ダイアログを表示させ、取り込みファイル(.xls)を指定してインポートする手順や、同じフォルダ内にあるファイルを全てインポートする手順、さらにフォームのテキストを使って範囲指定を行う方法までを具体的に説明しています。
  • アクセス・エクセル2010を使い、指定セルのインポートを行いたい初心者の方への解説です。ダイアログを表示させ、取り込みファイル(.xls)を指定してインポートする方法や、同じフォルダ内にあるファイルを全てインポートする方法、さらにフォームのテキストを使って範囲指定を行う手順などについて詳しく説明しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.3

こんにちは なんか冗長で変なコードになっちゃいますけど、 Sub test_1()   Dim f As Object   Dim b As Object   Dim c As Object   Dim d As Object   Dim t As Variant   Dim e As Object   Dim p As String   Dim i As Long   Dim sSql As String   Dim フォームのテキスト As String      Set e = CreateObject("Excel.Application")   t = e.GetOpenFilename("Excel Files (*.xls*), *.xls*")   If t = False Then Exit Sub      フォームのテキスト = "K7:W78"      Set f = CreateObject("Scripting.FileSystemObject")   p = f.GetParentFolderName(t)   Set d = f.GetFolder(p)   Set b = d.Files   On Error Resume Next   sSql = "DROP TABLE テストテーブル "   CurrentProject.Connection.Execute CommandText:=sSql   sSql = "DROP TABLE 一時テーブル "   CurrentProject.Connection.Execute CommandText:=sSql   On Error GoTo 0   For Each c In b     If LCase(f.GetExtensionName(c)) Like "xls*" Then       If i = 0 Then         DoCmd.TransferSpreadsheet acImport, , "テストテーブル", c, True, フォームのテキスト         sSql = "ALTER TABLE テストテーブル ADD COLUMN ファイル名 VarChar(50);"         CurrentProject.Connection.Execute CommandText:=sSql         sSql = "UPDATE テストテーブル SET ファイル名='" & f.GetFileName(c) & "';"         CurrentProject.Connection.Execute CommandText:=sSql         i = i + 1       Else         On Error Resume Next         sSql = "DROP TABLE 一時テーブル "         CurrentProject.Connection.Execute CommandText:=sSql         On Error GoTo 0         DoCmd.TransferSpreadsheet acImport, , "一時テーブル", c, True, フォームのテキスト         sSql = "ALTER TABLE 一時テーブル ADD COLUMN ファイル名 VarChar(50);"         CurrentProject.Connection.Execute CommandText:=sSql         sSql = "UPDATE 一時テーブル SET ファイル名='" & f.GetFileName(c) & "';"         CurrentProject.Connection.Execute CommandText:=sSql         sSql = "INSERT INTO テストテーブル SELECT * FROM 一時テーブル"         CurrentProject.Connection.Execute CommandText:=sSql         i = i + 1       End If     End If   Next   On Error Resume Next   sSql = "DROP TABLE 一時テーブル "   CurrentProject.Connection.Execute CommandText:=sSql   On Error GoTo 0   e.Quit   Set e = Nothing End Sub

noname#228034
質問者

補足

ありがとうございます!ほぼイメージした動きでした。 ただ1点、変動するインポート範囲を設定するために、 フォームのテキストボックス(txt)を用いて範囲指定を変動できるようにしたいのですが そこのコーディングも教えていただけないでしょうか。 ここまで組んでいただいた上、ご面倒なお願いで申し訳ありませんが、 よろしくお願いします!

その他の回答 (3)

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.4

こんにちは フォームのテキスト = "K7:W78" の"K7:W78"の部分を frm.text1.textとかに変更するとかです。

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.2

こんにちは 「2.1で指定したファイルと同じフォルダ内にあるファイル(.xls)を全てインポート」 全てのファイルのデータを一つのテーブルに集約するのですか? それとも、一つのファイルに対して一つのテーブルを作成していくのですか?

noname#228034
質問者

補足

できれば、1つのテーブルでマージしたいです。 ただ、インポート基ファイル名などをフィールドで持てると良いのですが、可能でしょうか?

  • ushi2015
  • ベストアンサー率51% (241/468)
回答No.1

こんにちは 複数のExcelのデータを1つのテーブルに取り込むのですか? 取り込むテーブルのフィールド構成 取り込むExcelの実際のセル範囲の例 はどうなりますか?

noname#228034
質問者

補足

エクセルとしては、 7行目にフィールド名になるテキスト 今月は、K列~W列までを適用としています。 アクセス(テーブル)としては、 K列~(7行目)をフィールド名として K8~(今回は)W(の際下段)をフィールド値としたいです。 フィールド1(K列):項目名(にしたいフィールドなので)=テキスト フィールド2~13(L~W列):値が入るので、名称は仮置きでも構いません=倍精度浮動小数点型 です。 ※今月はW列まで(フィールド13)までが適用ですが、次月以降はX列~(フィールド14以降)も適用の可能性もあります。 今月のフォーム:テキスト値としては、「K7:W78(もしくはK8~W78)」を取り込み対象として設定したいです。 よろしくお願いします!