Excel VBAからオブジェクト描画でOutlookの予定表をExcelに転記する方法について相談

このQ&Aのポイント
  • Outlookで管理している予定表をExcelに転記する方法について、Excel VBAを使用してオブジェクト描画を行い、AMとPMの情報を視覚的にわかりやすく表示する方法を探しています。OutlookでエクスポートしたデータをExcelに取り込み、AMとPMの文字情報に合わせてAMセルとPMセルにオブジェクトを貼り付けるマクロを作成したいと思っています。
  • 現在、Outlookで管理している予定表をExcelに転記していますが、AMとPMの情報を視覚的にわかりやすく表示するためにオブジェクトを使用したいと考えています。OutlookでエクスポートしたデータをExcelに取り込んだ後、AMセルとPMセルにオブジェクトを貼り付けるマクロをExcel VBAで作成する方法を教えてください。
  • Outlookで管理している予定表をExcelに転記する方法について相談です。OutlookでエクスポートしたデータをExcelに取り込み、AMとPMの文字情報に合わせてAMセルとPMセルにオブジェクトを貼り付けるマクロを作成したいと思っています。Excel VBAを使用してオブジェクト描画を行う方法に詳しい方、ご教示いただけないでしょうか?
回答を見る
  • ベストアンサー

Excel VBAからオブジェクト描画

Outlookで管理している予定表を、諸事情から最終的にはExcelに落とさざるをえないので 相談にのっていただきたく投稿します。 場所 月日 午前/午後 --------------------- 1 7/1 AM○/PM 2 7/3 AM /PM○ というようなごく大まかなもので、 AM/PMのところに○の描画オブジェクトをかぶせています。 ただ文字でAM、PMと書くほうが簡単なのですが、 視覚的にわかりやすいのでこのようにすることになっています。 変更があったときなど、Outlookで直してからExcelの表を作り直すのが煩雑です。 OutlookでエクスポートしたデータをExcelにとりこみ、 場所 月日 開始時刻 --------------------- 1 7/1 AM 2 7/3 PM とするところまではできたのですが、このAM、PMという文字情報にあわせて AMセル、PMセルに○オブジェクトを貼り付けるようなマクロはできないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

所定の文字が記入されたセルを調べ,そのセルの大きさに合わせて(若しくは所定のサイズの)円を描きます。 >このAM、PMという文字情報にあわせて >AMセル、PMセルに○オブジェクトを貼り付ける 作成例: Sub macro1()  Dim s As Shape  Dim h As Range  Dim p As String  Dim a, i  a = Array("AM", "PM")  ’activesheet.drawingobjects.delete ’必要に応じて調整  For i = 0 To 1   Set h = Cells.Find(what:=a(i), LookIn:=xlValues, lookat:=xlWhole)   If Not h Is Nothing Then    p = h.Address    Do        ’必要に応じて丸の位置・サイズを調整     With ActiveSheet.Shapes.AddShape(msoShapeOval, h.Left + 10, h.Top + 3, h.Width - 20, h.Height - 6)      .Fill.Visible = False      .Line.Weight = 1     End With     Set h = Cells.FindNext(h)    Loop Until p = h.Address   End If  Next i End Sub #実際にはご質問に書いてない色々細々した部分で,何かと調整等が必要と思われます。  サンプルマクロを下敷きにして,必要な部分をご自分で手直してご利用下さい。

hzd00430
質問者

お礼

AddShapeメソッドと、特定セルの座標の得方を参考に、 目的のマクロを組むことができました。 ありがとうございました。

関連するQ&A

  • エクセルの図形描画で?

    Excel2003を使用しています。 セルに文字や数字を入力し、「図形描画」で○や□の線で囲むと文字や数字が隠れてしまいます。 図形描画で書いたオブジェクト(○や□)を背面へ移動するという操作をしても文字や数字が現れて来ません、操作方法を教えて下さい。

  • エクセルの図形描画のこと

    エクセルのあるシートに、オートシェイプの図形とテキストボックスの文字が無数に描画してあります。これらを全てまとめて、"セルに合わせて移動やサイズ変更をしない"に一括変更するにはどうすればいいでしょうか? 対象オブジェクトを全てセレクト状態にしてから、マウス右クリックで"オブジェクトの書式設定"を選択してみると、対象が多すぎるようで書式設定ウインドウが出てきませんでした。

  • EXCEL オブジェクト 

    EXCELで工程表を作成してます。オブジェクトの直線や直線コネクタを描く際、特定のセル上の部分のみ自動的に破線に替えるような設定はできるのでしょうか。

  • エクセル オブジェクト間にリンク設定できる?(2)

    ※同じタイトルで投稿しましたが、画像を添付しそこなったので再投稿失礼します。 エクセルで、例えば、 図形描画ツールで描いた○をクリックすると、 同じく図形描画ツールで描いた□へジャンプする といったリンク設定はできるのでしょうか。 オブジェクトをクリックすると特定のセルにジャンプする方法は解るのですが、 列や行を挿入すると、ジャンプ先がどんどんずれていってしまうので、 以上のような方法ができないかなと思っています。 ※列や行を挿入しても、ジャンプ先がずれないような方法がもし他にあれば、 その方法でも構いませんので教えてください。 -----画像の説明 (1)こういう表があるとします (2)上のリンクボタンの「上田」をクリックすると、表が(2)のような感じに   表示されるよう、リンクを設定したい。   (↑ここまでのやり方は解っています) (3)でも例えば、安部さんの所に1行挿入すると (4)のように、「上田」さんへのリンクが上にずれてしまう。 これを回避したいわけです。 つまり、行や列をいくら挿入しても、(2)のように表示されるように したい、ということです。 「オブジェクト間にリンク設定できる?」というタイトルにしましたが、 リンクがずれなければ、設定するリンクは、 「オブジェクトとセル」の間でも、「セルとセル」の間でもOKです。

  • ワードのオブジェクトの動き方

    ワード文書で文字上に「〇」印や「レ」チェックマークなどを描画した場合、 ・描画したオブジェクトが文字上をカクカク動いて表示したい場所に置けません。  どうすれば滑らかに動くよう設定できますか? ・描画したオブジェクトを動かすと文字が動きます(避けます)。  どうすれば文字と無関係に動かせますか?  これはオートシェイプの書式設定でレイアウトを"前面"に設定してもなります。 よろしくお願いいたします。

  • 2007EXCEL 数字の置換

    EXCELで予定表を作成しています。 例 セルに8:30~○○とあります。 この"8:30"の部分を"AM"を置き換えることは可能でしょうか? "8:30"だけでなく"9:00"や"11:00"も同様に"AM" 8:30~11:00の間をAM 13:00~18:00の間をPM と置き換えたいです。 ご教授願います。

  • エクセルマクロを使ったオブジェクトの作り方

    エクセルのマクロを使って、自動的にセルの内容をオブジェクト(図形)に入れていきたいです。 (オブジェクトは随時新規作成) 例えば、セルのA1からA3に、”あ”、”い”、”う”が記入してあるとすると、 図形が3個作成されて、図形にはそれぞれ文字が記入されている。 という感じに作りたいのですが、できますか? 誰か教えてください><

  • アウトルックからエクセルへエクスポートすると

    アウトルックからエクセルへエクスポートするとセルの文字の頭に′が付きますが、これは何故ですか? 何か意味があるのですか? またこれを無くすにはどうすればいいでしょうか?

  • エクセル2007 VBAでアウトルック2007の予定表を作るんですが、

    エクセル2007 VBAでアウトルック2007の予定表を作るんですが、 日付まではうまくいったのに開始時刻が指定できません。 エクセルでのファイルを保存した後にそのファイルを添付したアウトルック予定表を作成します。 予定日は3ヶ月後、開始時刻は8:30amにしたいのですが、どうにも開始時刻だけが指定できません。 なにかいい方法があるでしょうか? こちらを参考に途中までは出来ています。 http://www.ken3.org/cgi-bin/group/vba_outlook.asp ただし、予定表の開始時刻が0:00となっているので、ここを8時30分にしたいのです。 (終了時間はあまり気にしません) そもそも出来ないのかな? コードは下記です。 Sub 保存() '保存コード省略 Flnm=フォルダとファイル名 'ここからアウトルックの操作 Dim oApp As Object Dim myNameSpace As Object Dim myFolder As Object Dim strMOJI As String Dim objITEM As Object 'outlook 起動 Set oApp = CreateObject("Outlook.Application") Set myNameSpace = oApp.GetNamespace("MAPI") Set myFolder = myNameSpace.GetDefaultFolder(9) '起動時フォルダーを指定 myFolder.Display 'アイテムの作成 Set objITEM = oApp.CreateItem(1) '予定表作成画面を指定 objITEM.Display '編集画面を表示 '予定表内容 objITEM.Subject = "見積り発行後のフォロー" '件名 objITEM.body = "見積り発行から3ヶ月経ちました" '本文 objITEM.Attachments.Add Flnm 'ファイルの添付 objITEM.Start = DateAdd("m", 3, Date) '予定日 'ここらへんがわからない        '開始時間も入れたい 'objITEM.Save                 '保存 'objITEM.Close 2                  '閉じる End Sub 開始時刻以外はすべてうまく処理出来ています。

  • エクセルでオブジェクトの表の列数を変えたい

    エクセルで、オブジェクトとしてワークシートを挿入しました。 セルの中に表が入っている状態です。 リンクは外していたと思います。 この表の行数を増やしたいのですが、 何か良い方法はないでしょうか。

専門家に質問してみよう