Excel VBA質問箱 IV

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

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


6702 / 13646 ツリー ←次へ | 前へ→

【43653】今度は別のコピーの件なのですが。。。 無頼斎 06/10/21(土) 21:34 質問[未読]
【43654】Re:今度は別のコピーの件なのですが。。。 neptune 06/10/21(土) 22:43 発言[未読]
【43655】Re:今度は別のコピーの件なのですが。。。 無頼斎 06/10/22(日) 0:52 質問[未読]
【43656】Re:今度は別のコピーの件なのですが。。。 P 06/10/22(日) 8:56 発言[未読]
【43657】Re:今度は別のコピーの件なのですが。。。 無頼斎 06/10/22(日) 9:17 発言[未読]
【43658】Re:今度は別のコピーの件なのですが。。。 かみちゃん 06/10/22(日) 9:24 発言[未読]
【43659】Re:今度は別のコピーの件なのですが。。。 無頼斎 06/10/22(日) 10:23 質問[未読]
【43660】Re:今度は別のコピーの件なのですが。。。 かみちゃん 06/10/22(日) 10:37 発言[未読]
【43663】Re:今度は別のコピーの件なのですが。。。 無頼斎 06/10/22(日) 11:33 発言[未読]
【43666】Re:今度は別のコピーの件なのですが。。。 かみちゃん 06/10/22(日) 15:31 発言[未読]
【43674】Re:今度は別のコピーの件なのですが。。。 無頼斎 06/10/22(日) 17:59 質問[未読]
【43675】Re:今度は別のコピーの件なのですが。。。 かみちゃん 06/10/22(日) 18:04 発言[未読]

【43653】今度は別のコピーの件なのですが。。。
質問  無頼斎  - 06/10/21(土) 21:34 -

引用なし
パスワード
   また、よろしくお願いいたします。

今度は、別のファイルにあるブックへのコピーなのですが、できるでしょうか?
手作業でやれればいいのですが、何分量が多いのでこの際に質問したいと思いました。

"E:\確認表"の"確認1.xls"でシート名"監督者用1"を別の"E:\公表用"の"公表
用1.xls"のシートへ、数式を除いて、列幅、行幅(可能でしょうか?)、罫線と
シート名をコピーしたいのですが、このシートの右側には貼り付け作業が続きま
す(ブック名"工程表.xls"の"工程1〜工程7"まで)。

この説明でお分かりになるでしょうか?

よろしくお願いします。

【43654】Re:今度は別のコピーの件なのですが。。。
発言  neptune  - 06/10/21(土) 22:43 -

引用なし
パスワード
   ▼無頼斎 さん:
こんばんは
>今度は、別のファイルにあるブックへのコピーなのですが、できるでしょうか?
>手作業でやれればいいのですが、何分量が多いのでこの際に質問したいと思いました。
ファイル、ブック、(恐らくフォルダの用語も必要)を正確に使い分けましょう。
推測するのは面倒です。

で、何がわからないのでしょうか?
全く判らないのなら、質問になりません。

マクロの記録で原型を取り、その改造で出来ませんか?
(行、列の幅はわかりませんが、コピー後設定しても良いです。)

#具体的に質問しましょう。まるで作成以来に感じてしまいます。

【43655】Re:今度は別のコピーの件なのですが。。。
質問  無頼斎  - 06/10/22(日) 0:52 -

引用なし
パスワード
   失礼致しました。

当方全くの初心者でございまして、甘えておりました。

お許し下さい。

さて、自動マクロでは、次のようになっておりました。

Sub Sheetcopy1()
'
' Sheetcopy1 Macro
' マクロ記録日 : 2006/10/22 ユーザー名 : Kyozaburo'

'
  Columns("A:Y").Select
  Range("A2").Activate
  Selection.Copy
  ActiveWindow.WindowState = xlNormal
  ActiveWindow.WindowState = xlNormal
  Range("A1").Select
  Selection.Insert Shift:=xlToRight
  Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
  Range("A1:Y1").Select
  Application.CutCopyMode = False
  ActiveWorkbook.Save
  Windows("確認1.xls").Activate
  Range("A1:Y1").Select
End Sub


上の自動マクロにはコピー先が示されていないので、可動しません。
当該Columns("A:Y").をフォルダ"確認書+監督者"内のブック"確認書+監督者(1).xls"のシートにコピーするには、どのように改造すればよろしいのでしょうか?よろしくお願いします。

【43656】Re:今度は別のコピーの件なのですが。。。
発言  P  - 06/10/22(日) 8:56 -

引用なし
パスワード
   ▼無頼斎 さん:

今手作業でされている状態を、そのままマクロの記録をされては如何です。
その手作業のものを、再度コードを掲載してください。
今掲載されているコードでは、なぜこのような動作をされているのか
疑問を抱くところがあります。

貴方には分かっておられるでしょうが、解答を求める以上は、分かりやすく
整理して掲載して下さい。

【43657】Re:今度は別のコピーの件なのですが。。。
発言  無頼斎  - 06/10/22(日) 9:17 -

引用なし
パスワード
   ▼P さん:
>▼無頼斎 さん:
>
>今手作業でされている状態を、そのままマクロの記録をされては如何です。
>その手作業のものを、再度コードを掲載してください。

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

そのまま、掲載してるんですが。。。。。

VBAでシートを別のフォルダ内にあるファイルのシートにコピーできるのか、できないのかということです。掲載済みのコードでは、コピー先のフォルダ名、ファイル名がはいっていません(私にも気付いております)。したがって、(できるのであれば)その場所の指定がなければ、マクロは動かないということになりますよね?

>今掲載されているコードでは、なぜこのような動作をされているのか
>疑問を抱くところがあります。

疑問を抱かれるのはよくわかりません。この自動マクロコードは私が手を加えて
いるのではないので、おっしゃられている意味がわかりかねますが。。。。

【43658】Re:今度は別のコピーの件なのですが。。。
発言  かみちゃん  - 06/10/22(日) 9:24 -

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

横から失礼します。

> VBAでシートを別のフォルダ内にあるファイルのシートにコピーできるのか、できないのかということ

原則として、コピー先のファイルは、開いておく必要があります。
開いていることを見えなくしたいのであれば、画面更新を抑止すればいいです。

また、「開かずしてコピーしたい」という前提であれば、できないこともないようですが、おすすめしません。

【43659】Re:今度は別のコピーの件なのですが。。。
質問  無頼斎  - 06/10/22(日) 10:23 -

引用なし
パスワード
   開いておけば、楽に自動マクロで可動するんですね!!

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

下のコードは行間はコピーされないようですので、自分で自動記録で追加しました。

しかし、よく、開かずに起動させてしまうので、下のコードをマクロボタンに登録してマクロボタンを押すとメッセージボックスで注意を表示させることはできますか?

Sub Sheetcopy1()
'
' Sheetcopy1 Macro
' マクロ記録日 : 2006/10/22 ユーザー名 : Kyozaburo'

'
  Columns("A:Y").Select
  Range("A2").Activate
  Selection.Copy
  Windows("公表用(1).xls").Activate
  ActiveWindow.WindowState = xlNormal
  ActiveWindow.WindowState = xlNormal
  Range("A1").Select
  Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
  Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
  Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
  Range("V22").Select
  Sheets("監督者用").Select
  Sheets("監督者用").Name = "監督者用"
  Rows("2:2").RowHeight = 5.25
  Rows("7:7").RowHeight = 8.25
  Rows("12:12").RowHeight = 8.25
  Rows("17:17").RowHeight = 6
  Windows("確認1.xls").Activate
  Application.CutCopyMode = False
  Range("A1:Y1").Select
End Sub

よろしくお願いします。

【43660】Re:今度は別のコピーの件なのですが。。。
発言  かみちゃん  - 06/10/22(日) 10:37 -

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

>開いておけば、楽に自動マクロで可動するんですね!!

というより、シートを操作するには、開いておくことが基本です。
これは、マクロに限った話ではありません。
一般操作でも、開いておいて、コピー貼り付けしないといけないのに、開いている
形跡がない、だから[#43656]でPさんが疑問を抱かれたのではないでしょうか?

>しかし、よく、開かずに起動させてしまうので、下のコードをマクロボタンに登録してマクロボタンを押すとメッセージボックスで注意を表示させることはできますか?

それは、必要なブックが開かれているかをチェックしたいということですか?
以下のような感じで開いているかどうかのチェックはできると思います。

Sub Sample()
 If CHKBook("Book1.xls") Then
  MsgBox "Book1.xls は開かれています"
 Else
  MsgBox "Book1.xls は開かれていません"
 End If
End Sub

Function CHKBook(strWorkbookName As String) As Boolean
 Dim wb As Workbook
 
 CHKBook = False
 For Each wb In Workbooks
  If wb.Name = strWorkbookName Then
   CHKBook = True
   Exit For
  End If
 Next
End Function

【43663】Re:今度は別のコピーの件なのですが。。。
発言  無頼斎  - 06/10/22(日) 11:33 -

引用なし
パスワード
   ▼かみちゃん さん:
>>しかし、よく、開かずに起動させてしまうので、下のコードをマクロボタンに登録してマクロボタンを押すとメッセージボックスで注意を表示させることはできますか?
>
>それは、必要なブックが開かれているかをチェックしたいということですか?
>以下のような感じで開いているかどうかのチェックはできると思います。
>
>Sub Sample()
> If CHKBook("Book1.xls") Then
>  MsgBox "Book1.xls は開かれています"
> Else
>  MsgBox "Book1.xls は開かれていません"
> End If
>End Sub
>
>Function CHKBook(strWorkbookName As String) As Boolean
> Dim wb As Workbook
> 
> CHKBook = False
> For Each wb In Workbooks
>  If wb.Name = strWorkbookName Then
>   CHKBook = True
>   Exit For
>  End If
> Next
>End Function

ありがとうございます。マクロボタンを2つ作るべきなのでしょうか?
なんとか自動記録マクロ内に組み込めれば、自動記録可動前にチェック
できるのですが。。。。


上記のコードは下の自動記録マクロには組み入れられないのでしょうか?

Sub Sheetcopy1()
'
' Sheetcopy1 Macro
' マクロ記録日 : 2006/10/22 ユーザー名 : Kyozaburo'

'
  Columns("A:Y").Select
  Range("A2").Activate
  Selection.Copy
  Windows("公表用(1).xls").Activate
  ActiveWindow.WindowState = xlNormal
  ActiveWindow.WindowState = xlNormal
  Range("A1").Select
  Selection.PasteSpecial Paste:=xlPasteAllExceptBorders, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
  Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
  Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
    xlNone, SkipBlanks:=False, Transpose:=False
  Range("V22").Select
  Sheets("監督者用").Select
  Sheets("監督者用").Name = "監督者用"
  Rows("2:2").RowHeight = 5.25
  Rows("7:7").RowHeight = 8.25
  Rows("12:12").RowHeight = 8.25
  Rows("17:17").RowHeight = 6
  Windows("確認1.xls").Activate
  Application.CutCopyMode = False
  Range("A1:Y1").Select
End Sub

【43666】Re:今度は別のコピーの件なのですが。。。
発言  かみちゃん  - 06/10/22(日) 15:31 -

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

>マクロボタンを2つ作るべきなのでしょうか?

その必要はありません。

>上記のコードは下の自動記録マクロには組み入れられないのでしょうか?

「マクロの記録」で記録されたコードに、記述することは可能です。
そのため、「自動記録可動前にチェック」という考え方ではなく、
必要なブックを開いていれば、マクロが実行されるようにすべきです。

とりあえず、以下のような感じでできます。
CHKBook は、[#43660]を参照してください。

Sub Sample1()
 If CHKBook("公表用(1).xls") Then
  If CHKBook("確認1.xls") Then
   '公表用(1).xls と 確認1.xls が開かれていたらマクロを実行する
   Call Sheetcopy1
  Else
   MsgBox "確認1.xls は開かれていません"
  End If 
 Else
  MsgBox "公表用(1).xls は開かれていません"
 End If
End Sub

【43674】Re:今度は別のコピーの件なのですが。。。
質問  無頼斎  - 06/10/22(日) 17:59 -

引用なし
パスワード
   ご解答ありがとうございました。

 If CHKBook("Book1.xls") Then
  MsgBox "Book1.xls は開かれています"
 Else
  MsgBox "Book1.xls は開かれていません"
 End If
End Sub

をうまく自動マクロの先頭に入れて、、

CHKBookのファンクションを別の標準モジュールに格納して作動しました。

CHKBookのファンクションを別の標準モジュールに格納する必要がなぜあるのか

わかりません。

話が大分それましたが、お教えくださいませんか?

【43675】Re:今度は別のコピーの件なのですが。。。
発言  かみちゃん  - 06/10/22(日) 18:04 -

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

>CHKBookのファンクションを別の標準モジュールに格納する必要がなぜあるのか
>
>わかりません。

別の標準モジュールに格納する必要はありません。
同じモジュールでいいです。

ただ、別のFunctionプロシージャにしてあるのは、対象となるブックの数だけ
存在チェックのコードを書く必要があったからです。
もちろん、On Error ステートメントで回避する簡単な方法もありますが、個人
的には、あまり使わない方法ですので、ご提示していません。

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