プロが教えるわが家の防犯対策術!

下記VBAの作成についてご教授いただけないでしょうか。

①:文章管理簿ブック
②:文書作成ブック

・①のA列には,発行番号,B列以降には発行先の情報を記載

・②で文章を作成するときに,①の最終行を取得し,発行番号を取得

・②のシート内にある発行先の情報を①の最終行のB列以降にコピー

・①を上書き保存して閉じる

※作業時に開くブックは②のみのイメージです。
 他のブックの最終行の取得,コピーの部分で苦戦しています。

A 回答 (2件)

こんにちは


>他のブックの最終行の取得,コピーの部分で苦戦しています。

ヒントになれば良いのですが

Dim Sht1 As Workbook
Dim Sht2 As Workbook
Dim fPath As String
fPath = ThisWorkbook.Path '文書作成ブックと同じパス
Set Sht2 = ActiveWorkbook '文書作成ブック (からVBAを実行)
Set Sht1 = WorkbookOpen(fPath & "\文章管理簿ブック.xlsx")
'シートが不明の為インデックス1のシートが対象
・①のA列には,発行番号,B列以降には発行先の情報を記載
・②で文章を作成するときに,①の最終行を取得し,発行番号を取得
Dim lastRow As Long
lastRow = Sht1.Worksheets(1).Cells(Rows.Count, "A").End(xlUp).Row
'①の最終行を取得し・・不要?
Dim num As Variant '文字入りかもでVariant
num = Sht1.Worksheets(1).Cells(Rows.Count, "A").End(xlUp).Value

・②のシート内にある発行先の情報を①の最終行のB列以降にコピー
Sht2.Worksheets(1).Range("??").Copy Sht1.Worksheets(1).Cells(Rows.Count, "B").End(xlUp).Offset(1)
・①を上書き保存して閉じる
Sht1.Close SaveChanges:=True
    • good
    • 2

こんにちは



>他のブックの最終行の取得,コピーの部分で苦戦しています。
同一ブック内なら他シート等の操作はできるものと仮定します。

他ブックを操作する場合は、そのブックが開いていることが条件になりますので、最初に当該ブックを開く(処理が終われば閉じる)ことが必要になります。
WorkBooks.Open メソッドでブックを開けます
https://docs.microsoft.com/ja-jp/office/vba/api/ …

この開いたworkbookオブジェクトを変数 wb とするなら、あとはこのブックに対しての処理を行えばよいだけで、要領は同じです。
 wb.Worksheets("hoge").Range("A1").Value = "hogehoge"
とか。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!