Excel VBA質問箱 IV

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

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


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

【76713】図形のコピー かかし 15/3/3(火) 17:31 質問[未読]
【76714】Re:図形のコピー β 15/3/3(火) 18:53 発言[未読]
【76715】Re:図形のコピー かかし 15/3/4(水) 8:39 質問[未読]
【76716】Re:図形のコピー β 15/3/4(水) 9:14 発言[未読]
【76717】Re:図形のコピー かかし 15/3/4(水) 9:55 質問[未読]
【76723】Re:図形のコピー β 15/3/4(水) 21:20 発言[未読]
【76724】Re:図形のコピー β 15/3/4(水) 21:37 発言[未読]
【76725】Re:図形のコピー かかし 15/3/5(木) 9:01 お礼[未読]

【76713】図形のコピー
質問  かかし  - 15/3/3(火) 17:31 -

引用なし
パスワード
   申込書の書式を作成しました。
入力シートと印刷シートを分けて入力シートにはフォームコントロールがありこれを印刷したくないために別シートにデータをOFSETで飛ばして印刷しております。
定型のシートはうまくいったいるのですが、1シートだけ図形(地図的なもの)を貼り付ける必要があります。
入力シートに浮動で作成した図形を印刷シートの同じ位置にコピーしたいのですがうまくいきません。セルに併せて作成した図形はうまくコピー出来たのですが浮動位置の図形のコピーがどうやっても出来ません、どなたかご教授下さい。図形をすべてコピーして印刷用シートにコピーは出来たのですが,これだとフォームコントロールまでコピーされてしまい印刷シートを作成した意味がありません。
図形の数は決まっており18番目から20番目までだけコピーしたいのです。
図形の名称は取得出来ます。

【76714】Re:図形のコピー
発言  β  - 15/3/3(火) 18:53 -

引用なし
パスワード
   ▼かかし さん:

>入力シートと印刷シートを分けて入力シートにはフォームコントロールがありこれを印刷したくないために

フォームコントロールも含めて、シェープはそのプロパティで、「オブジェクトを印刷する」の
チェックをはずしておけば印刷されないと思いますが?

ともあれ、以下はSheet1の図を、Sheet2の同じ場所にコピーする参考コードです。

Sub test()
  Dim sp As Shape
  Dim l As Double
  Dim t As Double
  With Sheets("Sheet1").Shapes("Picture 1")
    l = .Left
    t = .Top
    .DrawingObject.Copy
  End With
  
  With Sheets("Sheet2")
    .Paste
    DoEvents  'おまじない
    With .Shapes(.Shapes.Count)
      .Left = l
      .Top = t
    End With
  End With
    
End Sub

【76715】Re:図形のコピー
質問  かかし  - 15/3/4(水) 8:39 -

引用なし
パスワード
   ▼β さん:
>▼かかし さん:
>
>>入力シートと印刷シートを分けて入力シートにはフォームコントロールがありこれを印刷したくないために
>
>フォームコントロールも含めて、シェープはそのプロパティで、「オブジェクトを印刷する」の
>チェックをはずしておけば印刷されないと思いますが?
>
説明が悪くて済みませんでした。
コントロールのリストボックスを使用していて選択の内容は印刷したかったのですがオブジェクトの印刷のチェックを外すと選択項目も印刷されなくなってしまいました、何か間違っているのでしょうか?無知ですみません

【76716】Re:図形のコピー
発言  β  - 15/3/4(水) 9:14 -

引用なし
パスワード
   ▼かかし さん:

まず、コントロールの印刷をする、しないということとは別に、別シートの同じ場所に
図形を転記する部分を試してみてください。いかがでしたか?

次に、コントロールの印刷要否の件ですが、印刷のチェックをはずすと、当然、そのコントロール全体が
(リストも含めて)印刷されません。
選択された「リスト内の一行のみ」を印刷したいということですか?
ちょっと、要件がわからないんですが?
今、「別シートにデータをOFSETで飛ばして」おられるようですから、別シートではなく
同じシートに選択された情報を転記しておけば、このシートのみで勝負がつくのでは?

いずれにしても、これ以上は、要件が明確ではないのでコメントができません。
当該のコードをすべてアップいただければ「推測」できるかもしれませんが。

【76717】Re:図形のコピー
質問  かかし  - 15/3/4(水) 9:55 -

引用なし
パスワード
   ▼β さん:
>▼かかし さん:
>
>まず、コントロールの印刷をする、しないということとは別に、別シートの同じ場所に
>図形を転記する部分を試してみてください。いかがでしたか?
>
>次に、コントロールの印刷要否の件ですが、印刷のチェックをはずすと、当然、そのコントロール全体が
>(リストも含めて)印刷されません。
>選択された「リスト内の一行のみ」を印刷したいということですか?
>ちょっと、要件がわからないんですが?
>今、「別シートにデータをOFSETで飛ばして」おられるようですから、別シートではなく
>同じシートに選択された情報を転記しておけば、このシートのみで勝負がつくのでは?
>
>いずれにしても、これ以上は、要件が明確ではないのでコメントができません。
>当該のコードをすべてアップいただければ「推測」できるかもしれませんが。

説明がうまく出来なくてすみません。電気使用申込書という書式があるのですが
シートが4枚あり、各シートのデータをリストボックスで選択して入力しております。リスト選択用のシートを別に作成しておき選択して入力しております。
選択したリストを印刷用シートの同位置にリンクして印刷用シートは入力用シートからリンクした場所からオフセットしてリンクデータを参照しております。
各シートとも入力シートと印刷シートがあり印刷シートは非表示にしてあります。
データのみのシートはうまくいっているのですが、1シートのみ3ヶ所に現場の簡略図を入力なりません、印刷シートを表示させてそこに直接入力すれば良いだけのことなんですが入力者が不慣れなため出来れば非表示にしておきたいんです。
出来れば印刷ボタンを押すと自動的に図形を印刷シートにコピーして印刷終了後に印刷シートの図形のみ削除したいんです。

Sub 単線結線図印刷()
'
' 単線結線図印刷 Macro
'
Worksheets("単線結線図-入力画面").Activate


Dim namae As Shape
Dim shapecount As Integer
Dim namaOBJ() As String
Dim i As Integer
Dim sp As Shape
Dim hidari As Double
Dim t As Double


Dim s As Shape
Dim addre As String
shapecount = ActiveSheet.Shapes.Count
ReDim namaOBJ(shapecount)
For i = 18 To shapecount

namaOBJ(i) = ActiveSheet.Shapes(i).Name
'MsgBox namaOBJ(i)

  Sheets("単線結線図-入力画面").Select
With Sheets("単線結線図-入力画面").Shapes(namaOBJ(i))
hidari = .Left
t = .Top
.DrawingObject.Copy
End With
With Sheets("単線結線図印刷")
.Paste
DoEvents
With .Shapes(.Shapes.Count)
.Left = hidari
.Top = t
End With
End With

Next i

'


  Sheets("単線結線図-入力画面").Select

  Sheets("単線結線図印刷").Visible = True
  Sheets("単線結線図印刷").Select

  ActiveWindow.SmallScroll Down:=12
  Range("A1:AK26").Select
  Range("C26").Activate
  ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
  Sheets("単線結線図印刷").Select
  ActiveWindow.SelectedSheets.Visible = False
  Sheets("単線結線図-入力画面").Select
  ActiveWindow.SmallScroll Down:=-33
  Range("F6:T6").Select
End Sub


こんな風に作ってみたんですがうまく動作しません(削除部分はまだ作ってません)

【76723】Re:図形のコピー
発言  β  - 15/3/4(水) 21:20 -

引用なし
パスワード
   ▼かかし さん:

コードそのものは精読していませんが、整理するところはありそうです。
ただ、コード自体は動きますよね。

>こんな風に作ってみたんですがうまく動作しません(削除部分はまだ作ってません)

うまく動作しないというのは、どういうことなのか、具体的にはわからないのですが
新規ブックで単線結線図-入力画面シートと単線結線図印刷シートをつくり
単線結線図-入力画面シートに図を20個配置。
アップされたコードをそのまま動かしました。

結果は、コードでやっているとおり(当たり前ですが)
18番目の図〜最後の図(20番目の図)が、単線結線図印刷シートに同じ位置でコピーされ
コピーされた単線結線図印刷シートがちゃんと印刷されました。

この18番目のシートから・・というところが、なぜなのか要件がわからず
コメントはできないのですが。

【76724】Re:図形のコピー
発言  β  - 15/3/4(水) 21:37 -

引用なし
パスワード
   ▼かかし さん:

もしかして・・・・
ちょっと先走りかもしれませんが図の18番目から最後までというのには
ちゃんとした意味がある。だけど、意図した図が選ばれない。
もし、こういうことだとして。

単線結線図-入力画面シートに、入力規則なんかがあるということは?
もしあった場合、通常なら、今作ったShapeは Shapes.Count番目のShapeのはずですが
なぜか(エクセルの仕様だと思いますが)Shapes.Count番目のShapeは、常に入力規則になります。
(入力規則もShapeの一種です)

もし、こうなら、マクロの中の Shape や Shapes を Picture や Pictures に置換え、
.DrawingObject.Copy を .Copy に変えて試してみてください。

【76725】Re:図形のコピー
お礼  かかし E-MAIL  - 15/3/5(木) 9:01 -

引用なし
パスワード
   ▼β さん:
>▼かかし さん:
>
>もしかして・・・・
>ちょっと先走りかもしれませんが図の18番目から最後までというのには
>ちゃんとした意味がある。だけど、意図した図が選ばれない。
>もし、こういうことだとして。
>
>単線結線図-入力画面シートに、入力規則なんかがあるということは?
>もしあった場合、通常なら、今作ったShapeは Shapes.Count番目のShapeのはずですが
>なぜか(エクセルの仕様だと思いますが)Shapes.Count番目のShapeは、常に入力規則になります。
>(入力規則もShapeの一種です)
>
>もし、こうなら、マクロの中の Shape や Shapes を Picture や Pictures に置換え、
>.DrawingObject.Copy を .Copy に変えて試してみてください。

何度もありがとうございます、18番目から20番目というのは、17番目までの図形は入力フォームにも印刷フォームにも固定で入っており入力フォームには必ず18番目から入っていくということで入力箇所が3カ所あるんです。
削除部分を作っていてわかったんですが、shapesの番号は削除すると変化するんですね、たとえば18.19とあった場合18を削除すると削除した時点で19が18に変わってしまうんですね。
どうもこの辺でおかしくなっていたみたいです。おっしゃるように18番からコピーしたつもりが、19だけコピーされたりしていました。
何とか、うまく動くようになりました。
大変ありがとうございました。

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