web-dev-qa-db-ja.com

ExcelスプレッドシートデータをVBAを含む別のExcelスプレッドシートにインポートする

VBAコードを含むExcelスプレッドシートを作成する必要があります。コードは、最初のワークシートのデータを読み取り、操作を実行します。

ユーザーは、データを含むがVBAコードを含まないスプレッドシートを受け取ります。データを含むスプレッドシートからVBAコードを含むスプレッドシートにデータを自動的にインポートできる必要があります。データを含むワークシートの列形式とデータ型は、データを含むスプレッドシートのワークシートと同じです。

理想的には、VBAコードを含むスプレッドシートを開き、ユーザーがデータを含むスプレッドシートに移動できるUIが表示され、[OK]をクリックすると、データがインポートされます。

これをどのように行いますか? ExcelスプレッドシートでVBAを使用して実行する必要があります。

どうもありがとう。

13
Anthony

これで開始できます:独自のExcelブックでVBAを使用し、ユーザーにデータファイルのファイル名を入力してもらい、その固定範囲をターゲットブック(マクロが有効になっているものと同じブックでもかまいません)にコピーするだけです、または3番目のワークブック)。これがどのように機能するかについての簡単なvbaの例です:

' Get customer workbook...
Dim customerBook As Workbook
Dim filter As String
Dim caption As String
Dim customerFilename As String
Dim customerWorkbook As Workbook
Dim targetWorkbook As Workbook

' make weak assumption that active workbook is the target
Set targetWorkbook = Application.ActiveWorkbook

' get the customer workbook
filter = "Text files (*.xlsx),*.xlsx"
caption = "Please Select an input file "
customerFilename = Application.GetOpenFilename(filter, , caption)

Set customerWorkbook = Application.Workbooks.Open(customerFilename)

' assume range is A1 - C10 in sheet1
' copy data from customer to target workbook
Dim targetSheet As Worksheet
Set targetSheet = targetWorkbook.Worksheets(1)
Dim sourceSheet As Worksheet
Set sourceSheet = customerWorkbook.Worksheets(1)

targetSheet.Range("A1", "C10").Value = sourceSheet.Range("A1", "C10").Value

' Close customer workbook
customerWorkbook.Close
26
jdh