Access VBA質問箱 IV

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

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


1433 / 2272 ツリー ←次へ | 前へ→

【7162】AceessからExcelを操って「図のリンク貼り付け」がしたい nn 06/1/27(金) 11:58 質問[未読]
【7175】Re:AceessからExcelを操って「図のリンク... 小僧 06/1/27(金) 18:18 回答[未読]
【7194】Re:AceessからExcelを操って「図のリンク... nn 06/1/31(火) 14:52 お礼[未読]
【7197】Re:AceessからExcelを操って「図のリンク... 小僧 06/1/31(火) 17:38 回答[未読]
【7199】Re:AceessからExcelを操って「図のリンク... nn 06/2/1(水) 10:52 お礼[未読]

【7162】AceessからExcelを操って「図のリンク貼り...
質問  nn  - 06/1/27(金) 11:58 -

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

AccessからExcelBookを2つ開き、片方のブックのシートの図を片方のブックのシートに
「図のリンク貼り付け」をしようとしています。

とりあえず Excelのマクロで「図のリンク貼り付け」を行うコードを作り、
それをAccessで動かそうとしているのですが、
クリップボードにコピーした図を 
「図のリンク貼り付け」でペーストするところがうまくいきません。


'リンク元ファイルオープン
Ex.Workbooks.Open Filename:="D:\Source.xls"
        
'リンク元表を選択,コピー
Ex.Sheets("Source").Select
Ex.Sheets("Source").Range("B2:H17").Select
Selection.Copy

'貼り付け先のブックをオープン       
Ex.Workbooks.Open Filename:="D:\Paste.xls"
Ex.Workbooks(2).Activate
Ex.Sheets("Paste").Range("B7:H22").Select
'図のリンク貼り付けでペースト        
Ex.ActiveSheet.Pictures.Paste(Link:=True).Select ←ココが動かない!


ExcelのVBAでやる場合だと、
ActiveSheet.Pictures.Paste(Link:=True).Select
でうまくいくのですが・・・。

【7175】Re:AceessからExcelを操って「図のリンク...
回答  小僧  - 06/1/27(金) 18:18 -

引用なし
パスワード
   ▼nn さん:
こんにちは。

>とりあえず Excelのマクロで「図のリンク貼り付け」を行うコードを作り、
>それをAccessで動かそうとしているのですが、

ExcelVBA でも同じ事が言えますが、Select、Activate は
なるべく使わない方が無難ですよ。

Sub Excelに図を貼り付ける()
'要参照設定 Microsoft Excel x.x Object Library
Dim xlsApp As Excel.Application
Dim xlsWkb(1 To 2) As Excel.Workbook
Dim SName As String
Dim PName As String
Dim Pic As Object

  SName = "D:\Source.xls"
  PName = "D:\Paste.xls"

  Set xlsApp = CreateObject("Excel.Application")
  Set xlsWkb(1) = xlsApp.Workbooks.Open(SName)
  Set xlsWkb(2) = xlsApp.Workbooks.Open(PName)
  
  xlsWkb(1).Sheets("Source").Range("B2:H17").Copy
  
  With xlsWkb(2).Sheets("Paste")
    Set Pic = .Pictures.Paste(True)
      Pic.Cut
    .Paste .Range("B7")
    Set Pic = Nothing
  End With

  xlsApp.CutCopyMode = False
  xlsWkb(2).Close True: Set xlsWkb(2) = Nothing
  xlsWkb(1).Close False: Set xlsWkb(1) = Nothing
  xlsApp.Quit: Set xlsApp = Nothing
End Sub

【7194】Re:AceessからExcelを操って「図のリンク...
お礼  nn  - 06/1/31(火) 14:52 -

引用なし
パスワード
   ▼小僧 さん:
お返事ありがとうございます。
教えていただいたやり方で処理をすることが出来ました!
ありがとうございました。

>>とりあえず Excelのマクロで「図のリンク貼り付け」を行うコードを作り、
>>それをAccessで動かそうとしているのですが、
>
>ExcelVBA でも同じ事が言えますが、Select、Activate は
>なるべく使わない方が無難ですよ。
うーん??
どういう理由なんですか?
ExcelをVisibleにしていると画面がバチバチ切り替わってうっとうしいから
ですか?
(・・・まさかね)

【7197】Re:AceessからExcelを操って「図のリンク...
回答  小僧  - 06/1/31(火) 17:38 -

引用なし
パスワード
   ▼nn さん:
こんにちは。

>どういう理由なんですか?
>ExcelをVisibleにしていると画面がバチバチ切り替わってうっとうしいから
>ですか?

画面の切り替わり処理に関しては ScreenUpdating プロパティ を False にする事で
ちらつきを抑える事が出来ます。
詳細は Excel のヘルプを参考になさって下さい。

Select、Activate を使わない理由ですが、まず速度面の問題があります。

Office TANAKA さん:
http://www.officetanaka.net/excel/vba/speed/s2.htm

紹介させて頂いたサイトにも記載されていますが、
Select、Activate メソッドは使用しなくても良い場合が殆どです。

「りんごを選んで、それを食べる」
「りんごを食べる」

より間違いの起こらない記述でコードが書いた方が良いですよ、という事ですね。

【7199】Re:AceessからExcelを操って「図のリンク...
お礼  nn  - 06/2/1(水) 10:52 -

引用なし
パスワード
   ▼小僧 さん:
おはようございます。
お返事ありがとうございます。

>画面の切り替わり処理に関しては ScreenUpdating プロパティ を False にする事で
>ちらつきを抑える事が出来ます。
>詳細は Excel のヘルプを参考になさって下さい。

早速調べてみました!
こんなプロパティがあったんですね、なるほどです。
教えて下ってありがとうございます。


(ヘルプからの引用) -----------------------------

ScreenUpdating プロパティ

True の場合、マクロの実行中に画面表示を更新します。値の取得および設定が可能です。ブール型 (Boolean) の値を使用します。

解説
マクロの速度を向上させるため、画面を更新しないようにします。この場合、マクロの処理過程は見ることができませんが、実行速度が速くなります。

マクロが終了した後は、ScreenUpdating プロパティの値を True に戻してください。

------------------------------------------------

>Select、Activate を使わない理由ですが、まず速度面の問題があります。
>
>Office TANAKA さん:
>http://www.officetanaka.net/excel/vba/speed/s2.htm
>
>紹介させて頂いたサイトにも記載されていますが、
>Select、Activate メソッドは使用しなくても良い場合が殆どです。
>
>「りんごを選んで、それを食べる」
>「りんごを食べる」
>
>より間違いの起こらない記述でコードが書いた方が良いですよ、という事ですね。

確かに、Selectしないで処理を実行させたほうが、処理速度が向上しました。
これからは注意してプログラミングしようと思います。
ありがとうございました。

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