Excel VBA質問箱 IV

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

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


365 / 3841 ページ ←次へ | 前へ→

【75115】Re:エクセルファイルのデスクトップへの...
発言  γ  - 13/12/12(木) 20:17 -

引用なし
パスワード
   ▼ggg さん:
>ご教示のとおりStopを入れてBeforeCloseイベントプロシージャを確かめましたが
>うまく行かず原因が不明です。
うまくいかないだけでは説明が不足しています。
そこで止まったのですか?
止まったのであれば、そのイベントプロシージャが起きることは
確認できたわけですね。

その後で、ステップ実行したら、どうなるのですか?
F8 キーを押すたびに、コードの一行が実行されるはずです。
その後の状況を説明ください。
・ツリー全体表示

【75114】Re:エクセルファイルのデスクトップへの...
質問  ggg  - 13/12/12(木) 20:09 -

引用なし
パスワード
   ▼γ さん:
>Private Sub Workbook_BeforeClose(Cancel As Boolean)
> Dim moveFD As String, byotoname As String
>
> Stop 
> moveFD = "C:\testMove\"
> Workbooks.Open moveFD & "test.xls"
> MsgBox "[a-Close]ボタンをクリックして下さい"
> ThisWorkbook.Save
>End Sub

>ということではないですか?
>BeforeCloseイベントプロシージャが予定どおり実行されているかを
>確かめたいわけですよね。違いましたか?

お手数をおかけして恐縮です。
ご教示のとおりStopを入れてBeforeCloseイベントプロシージャを確かめましたが
うまく行かず原因が不明です。
・ツリー全体表示

【75113】Re:エクセルファイルのデスクトップへの...
発言  γ  - 13/12/12(木) 20:02 -

引用なし
パスワード
   ▼ggg さん:
>▼γ さん:
>すみませんがstopってどこの冒頭に入れたらいいのでしょうか?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
 Dim moveFD As String, byotoname As String

 Stop 
 moveFD = "C:\testMove\"
 Workbooks.Open moveFD & "test.xls"
 MsgBox "[a-Close]ボタンをクリックして下さい"
 ThisWorkbook.Save
End Sub
ということではないですか?
BeforeCloseイベントプロシージャが予定どおり実行されているかを
確かめたいわけですよね。違いましたか?

# 何分、インデントが正確につけられていないので、
# 十分に読んでいませんでした。
・ツリー全体表示

【75112】Re:マクロで、セルに色をつけたいです。
お礼  しずか  - 13/12/12(木) 17:29 -

引用なし
パスワード
   出来ました!!

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

おかげで仕事が早く進みます。

また、何かありました時は
どうぞ、よろしくお願いいたします。
・ツリー全体表示

【75111】別ファイルのシートを取り込んでコピーす...
質問  ちえ  - 13/12/12(木) 9:56 -

引用なし
パスワード
   こんにちわ。
早速質問させていただきます。

別ブックからシートを取り込んでコピーするマクロを組んでいます。
図面があるのですが、実行すると『このイメージは現在表示できません』と出ます。
列は揃うけど行が揃わなかったりもします。
2003の時は動いていたんですが、2010で実行するとこうなります。

なんとか2010で動かしていきたいので、よろしくお願い致します。

  Application.ScreenUpdating = False

  fna = Application.GetOpenFilename(Title:="\")
  If fna = "False" Then Exit Sub
  
  Workbooks.Open fna
  
  f0 = ThisWorkbook.Name      
  f1 = ActiveWorkbook.Name     
  s1 = ActiveSheet.Name       
 
  If f1 Like "*sheet1*" Then
    f2 = "sheet1"
   ElseIf f1 Like "*sheet2*" Then
    f2 = "sheet2"
   ElseIf f1 Like "*sheet3*" Then
    f2 = "sheet3"
   End If
  
 
  Windows(f1).Activate
  Cells.Select
  Selection.Copy
  Windows(f0).Activate

  sc = Sheets.Count
  For i = sc To 1 Step -1
    sn = Sheets(i).Name
  
   If sn = f2 Then
     Sheets(sn).Select
     Range("A1").Select
     ActiveSheet.Paste
     Range("A1").Select
     ActiveWindow.Zoom = 80
     GoTo 100
    End If
  Next
  
100:
 
 
  Windows(f1).Activate
  Application.CutCopyMode = False
  Windows(f1).Close
 
  Application.ScreenUpdating = True
 
    
End Sub
・ツリー全体表示

【75110】Re:エクセルファイルのデスクトップへの...
質問  ggg  - 13/12/12(木) 9:03 -

引用なし
パスワード
   ▼γ さん:
すみませんがstopってどこの冒頭に入れたらいいのでしょうか?
・ツリー全体表示

【75109】Re:エクセルファイルのデスクトップへの...
発言  γ  - 13/12/12(木) 7:51 -

引用なし
パスワード
   >[a.xls]を閉じる処理は[a.xls]の右上端の閉じるアイコン(×)で行っています。

了解しました。

> Workbooks.Open moveFD & "test.xls" に移った後にこのコード
> のEnd Subに辿り着かないのです。
それは本当ですか。
冒頭にStopを挿入して、その後ステップ実行したら何か原因が判りませんか?
・ツリー全体表示

【75108】Re:エクセルファイルのデスクトップへの...
質問  ggg  - 13/12/12(木) 7:33 -

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

>私がお聞きしているのは、
>  [a.xls]を閉じる処理をどこでされているのですか?
>ということです。

大変失礼しました。
[a.xls]を閉じる処理は[a.xls]の右上端の閉じるアイコン(×)で行っています。
・ツリー全体表示

【75107】Re:添付ファイルのつけ方
発言  γ  - 13/12/11(水) 23:29 -

引用なし
パスワード
        ** 文章が混乱していたので修正しました **
>非公開なのですね‥
非公開ということではありません。

業界関係者が定めた mailto:プロトコルでは、
添付ファイルを指定する機能はありません。
ですから、mailtoに反応する機能を実装する開発者は、
添付機能を実現しなくてよいのです。それが普通です。
しかし、中には親切心からその機能を実装している一部のソフトが
あるようです、ということです。

実装する義務もないので、実装していないことにクレームをつける権利は
なにもなく、偶然に実装されていたらラッキー、ということです。
(少しくどいかな。)

>ちなみにメールはWindowsliveメールです。
試されたように、たぶん、それは添付機能を実装していないということですね。

mailto:にこだわらなければ、もっと選択肢は広がります。

(0)まず、ExcelからWindowsliveメールをコントロール方法は、
それらをコントロールする術をマイクロソフトが提供していないので、
難しいと思われます。

(1)Outlookをマクロから操作する。
(OutlookはExcelなどから操作される手段が提供されており、使い易いです。)

(2)Basp21というメール送信機能を持ったツール(無料)を利用する。

(3)CDOという仕組みを利用する。
(追加の設備は不要ですが、難しいかも)

などの方法があります。
ネットなどで検索して、難易度など色々検討してみてください。
外部ツールをインストールすることが可能なら、(2)が使用例もネット上にあり、
比較的容易かも知れません。

・ツリー全体表示

【75106】Re:エクセルファイルのデスクトップへの...
発言  γ  - 13/12/11(水) 23:10 -

引用なし
パスワード
   ▼ggg さん:
>次のコードで閉じようとしましたが
次のコードというのは、
>Private Sub Workbook_BeforeClose(Cancel As Boolean)
のことでしょうか。
これは、閉じる動作がされたときに動くものですね。

私がお聞きしているのは、
  [a.xls]を閉じる処理をどこでされているのですか?
ということです。
・ツリー全体表示

【75105】Re:エクセルファイルのデスクトップへの...
質問  ggg  - 13/12/11(水) 22:55 -

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

>どこのコードで[a.xls]を閉じていますか?教えてください。

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

次のコードで閉じようとしましたが
Workbooks.Open moveFD & "test.xls" に移った後にこのコード
のEnd Subに辿り着かないのです。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

 Dim moveFD As String, byotoname As String
 
moveFD = "C:\testMove\"
 Workbooks.Open moveFD & "test.xls"
 
 MsgBox "[a-Close]ボタンをクリックして下さい"
 
 ThisWorkbook.Save

End Sub
・ツリー全体表示

【75104】Re:エクセルファイルのデスクトップへの...
発言  γ  - 13/12/11(水) 20:28 -

引用なし
パスワード
   ▼ggg さん:
>開いてるファイル移動不可能は理解してますが
それは失礼しました。

>なぜ [a.xls]のイベントBeforeCloseが作動して[a.xls]が閉じないのでしょうか
どこのコードで[a.xls]を閉じていますか?教えてください。

>なお当方が意図する処理を可能にするためにはコードの
>どこをどのようにすれば良いのか
まずは実態を良く把握することではないですか?
ステップ実行して、どの行で何が実現されているかをよく確認して下さい。
自動実行マクロの場合は、途中にStopを入れて、それ以降ステップ実行すると
デバッグができますよね。
・ツリー全体表示

【75102】Re:マクロで、セルに色をつけたいです。
回答  [名前なし]  - 13/12/11(水) 18:19 -

引用なし
パスワード
   シートで色付け範囲の位置が違うなら修正が必要ですが・・

位置が同じで同条件なら
For Each rng In Range("色付範囲01")

For Each rng In Range("b10").Resize(10, 10)
For Each rng In Range(Range("b10"), Range("b10").Offset(10, 10))
For Each rng In Range("b10:k19")
などと直接に指定するといいです。

あと↑コードだとかなり長くなるのでしきい値を配列で持つと

Sub 色付け1()
  Dim rlimen 'しきい値(最小値,(9個のしきい値),最大値)
  rlimen = Array(1, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
  Call 色付け2(rlimen, Range("b10")) 'b10から10*10範囲
  
  rlimen = Array(10, 21, 35, 50, 65, 70, 85, 100, 115, 130, 150)
  Call 色付け2(rlimen, Range("b25"))
  
  rlimen = Array(50, 61, 75, 90, 105, 120, 135, 150, 165, 180, 200)
  Call 色付け2(rlimen, Range("b40"))
  
  rlimen = Array(80, 100, 123, 145, 167, 199, 221, 243, 265, 287, 300)
  Call 色付け2(rlimen, Range("b55"))
End Sub

Private Sub 色付け2(rlimen, clrange As Range)
  Dim rng As Range
  Dim rcolor()
  rcolor = Array(RGB(211, 255, 255), RGB(178, 255, 255), RGB(204, 255, 204), RGB(75, 255, 75), _
           RGB(255, 255, 153), RGB(255, 255, 0), RGB(255, 204, 0), _
          RGB(255, 153, 0), RGB(255, 102, 0), RGB(255, 0, 0))
  For Each rng In clrange.Resize(10, 10)
    Select Case rng.Value
    Case rlimen(0) To rlimen(1) - 1
      rng.Interior.Color = rcolor(0)
    Case rlimen(1) To rlimen(2) - 1
      rng.Interior.Color = rcolor(1)
    Case rlimen(2) To rlimen(3) - 1
      rng.Interior.Color = rcolor(2)
    Case rlimen(3) To rlimen(4) - 1
      rng.Interior.Color = rcolor(3)
    Case rlimen(4) To rlimen(5) - 1
      rng.Interior.Color = rcolor(4)
    Case rlimen(5) To rlimen(6) - 1
      rng.Interior.Color = rcolor(5)
    Case rlimen(6) To rlimen(7) - 1
      rng.Interior.Color = rcolor(6)
    Case rlimen(7) To rlimen(8) - 1
      rng.Interior.Color = rcolor(7)
    Case rlimen(8) To rlimen(9) - 1
      rng.Interior.Color = rcolor(8)
    Case rlimen(9) To rlimen(10)
      rng.Interior.Color = rcolor(9)
    Case Else
      rng.Interior.Color = RGB(255, 255, 255)
    End Select
  Next
End Sub

こんな感じでだいぶスッキリします。
しきい値が(最大値-最小値)/10ならさらに短くなりますが・・・
・ツリー全体表示

【75100】Re:マクロで、セルに色をつけたいです。
お礼  しずか  - 13/12/11(水) 11:55 -

引用なし
パスワード
   本当にありがとうございます。
うまくできました!!

申し訳ありませんが、もうひとつ質問させてください。

範囲に名前をつけてこのマクロを動かしています。
別シートにも、同じ作業をする場所がありまして

色付範囲01
色付範囲02
 ・
 ・
 ・
といった具合になっております。
下記のように指定しているのですが、

  For Each rng In Range("色付範囲01")

シートを移るたびに、名前を指定しなおさなくてはなりません。

何かいい方法がありましたら、ご教授願えますでしょうか。
よろしくお願いいたします。
・ツリー全体表示

【75099】Re:添付ファイルのつけ方
発言  せんど  - 13/12/11(水) 10:35 -

引用なし
パスワード
   ▼γ さん:
>ht★tp://hardsoft.at.webry.info/201307/article_3.html
>などを見てもらうとわかりますが、
>元々、仕様(RFC2368)では添付ファイルの利用を認めていません。
>
>非公式で可能なものがあるそうですが、メールソフトは何ですか?
>試してみて下さい。成功する可能性は低いと思いますが。
>
>1) Excelから操作が可能なOutlookを利用して送信する。
>2) CDOを利用して送信する。
>などの方法を利用してはどうですか?


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

非公開なのですね‥
ちなみにメールはWindowsliveメールです。
・ツリー全体表示

【75098】Re:エクセルファイルのデスクトップへの...
質問  ggg  - 13/12/11(水) 7:01 -

引用なし
パスワード
   ▼γ さん:
>現在開いているファイルを移動することはできないと思います。

rさん:
早速のご回答ありがとうございました。
開いてるファイル移動不可能は理解してますがなぜ [a.xls]のイベントBeforeCloseが作動して[a.xls]が閉じないのでしょうか
なお当方が意図する処理を可能にするためにはコードのどこをどのようにすれば良いのかご教示頂ければ幸いに思います。
・ツリー全体表示

【75097】モジュールに書けるコードの最大行数、コ...
質問  あい  - 13/12/11(水) 6:48 -

引用なし
パスワード
   Excel 2003におきまして、一つのモジュールに書けるコードの最大行数は何行程度になりますでしょうか?

また、コードが一つのモジュールに収まらない場合、どのようにするとよろしいでしょうか?

よろしくお願いします。
・ツリー全体表示

【75096】Re:マクロで、セルに色をつけたいです。
お礼  しずか  - 13/12/10(火) 20:52 -

引用なし
パスワード
   ありがとうございます。
今日これから早速試してみたいと思います。

明日までには、結果を返信させていただきます。
本当にありがとうございました。
・ツリー全体表示

【75095】Re:エクセルファイルのデスクトップへの...
発言  γ  - 13/12/10(火) 19:48 -

引用なし
パスワード
   現在開いているファイルを移動することはできないと思います。
・ツリー全体表示

【75094】Re:添付ファイルのつけ方
発言  γ  - 13/12/10(火) 19:42 -

引用なし
パスワード
   ht★tp://hardsoft.at.webry.info/201307/article_3.html
などを見てもらうとわかりますが、
元々、仕様(RFC2368)では添付ファイルの利用を認めていません。

非公式で可能なものがあるそうですが、メールソフトは何ですか?
試してみて下さい。成功する可能性は低いと思いますが。

1) Excelから操作が可能なOutlookを利用して送信する。
2) CDOを利用して送信する。
などの方法を利用してはどうですか?
・ツリー全体表示

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