Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5595 / 13645 ツリー ←次へ | 前へ→

【49954】他ブックの見出しをコピー&ペースト take 07/6/30(土) 17:22 質問[未読]
【49955】Re:他ブックの見出しをコピー&ペースト かみちゃん 07/6/30(土) 17:27 発言[未読]
【49956】Re:他ブックの見出しをコピー&ペースト take 07/6/30(土) 17:46 回答[未読]
【49957】Re:他ブックの見出しをコピー&ペースト かみちゃん 07/6/30(土) 17:54 発言[未読]
【49958】Re:他ブックの見出しをコピー&ペースト take 07/6/30(土) 18:09 発言[未読]
【49959】Re:他ブックの見出しをコピー&ペースト かみちゃん 07/6/30(土) 18:42 発言[未読]
【49962】Re:他ブックの見出しをコピー&ペースト take 07/6/30(土) 23:34 発言[未読]
【49963】Re:他ブックの見出しをコピー&ペースト かみちゃん 07/6/30(土) 23:37 発言[未読]
【49964】Re:他ブックの見出しをコピー&ペースト take 07/7/1(日) 1:00 発言[未読]
【49965】Re:他ブックの見出しをコピー&ペースト りん 07/7/1(日) 7:56 発言[未読]
【49966】Re:他ブックの見出しをコピー&ペースト かみちゃん 07/7/1(日) 9:07 発言[未読]
【49967】Re:他ブックの見出しをコピー&ペースト take 07/7/1(日) 11:52 お礼[未読]
【49968】Re:他ブックの見出しをコピー&ペースト かみちゃん 07/7/1(日) 12:04 発言[未読]
【49969】Re:他ブックの見出しをコピー&ペースト take 07/7/1(日) 12:31 発言[未読]
【49973】Re:他ブックの見出しをコピー&ペースト かみちゃん 07/7/1(日) 15:57 発言[未読]
【49977】Re:他ブックの見出しをコピー&ペースト take 07/7/1(日) 22:28 お礼[未読]

【49954】他ブックの見出しをコピー&ペースト
質問  take  - 07/6/30(土) 17:22 -

引用なし
パスワード
   質問させて頂きます。

(見出しコピー用にデスクトップに用意している)Book1.xlsのシートの見出しをコピーし、
新しく作成したシートに貼り付け、見出しを付ける作業をほぼ毎日×数回しております。

毎回決まった見出しを貼り付けるだけなので、
毎日その見出しコピー用のシートを開いてコピーするという作業を
VBAで何とかしたいと思っております。

下記のようなものを試したのですが、
見出しがセルの結合などされているため、うまくいきませんでした。

転記元の見出しのフォーマットのまま、
転記先に見出しを貼り付ける方法として
何か良い方法はありませんでしょうか?

宜しくお願いします。

************************************************************
With Range("A1:R2")
 .Formula = "='C:\DOCUMENTS〜\ XXXX〜\デスクトップ\[Book1.xls]Sheet1'!$A$1:$R$2"
 .Value = .Value
End With
************************************************************

【49955】Re:他ブックの見出しをコピー&ペースト
発言  かみちゃん  - 07/6/30(土) 17:27 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>毎回決まった見出しを貼り付けるだけなので、
>毎日その見出しコピー用のシートを開いてコピーするという作業

手作業でできているならば、それを「マクロの記録」で記録することは、試されましたか?

【49956】Re:他ブックの見出しをコピー&ペースト
回答  take  - 07/6/30(土) 17:46 -

引用なし
パスワード
   >手作業でできているならば、それを「マクロの記録」で記録することは、試されましたか?

返信ありがとうございます。

手動でやることは試したのですが、
コピー元ブックをOPEN → 見出しをコピー → 転記先に貼り付け
というのが、うまくいきませんでした。

実際は見出しをつける以外にもしたいことがあり、
それはマクロの記録で何度も試し、
それを加工することでうまくいったのですが、
他ブック参照のコピ&ペーストのみうまくいかない状態です。

宜しくお願いします。

【49957】Re:他ブックの見出しをコピー&ペースト
発言  かみちゃん  - 07/6/30(土) 17:54 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>他ブック参照のコピ&ペーストのみうまくいかない状態です。

結合セルを使っているからうまくいかないのだと思います。
難しいことを考えずに、手作業でできているならば、その作業を「マクロの記録」
で記録すればいいだけです。

> 手動でやることは試したのですが、
> コピー元ブックをOPEN → 見出しをコピー → 転記先に貼り付け
> というのが、うまくいきませんでした。

どのようにうまくいかないのかがわかりません。

【49958】Re:他ブックの見出しをコピー&ペースト
発言  take  - 07/6/30(土) 18:09 -

引用なし
パスワード
   >> 手動でやることは試したのですが、
>> コピー元ブックをOPEN → 見出しをコピー → 転記先に貼り付け
>> というのが、うまくいきませんでした。
>
>どのようにうまくいかないのかがわかりません。

転記元のブックがマクロによって自動的に開かれないため、
転記先にペーストした内容が空白のセルが
貼り付けられるだけになってしまいます。

説明が下手で申し訳ございません。

【49959】Re:他ブックの見出しをコピー&ペースト
発言  かみちゃん  - 07/6/30(土) 18:42 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>>> 手動でやることは試したのですが、
>>> コピー元ブックをOPEN → 見出しをコピー → 転記先に貼り付け
>>> というのが、うまくいきませんでした。
>>
>>どのようにうまくいかないのかがわかりません。
>
>転記元のブックがマクロによって自動的に開かれないため、

なぜ、自動的に開かれないのですか?

もう一度聞きます。
・手作業ではできるのですよね?
・「マクロの記録」で記録したのですか?
・その記録したコードを提示することはできないのですか?

【49962】Re:他ブックの見出しをコピー&ペースト
発言  take  - 07/6/30(土) 23:34 -

引用なし
パスワード
   >もう一度聞きます。
>・手作業ではできるのですよね?
>・「マクロの記録」で記録したのですか?
>・その記録したコードを提示することはできないのですか?

返信が遅れてしまい申し訳ありません。
マクロの記録で記録したコードを提示致します。
行った動作は以下の通りです。

1Book1.xlsをあらかじめ開いて
マクロの記録をはじめました。
Book1.xls  というブックを開き
A1:E1をコピーします。
コピーした内容を
1Book1.xlsのA1セルへ貼り付けました。
ここで記録を終了しました。

宜しくお願いします。
*************************
Sub Macro3()
  Application.WindowState = xlMinimized
  Range("A1:E1").Select
  Selection.Copy
  Windows("1Book1.xls").Activate
  Range("A1").Select
  ActiveSheet.Paste
End Sub
**************************

【49963】Re:他ブックの見出しをコピー&ペースト
発言  かみちゃん  - 07/6/30(土) 23:37 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>ここで記録を終了しました。
>
>宜しくお願いします。

それで、できたのでしょうか?できないのでしょうか?
できないなら、何がどのようにできないのでしょうか?
手作業のときと結果が違うのでしょうか?

【49964】Re:他ブックの見出しをコピー&ペースト
発言  take  - 07/7/1(日) 1:00 -

引用なし
パスワード
   >それで、できたのでしょうか?できないのでしょうか?
>できないなら、何がどのようにできないのでしょうか?
>手作業のときと結果が違うのでしょうか?


先ほど書きました内容と重複してしまいますが、
下記のようになってしまい、
手動のときと結果が異なっています。
つまり出来ていないということです。

>>転記元のブックがマクロによって自動的に開かれないため、
>>転記先にペーストした内容が空白のセルが
>>貼り付けられるだけになってしまいます。

【49965】Re:他ブックの見出しをコピー&ペースト
発言  りん E-MAIL  - 07/7/1(日) 7:56 -

引用なし
パスワード
   take さん、おはようございます。

>コピー元ブックをOPEN → 見出しをコピー → 転記先に貼り付け

>1Book1.xlsをあらかじめ開いて
>マクロの記録をはじめました。

>>Book1.xls  というブックを開き
この部分に該当するコードが見当たらないようですが。

「ファイルを開く」も記録したのだとすれば、
  Application.Workbooks.Open ファイル名
この一文も記録されているはずですが。

>*************************
>Sub Macro3()
>>A1:E1をコピーします。
>  Application.WindowState = xlMinimized
>  Range("A1:E1").Select
>  Selection.Copy

>>コピーした内容を
>>1Book1.xlsのA1セルへ貼り付けました。
>  Windows("1Book1.xls").Activate
>  Range("A1").Select
>  ActiveSheet.Paste
>End Sub

【49966】Re:他ブックの見出しをコピー&ペースト
発言  かみちゃん  - 07/7/1(日) 9:07 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>手動のときと結果が異なっています。
>
>> 1Book1.xlsをあらかじめ開いて
>> マクロの記録をはじめました。
>> Book1.xls  というブックを開き

りんさんも指摘されていますが、「Book1.xlsというブックを開き」という
コードが見当たりません。
「1Book1.xlsをあらかじめ開いて」あるということは、
Range("A1:E1").Select
の時点でのアクティブシートは、「Book1.xls」のシートなのか「1Book1.xls」の
どちらなのですか?
おさらく、「Book1.xlsというブックを開き」ということをしていないため、
「1Book1.xls」になってしまっているのではないでしょうか?

きちんと、手作業のときの「マクロの記録」をしましょう。
そうすると、とりあえずは、手作業とまったく同じ処理をしてくれますから。

【49967】Re:他ブックの見出しをコピー&ペースト
お礼  take  - 07/7/1(日) 11:52 -

引用なし
パスワード
   >りんさんも指摘されていますが、「Book1.xlsというブックを開き」という
>コードが見当たりません。
>「1Book1.xlsをあらかじめ開いて」あるということは、
>Range("A1:E1").Select
>の時点でのアクティブシートは、「Book1.xls」のシートなのか「1Book1.xls」の
>どちらなのですか?
>おさらく、「Book1.xlsというブックを開き」ということをしていないため、
>「1Book1.xls」になってしまっているのではないでしょうか?
>
>きちんと、手作業のときの「マクロの記録」をしましょう。
>そうすると、とりあえずは、手作業とまったく同じ処理をしてくれますから。


りん さん
かみちゃん さん

返答ありがとうございます。

手作業と同じ通り試してみたのですが、
やはり同じ状況になってしまうので
もしかしたら、と思い、
今までダブルクリックでブックを開いていたものを、
EXCELのウインドウ左上の
【ファイル】→【開く】から試して記録してみたところ、
うまくいきました。

ダブルクリックでのファイルOPENは
マクロの記録にうまく反映されないのですね。
知りませんでした。
手作業で試したものが必ずしも全て反映されるとは
限らないことがわかり、勉強になりました。

いろいろとありがとうございました。

【49968】Re:他ブックの見出しをコピー&ペースト
発言  かみちゃん  - 07/7/1(日) 12:04 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>今までダブルクリックでブックを開いていたものを、
>EXCELのウインドウ左上の
>【ファイル】→【開く】から試して記録してみたところ、
>うまくいきました。
>
> ダブルクリックでのファイルOPENは
> マクロの記録にうまく反映されないのですね。

なるほど、ダブルクリックで開いていたのですね。
まぁ、記録されたコードを試していただけると、Book1.xlsが開かないことで
気づいていただけたかと思いますけど。
Excelの一般操作の中で、実は「マクロの記録」で記録されない操作もあります。
でも、「マクロの記録」で記録することは、VBAの一番の基本です。

ちなみに、最終的にどのようにしたかをご紹介いただけると過去ログとして、
残り、後々掲示板を見ている方々に役に立つこともありますので、差し支え
なければ、教えていただければと思います。

【49969】Re:他ブックの見出しをコピー&ペースト
発言  take  - 07/7/1(日) 12:31 -

引用なし
パスワード
   >ちなみに、最終的にどのようにしたかをご紹介いただけると過去ログとして、
>残り、後々掲示板を見ている方々に役に立つこともありますので、差し支え
>なければ、教えていただければと思います。

失礼致しました。
マクロ内容は以下のようになっております。

しかし、今試したところ
既に【Book1.xls】が開いた状態で、
マクロを実行するとでファイルが2重で開くことになってしまいます。

『ファイルが既にOPENされていれば【Book1.xls】をOPENする必要はない』
というような制御は可能でしょうか?
これはマクロの記録ではできない部分のようで…。

*********************************************************
Sub Macro1()
  ChDir "C:\DOCUMENTS AND SETTINGS\XXXX\デスクトップ"
  Workbooks.Open Filename:= _
    "C:\DOCUMENTS AND SETTINGS\XXXX\デスクトップ\Book1.xls"
  Range("A1:E1").Select
  Selection.Copy
  Windows("1Book1.xls").Activate
  ActiveSheet.Paste
End Sub
*********************************************************

【49973】Re:他ブックの見出しをコピー&ペースト
発言  かみちゃん  - 07/7/1(日) 15:57 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>『ファイルが既にOPENされていれば【Book1.xls】をOPENする必要はない』
> というような制御は可能でしょうか?
> これはマクロの記録ではできない部分のようで…。

そこまでは、Excelの一般操作ではできませんから、「マクロの記録」でも記録
できません。

そこで、以下のような追加をすることでできると思います。

Sub Macro2()
 Dim WB As Workbook
 Dim strBookName As String
 
 '元のブック名
 strBookName = "Book1.xls"
 
 '元のブック名が開いていれば、オブジェクト変数に格納
 On Error Resume Next
 Set WB = Workbooks(strBookName)
 On Error GoTo 0
  
 'オブジェクト変数に格納できなければ(元のブック名が開いていなければ)
 If WB Is Nothing Then
'  ChDir "C:\DOCUMENTS AND SETTINGS\XXXX\デスクトップ"
  Workbooks.Open Filename:= _
    "C:\DOCUMENTS AND SETTINGS\XXXX\デスクトップ\" & strBookName
 End If
 
 Range("A1:E1").Select
 Selection.Copy
 Windows("1Book1.xls").Activate
 ActiveSheet.Paste
End Sub

【49977】Re:他ブックの見出しをコピー&ペースト
お礼  take  - 07/7/1(日) 22:28 -

引用なし
パスワード
   >そこまでは、Excelの一般操作ではできませんから、「マクロの記録」でも記録
>できません。
>
>そこで、以下のような追加をすることでできると思います。
>
>Sub Macro2()
> Dim WB As Workbook
> Dim strBookName As String
> 
> '元のブック名
> strBookName = "Book1.xls"
> 
> '元のブック名が開いていれば、オブジェクト変数に格納
> On Error Resume Next
> Set WB = Workbooks(strBookName)
> On Error GoTo 0
>  
> 'オブジェクト変数に格納できなければ(元のブック名が開いていなければ)
> If WB Is Nothing Then
>'  ChDir "C:\DOCUMENTS AND SETTINGS\XXXX\デスクトップ"
>  Workbooks.Open Filename:= _
>    "C:\DOCUMENTS AND SETTINGS\XXXX\デスクトップ\" & strBookName
> End If
> 
> Range("A1:E1").Select
> Selection.Copy
> Windows("1Book1.xls").Activate
> ActiveSheet.Paste
>End Sub


ソースコードにわかりやすいコメントまでつけて
頂きまして、
ありがとうございました。
使用させて頂きます。

5595 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free