前提・実現したいこと
別のエクセルにあるデータを開き、コピーして持ってくるコードを書いています。
下記のように書くとエラーも出ずに動きはするのですが、"AA9:AA13"のように複数を指定すると
AA9の値しか持ってきてくれません…
①複数のデータを持ってくる場合はどのようなコードにしたら良いのでしょうか?
②"AA9:AA13"の中にnilがあればそこはスキップし、値が入ってるもののみを入れることは可能なのでしょうか?
該当のソースコード
With Workbooks("管理表VBA").Worksheets("2019年10月") .Range("A" & MaxRow).Value = openBook.Worksheets(1).Range("E6").Value .Range("B" & MaxRow).Value = openBook.Worksheets(1).Range("AA9:AA13").Value End With
全文
Option Explicit Sub import_excel() '最終行を変数に取得 Dim MaxRow As Integer MaxRow = Worksheets("2019年10月").Cells(Rows.Count, 1).End(xlUp).Row + 2 Dim arrayPath As Variant arrayPath = Application.GetOpenFilename("ブック, *.xlsm", MultiSelect:=True) If IsArray(arrayPath) Then MsgBox "ちょっと時間かかるかも(´;ω;`)" '画面の描画を停止する Application.ScreenUpdating = False 'Forループ(iが1から配列の要素数まで) Dim i As Integer For i = 1 To UBound(arrayPath) '変数を用意し、ブックを開いて格納 Dim openBook As Workbook Set openBook = Workbooks.Open(arrayPath(i)) 'セルの結合を解除する Cells.Select Selection.UnMerge '必要項目をコピーしてくる 'テーマ ’A3からスタートし、 With Workbooks("管理表VBA").Worksheets("2019年10月") .Range("A" & MaxRow).Value = openBook.Worksheets(1).Range("E6").Value '取引先への支払い金額 'AA9~AA13、AA14は総額 '発注決定額を6行分B列に入れる 'nilがあればそこは入力しない '1~5のデータの総数が1であれば6列目は入れない .Range("B" & MaxRow).Value = openBook.Worksheets(1).Range("AA9").Value '取引先 'ブレーンの文字を6行分D列に入れる .Range("D" & MaxRow).Value = openBook.Worksheets(1).Range("S9:S13").Value Next 'nilがあればそこは入力しない '1~5のデータの総数が1であれば6列目は入れない '内制費 'D列の最後の行の横E列に内制費を入れる '見積もり総額 '担当営業 .Range("G" & MaxRow).Value = openBook.Worksheets(1).Range("B4").Value 'A列とG列はB列の最初と最後のセルに合わせて結合する End With 'エクセルファイルを保存せず閉じる Application.DisplayAlerts = False openBook.Close '全てのエクセルファイルに同処理をする MaxRow = MaxRow + 2 Next i '画面の描画を再開する Application.ScreenUpdating = True MsgBox "おわたよ(`・ω・´)" End If End Sub
ところどころコメントのみになっている箇所はこれからコードを書く予定の場所です…
ツールのバージョン
Excel 2016
追記
Excelには「マクロの記録」機能があります。こちらを使用してExcel上でコピー&ペーストを実行するとコピー&ペーストのコードが自動生成されるので参考になりますよ。(ご存じなければ試してみてください)
回答ありがとうございます!
マクロの記録便利ですよね、いつもお世話になっております。。
コピー&ペーストのコード自体は既に書いていて、動作も別に問題ないんですが、
複数選択した際に上手くいかないというのが悩みです。
マクロの記録しても複数選択は"AA9:AA13"という書き方で相違ないですもんね、、
元データと出力後のデータの例をマークダウンの表と実際の画像で提示してもらえませんか。
説明が曖昧なので、いろいろな解釈ができてしまいます。
hatena19さん、ご指摘ありがとうございます!
下でtatsu99さんがわかりやすい画像を貼ってくれたので、それをそのまま追記として記載しました!
以後、分かりやすい画像貼ること心掛けます!
回答3件
あなたの回答
tips
プレビュー