クローズドブックのいくつかの列をアクティブブックにコピーしたいと思います。 私の列が分離されているので、私はそれをCollection変数を使ってループで行いたいと思います。vba - コレクションを繰り返し処理する
ここに私のコード(EDIT)
Option Explicit
Sub CopyDataFromClosedWbk()
'copy data from closed workbook to active workbook
Dim colonne As Collection
Dim col As Variant
Dim xlApp As Application
Dim xlBook As Workbook
Dim Sh As Object
Set colonne = New Collection
colonne.Add "A:B", "A1"
colonne.Add "E:F", "G1"
colonne.Add "N", "I1"
colonne.Add "P", "F1"
Set xlApp = CreateObject("Excel.Application")
'Path source workbook
Set xlBook = xlApp.Workbooks.Open("C:\Users\Amira AYADI\Desktop\Stage\Automatisation\Base Case_BDD CAPACITAIRE_ENVOYE_V2 2017_2023_24042017.xlsx")
xlBook.Sheets("DATA").Range("A1:CJ374810").AutoFilter
xlBook.Sheets("DATA").Range("BD1").Select
xlBook.Sheets("DATA").Range("$A$1:$CJ$374810").AutoFilter Field:=56, Criteria1:="CMR"
For Each col In colonne
xlBook.Sheets("DATA").Range(col).Copy
xlApp.DisplayAlerts = False
Debug.Print col
Set xlBook = Nothing
Set xlApp = Nothing
Set xlBook = ActiveWorkbook
Set Sh = xlBook.Sheets("Calcul")
'Sh.Activate
Range(colonne.Item(col)).Select
Sh.paste
Next col
xlBook.Close
xlApp.Quit
End Sub
しかし、それは動作しませんし、いくつかのミスがあります。
まず
Range(colonne.Item(col)).Select
は "COL" whith動作しませんが、私はインデックスと思います。では、Keyの値をどのように反復処理できますか?
第二に、私は(試みのために)そのように1 COLをremplace:
Range(colonne.Item(1)).Select
私は91のエラーがあります:オブジェクト変数またはブロック設定されていないとします。
これに加えて、ワークブック「source.xlsx」が変更可能な状態であることを示すポップアップウィンドウがあります。どうすればこのことができますか?
ご意見はありますか?
'.Select'を使用しないでください。また、すべてのセルの後にワークブームを開いたり閉じたりしています。効率的ではありません。 – UGP
私は注意を払わなかった、ありがとう。 私はそれをどのように.selectを使用しないのですか? Range(colonne.Item(col))を試しましたが貼り付けができませんでした。 – blabla
ここでは、Collectioningの代わりにScripting.Dictionaryを使用する必要がありますので、キーと値の両方にアクセスできます。 https://stackoverflow.com/questions/5702362/vba-collection-list-of-keys –