• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel ブック内の指定したデータのコピーマクロ)

Excel ブック内の指定したデータのコピーマクロ

このQ&Aのポイント
  • エクセルで自動登録で自動化をしていますが、限界があり今回こちらに書き込み。
  • マクロスタートでダイアログがでて指定した新しいブック内の指定したシートの指定したセルにあるデータをコピーしてテンプレートとしている空のブックにペーストするマクロを作りたい。
  • ネットで探しましたが、ダイアログでファイルを開くマクロやブックを開かないで中のデータを読み込むマクロは見つけられませんでした。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.4

> 参照するsansho.xlsのsheet111のE1,F1,G1から最後の行までの各データを > テンプレートのtempe.xlsのsheet888のA1,B1,C1から下へ個々にペーストしたいです。 参照するシートは選択したブックがwbにセットされますからコード上にsansho.xlsは出ません。 シート名やブック名は補足からコピペしています。半角全角などの違いがあればエラーになります。 Sub Test() Dim myFile As Variant Dim xls As New Excel.Application Dim wb As Workbook Dim LastRow As Long, i As Long ChDir "C:\test" myFile = Application.GetOpenFilename("Excel ファイル (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm") If VarType(myFile) = vbBoolean Then MsgBox "キャンセルされました" Else Set wb = xls.Workbooks.Open(myFile) For i = Columns("A").Column To Columns("C").Column LastRow = wb.Worksheets("sheet111").Cells(1, i + 4).End(xlDown).Row Workbooks("tempe.xls").Sheets("sheet888").Cells(1, i).Resize(LastRow, 1).Value = _ wb.Worksheets("sheet111").Cells(1, i + 4).Resize(LastRow, 1).Value Next wb.Close Set wb = Nothing Set xls = Nothing End If End Sub

timmytimmy
質問者

お礼

何度も何度も投稿感謝いたします! まだまだわからない事ありますが頑張って読み解いて活用させていただきます! 本当にありがとうございました!

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.3

> テンプレー.xlsmのsheet1のC1へペーストする--複数列ありま 複数列がどこを指すのか分からないのでF列をC列にコピーします。 Sub Test() Dim myFile As Variant Dim xls As New Excel.Application Dim wb As Workbook Dim LastRow As Long ChDir "C:\test" myFile = Application.GetOpenFilename("Excel ファイル (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm") If VarType(myFile) = vbBoolean Then MsgBox "キャンセルされました" Else Set wb = xls.Workbooks.Open(myFile) LastRow = wb.Worksheets("Sheet1").Range("F1").End(xlDown).Row Workbooks("テンプレート.xlsm").Sheets("Sheet1").Range("C1").Resize(LastRow, 1).Value = _ wb.Worksheets("Sheet1").Range("F1").Resize(LastRow, 1).Value wb.Close Set wb = Nothing Set xls = Nothing End If End Sub

timmytimmy
質問者

お礼

何度も何度も投稿感謝いたします! まだまだわからない事ありますが頑張って読み解いて活用させていただきます! 本当にありがとうございました!

timmytimmy
質問者

補足

色々ありがとうございます。 言葉足らずですいません。 参照するsansho.xlsのsheet111のE1,F1,G1から最後の行までの各データを テンプレートのtempe.xlsのsheet888のA1,B1,C1から下へ個々にペーストしたいです。 基本的にマクロ記録で記録させてちょっと手直しをする程度の知識しかないため頂いたコードがシンプル過ぎて(コーピー、ペーストが無いことなど)驚き感激すると同時にに解析に苦労しています(^_^;) でも楽しいです!。(わかればもっと楽しいでしょうが) お手すきのときで構いません。 今一度おねがいします。m(__)m

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

No1で時間がかかるようでしたら ExecuteExcel4Macroの方で Sub Test2() Dim myFile As Variant Dim strDir As String Dim strFile As String ChDir "C:\test" myFile = Application.GetOpenFilename("Excel ファイル (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm") If VarType(myFile) = vbBoolean Then MsgBox "キャンセルされました" Else strDir = Left(myFile, InStrRev(myFile, "\")) strFile = Mid(myFile, InStrRev(myFile, "\") + 1) Workbooks("テンプレート.xlsm").Sheets("Sheet1").Cells(2, 1) = ExecuteExcel4Macro("'" & strDir & "[" & strFile & "]Sheet1'!R1C1") End If End Sub

timmytimmy
質問者

お礼

何度も何度も投稿感謝いたします! まだまだわからない事ありますが頑張って読み解いて活用させていただきます! 本当にありがとうございました!

timmytimmy
質問者

補足

ありがとうございます! 帰ったら試してみます!

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

[ファイルを開く]ダイアログボックスを表示する(GetOpenFilenameメソッド) https://www.moug.net/tech/exvba/0060013.html ブックを開かずにセル値を取得(ExecuteExcel4Macro,Excel.Application) https://excel-ubara.com/excelvba5/EXCELVBA242.html を参考にして Sub Test() Dim myFile As Variant Dim strFile As String Dim xls As New Excel.Application Dim wb As Workbook ChDir "C:\test" myFile = Application.GetOpenFilename("Excel ファイル (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm") If VarType(myFile) = vbBoolean Then MsgBox "キャンセルされました" Else Set wb = xls.Workbooks.Open(myFile) Workbooks("テンプレート.xlsm").Sheets("Sheet1").Cells(2, 1) = wb.Worksheets("Sheet1").Range("A1") wb.Close Set wb = Nothing End If End Sub としたら開いている テンプレート.xlsmにデータが転記できますので試してみてください。 テンプレート.xlsmを開くコードは入ってないので適当なところに入れ込んでください。

timmytimmy
質問者

お礼

何度も何度も投稿感謝いたします! まだまだわからない事ありますが頑張って読み解いて活用させていただきます! 本当にありがとうございました!

timmytimmy
質問者

補足

お世話になります 昨日今日といろいろ試してみていますが、よくわからず( ノД`)シクシク…  自分で自動で登録した下記のマクロを教えていただいたマクロへ組み込みたいのですがどう入れていいのかわかりません。 Range("F1").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("Sheet1").Select "テンプレー.xlsmのsheet1のC1へペーストする--複数列あります) Range("C1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False よろしくお願いできますでしょうか?

関連するQ&A