ホームページ > データベース > mysql チュートリアル > ループを使用せずに Excel データを MS Access に効率的にエクスポートするにはどうすればよいですか?

ループを使用せずに Excel データを MS Access に効率的にエクスポートするにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-05 18:47:43
オリジナル
135 人が閲覧しました

How Can I Efficiently Export Excel Data to MS Access Without Using Loops?

Excel VBA を使用して、ループせずに MS Access テーブルにデータをエクスポートする

Excel ワークシートから MS Access テーブルにデータをエクスポートする場合、従来のアプローチではループを使用します。データの各行をテーブルに繰り返し挿入します。ただし、この方法は大規模なデータセットでは非効率となる可能性があります。パフォーマンスを大幅に向上させる単一の SQL INSERT ステートメントを使用する代替方法を次に示します。

Public Sub DoTrans()

  Set cn = CreateObject("ADODB.Connection")
  dbPath = Application.ActiveWorkbook.Path & "\FDData.mdb"
  dbWb = Application.ActiveWorkbook.FullName
  dbWs = Application.ActiveSheet.Name
  scn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath
  dsh = "[" & Application.ActiveSheet.Name & "$]"
  cn.Open scn

  ' Construct SQL INSERT statement to bulk insert data
  ssql = "INSERT INTO fdFolio ([fdName], [fdOne], [fdTwo]) "
  ssql = ssql & "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh

  ' Execute SQL INSERT statement to insert data in one go
  cn.Execute ssql

End Sub
ログイン後にコピー

このコード内:

  • ssql 変数は、次の SQL INSERT ステートメントを構築し、そこからすべてのデータを選択します。 Excel 範囲 dsh を取得し、それを Access の fdFolio テーブルに挿入します。
  • cn.Execute ssql 行は SQL INSERT ステートメントを実行し、すべてのデータを一度に挿入することでループの必要性を排除し、プロセスを大幅に高速化します。

特定の名前を持つフィールドの場合、 ssql ステートメントを変更して、INSERT 句に特定のフィールド名を含めることができます:

ssql = "INSERT INTO fdFolio (fdName, fdOne, fdTwo) "
ssql = ssql & "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh
ログイン後にコピー

以上がループを使用せずに Excel データを MS Access に効率的にエクスポートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート