0

次の問題があります。既にいくつかのワークシートを含む Excel ファイルがあり、それをメイン ファイルと呼びましょう。サブディレクトリには、それぞれ 1 つのシートを含む 5 つの他の Excel ファイルがあります。ここで、Excel ファイルの内容をメイン ファイルにコピーする必要があります。メイン ファイルには、サブディレクトリ内のすべてのファイルのシートが必要です。

私はVBAが初めてなので、これは簡単ではありませんが、次のようになりました。

Sub Makro1()

Dim objWorkbook As Workbook
Dim mybook As Workbook
Set basebook = ThisWorkbook

Dim strPath As String
strPath = ThisWorkbook.Path + "\data"

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
objExcel.DisplayAlerts = False

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFso.GetFolder(strPath)

Dim ws As Worksheet

For Each objFile In objFolder.Files

If objFso.GetExtensionName(objFile.Path) = "xls" Then

Set objWorkbook = objExcel.Workbooks.Open(objFile.Path)
objWorkbook.Worksheets(1).Copy
Set ws = basebook.Sheets.Add
ws.Paste

objWorkbook.Close
Set objWorkbook = Nothing
Set ws = Nothing


End If

Next

objExcel.Quit

End Sub

したがって、メインファイルにシートが作成されますが、サブディレクトリ内のファイルの内容はこれらのシートに貼り付けられませんが、Ctrl + Cでコピーしたものは貼り付けられません。

解決策またはヒントをいただければ幸いです。

前もってありがとう
デビッド

4

1 に答える 1

0

ソース シートからコピー先シートにデータをコピーする必要があります。VBA プロジェクトのコード例を次に示します。

Dim wbDest As Workbook
Dim wbSource As Workbook
Dim shDest As Worksheet
Dim shSource As Worksheet

Set wbDest = Workbooks("Missing_Paper_Spreadsheet.xlsm")
Set wbSource = Workbooks("Missing_Paper_Assist.xls")

Set shDest = wbDest.Sheets("Weekly")
Set shSource = wbSource.Sheets("Main")

Dim rngNumUnits As Range

Set rngNumUnits = shSource.Range("A9:A50")

「shSource.Range()」と書かれている最後の行が見えますか? .Range() を利用して、ワークシートのセルにアクセスできます。やろうとしていることを実行するには、あるワークシートのセル範囲を変数に割り当て、それらの範囲値を別のワークシートのセルにコピーします。

于 2013-06-05T14:20:29.417 に答える