- ベストアンサー
最終行に貼り付けるマクロ
個人の住所録ブックAがあります。 1行目 作成日 郵便番号 住所 名前 です。(これは常に1行です) この1行をコピーして、共有のブックBに追加して保存したいのです。 共有のブックBは、パスワード(****)があります。 そして、これまでのデータが入っています。 その最終行を検索して貼り付けるマクロを教えてください。 エクセル2003です。 よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
#2,4,5 onntao です 追記です 構文中のパスワードが正しいものとして WriteResPassword:="ぱすわーど" ↓ Password:="ぱすわーど" としてみてください
その他の回答 (7)
- papayuka
- ベストアンサー率45% (1388/3066)
> でも、同じエラーが出るのですが・・ > インデックスエラーです。 当然ですが、Workbooks("xxx") の "Book1" や "Book2" をご自分の環境に合わせなければエラーになります。 それ以外では A65536 まで行が使われているとエラーが起こります。
お礼
もちろん、ブック名・シート名は変えています。 ご協力、ありがとうございます。 とっても助かりました。
- Wendy02
- ベストアンサー率57% (3570/6232)
こういうことかな? パスワード等は、ご自身で入れてください。 '--------------------------------------- 'パスワード Const MYPW As String = "abc" Sub test() Dim Fname As String Dim myWb As Workbook '共有ブックパス:注意-必ず最後に『\』をいれてください。 Const myPath As String = "○○\●●●\" '共有ブック名 Fname = "B.xls" 'データソースブック Set myWb = Workbooks("A.xls") 'すでに開いている場合のメッセージを出さない Application.DisplayAlerts = False '画面のちらつきを止める Application.ScreenUpdating = False 'パスワード付ブックオープン With Workbooks.Open(myPath & Fname, , , , MYPW, MYPW") '貼り付け(作成日,郵便番号,住所,名前) .Worksheets("Sheet1").Range("A65536").End(xlUp).Offset(1).Resize(, 4).Value = _ myWb.Worksheets("Sheet1").Range("A1").Resize(, 4).Value '終了と保存 .Close True End With Application.ScreenUpdating = True Application.DisplayAlerts = True Set myWb = Nothing End Sub
お礼
ありがとうございます。 説明を入れてもらったんですね♪ 自分でVBAの勉強をする前に、みなさんに頼ってしまってごめんなさい。
- onntao
- ベストアンサー率32% (108/332)
#2,4 onntao です >共有のブックBは、パスワード(****)があります。 のパスワードとはどのような手順で設定したものでしょうか? WriteResPassword:="ぱすわーど" の部分はファイル<名前をつけて保存 の中のツール(L)<全般オプション<書き込みパスワード にて設定したものに対するものです。 また、"ぱすわーど"はmarilinさんが実際にお使いのものに修正されていますよね (^-^)/
- onntao
- ベストアンサー率32% (108/332)
#2 onntao です Sub Test() Workbooks.Open Filename:="C:\Documents and Settings\○○○\○○○\ブックB.xls", WriteResPassword:="ぱすわーど" Workbooks("ブックA.xls").Worksheets("入力").Rows(1).Copy Workbooks("ブックB.xls").Worksheets("データベース"). _ Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues Workbooks("ブックB.xls").Close SaveChanges:=True Application.CutCopyMode = False End Sub "入力"、"データベース"などのシート名をmarilinさんが実際にお使いのものにしてください
お礼
ありがとうございます。 今、自宅でテストしてみたら、うまくいきそうです。 月曜日に会社でやってみます。 ただ、ブックBのパスワードを入れるようにメッセージが出ますが、これは仕方ないのですか?
- papayuka
- ベストアンサー率45% (1388/3066)
#1です。 > コピーして貼り付けるときに、「値」を貼り付ける場合、どうなりますか? Sub Test1() Workbooks("Book1").ActiveSheet.Rows(1).Copy Workbooks("Book2").ActiveSheet.Range("A65536").End(xlUp). _ Offset(1, 0).EntireRow.PasteSpecial xlPasteValues Application.CutCopyMode = False End Sub
お礼
ありがとうございました。 でも、同じエラーが出るのですが・・ インデックスエラーです。
- onntao
- ベストアンサー率32% (108/332)
Sub Test() Workbooks.Open Filename:="C:\Documents and Settings\○○○\○○○\ブックB.xls", WriteResPassword:="ぱすわーど" Workbooks("ブックA.xls").Worksheets("sheet1").Rows(1).Copy Destination:= _ Workbooks("ブックB.xls").Worksheets("sheet1"). _ Range("A65536").End(xlUp).Offset(1, 0).EntireRow Workbooks("ブックB.xls").Close SaveChanges:=True End Sub ご希望にそっていなかったらごめんなさい
お礼
早速のご回答、ありがとうございました。 この書き込みをしたら、実行時エラー9と出ました。 インデックスが有効範囲にありません。 Range("A65536")・・・の行をさしています。 どうしてでしょうか? それからコピーして貼り付けるのを「値」にしたいのですが・・ よろしくお願いします。
- papayuka
- ベストアンサー率45% (1388/3066)
ブックA.xls と ブックB.xls は共に開いていて、それぞれのシートがアクティブになっているとして、ブックAの1行目をブックBのA列最終行+1に貼りつけるなら Sub Test() Workbooks("ブックA.xls").ActiveSheet.Rows(1).Copy Destination:= _ Workbooks("ブックB.xls").ActiveSheet. _ Range("A65536").End(xlUp).Offset(1, 0).EntireRow End Sub
お礼
早速のご回答、ありがとうございました。 コピーして貼り付けるときに、「値」を貼り付ける場合、どうなりますか?
お礼
ありがとうございました!! 無事パスワードもクリアしました。 とっても助かりました。 またよろしくお願いします♪