アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在作業中のブックAの、sheet1のB列に空の1列挿入し、
別ブックBを開き、A列をコピー
ブックAのさきほど1列挿入した列に貼り付けたいです。
貼り付け後、ブックBは閉じる。
Columns(”B").Insert 'ブックAのB列に列を挿入する
With Workbooks.Open("ブックB.xlsx") 'ブックBを開きブックBのシート1B列をコピー
.Worksheets("sheet1").columns("B").Copy 'このブックのブックAシートのB4へ値貼り付け
ThisWorkbook.Worksheets("sheet1").Range("B4").PasteSpecial _
xlPasteValuesAndNumberFormats
'コピー中状態を解除
Application.CutCopyMode = false
'ブックを保存せずに閉じる
.Close False
End With

検索してサンプルを見つけてやってみるのですが、うまくいきません。
加筆添削していただけませんでしょうか。

A 回答 (4件)

No.3 のお礼について



「ブックA.xlsx」と書かれていますので「ブックA」にマクロのコードが書かれていないと思われます。(マクロが有るなら「ブックA.xlsm」なるはずなので…)マクロのコードがかかれているブックはまた別なものでしょうか?
ならば「ブックA」のフルパスはどうなっていますか?
    • good
    • 0
この回答へのお礼

エクセルでCSVファイル(ブックA)をダブルクリックで開いて、開発タブのVisualbasic、標準モジュールの所で少しずつ追加していっているのですが、csv形式であることを私が把握していなくてエクセルで開いたからxlsxだと思い込んで質問に記載してしまっておりました、申し訳ありませんでした>< csvを指定したことによりコピーまで順調に進めることが出来ました。補足つけていただきましてありがとうございました!!

お礼日時:2018/02/05 13:49

No.1 のお礼について



ドライブやフォルダーが違うのならば、もちろん「Workbooks.Open」の方にはフルパスが必要ですが、「Windows("ブックB.xlsx").Close」の方は変更してはいけません。
結果以下のようになります。
--------------------------------------------------------------------------------
Sub Macro2()
Columns("B:B").Insert Shift:=xlToRight
Workbooks.Open Filename:="I:\ブックB.xlsx"
Columns("A:A").Copy
ThisWorkbook.Activate
Columns("B:B").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Windows("ブックB.xlsx").Close
End Sub
--------------------------------------------------------------------------------
    • good
    • 0
この回答へのお礼

補足いただきありがとうございます。
フォルダ指定してブックB開き、列のコピーは出来るのですが、bookの切り替えが出来ず貼り付けが出来ませんでした。
ThisWorkbook.Activeを、'Workbooks("ブックA.xlsx").Activateにしてみるも、コピー(範囲選択のまま)できません。。

お礼日時:2018/02/05 13:28

No.1 訂正



申し訳ございません。値貼り付けなんですね。
それでしたら以下ではいかがでしょうか?
--------------------------------------------------------------------------------
Sub Macro2()
Columns("B:B").Insert Shift:=xlToRight
Workbooks.Open Filename:="ブックB.xlsx"
Columns("A:A").Copy
ThisWorkbook.Activate
Columns("B:B").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Windows("ブックB.xlsx").Close
End Sub
--------------------------------------------------------------------------------
※ 値貼り付けですと挿入は出来ませんね。申し訳ございませんでした。
    • good
    • 0
この回答へのお礼

作業中のブックが、csvだったのを見落としておりました。
workbooks.("ブックA.csv").activate として無事出来ました!!
ありがとうございます^^

お礼日時:2018/02/05 13:40

同じフォルダーに「ブックA」と「ブックB」があり、マクロのコードが「ブックA」に書かれているとしたら以下のような感じで良いと思います。


--------------------------------------------------------------------------------
Sub Macro1()
Workbooks.Open Filename:="ブックB.xlsx"
Columns("A:A").Copy
ThisWorkbook.Activate
Columns("B:B").Insert Shift:=xlToRight
Application.CutCopyMode = False
Windows("ブックB.xlsx").Close
End Sub
--------------------------------------------------------------------------------
※ ちなみに「現在作業中のブックAの、sheet1のB列に空の1列挿入」は、貼り付けでなく挿入を行えば不要なので使っていません。
    • good
    • 0
この回答へのお礼

素早い回答ありがとうございます。
保存先は両方ともに、I:\(I:¥直下に置く)ので、
Workbooks.Open("I:\ブックB.xlsx").Activesheet
が必要でしょうか?

お礼日時:2018/02/05 13:02

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