webクエリで情報を取得するマクロを作成する方法

このQ&Aのポイント
  • webクエリを使用して情報を取得するためのマクロを作成したい場合、以下の手順を実行します。
  • まず、Get開催コード生成という関数を作成します。この関数は指定した数値を使って開催コードを生成します。
  • 次に、URLの一部を置き換えるコードを記述し、設定した開催コードをURLに組み込んでいます。最後に、出馬表を取得するための関数を呼び出します。
回答を見る
  • ベストアンサー

webクエリで

少し判りにくいかもしれませんが webクエリで情報を取得するマクロを作ったのですが Sub テスト2() Const csCode As String = "URL;https://umanity.jp/racedata/race_7.php?code=XXXX" Dim strURL As String strURL = Get開催コード生成 strURL = Replace(csCode, "XXXX", strURL) Set出馬表取得 strURL Dim 処理前シート As Worksheet Dim 処理後シート As Worksheet Dim 元データ As Range Dim ws As Worksheet Set ws = ActiveSheet Set 処理前シート = ActiveSheet Set 処理後シート = Worksheets("テスト") Set 元データ = 処理前シート.UsedRange Function Get開催コード生成() As String Dim Y As String '年 Dim D As String '日付 Dim c As String '回 Dim A As String '場所 Dim T As String '日目 Dim r As String 'レース番号 With ThisWorkbook.ActiveSheet Y = Format(.Range("A2").Value, "0000") D = Format(.Range("B2").Value, "0000") A = Get場所コード(.Range("C2").Value) c = Format(.Range("D2").Value, "00") T = Format(.Range("E2").Value, "00") r = Format(.Range("F2").Value, "00") End With Get開催コード生成 = Y & D & A & c & T & r End Function 最後のRの部分の数字 例https://umanity.jp/racedata/race_7.php?code=2019042103010610の最後の10のところが指定した数値だけ増えていって取得できるようにしたいのですができますか 例えば指定した数値が3ならば https://umanity.jp/racedata/race_7.php?code=2019042103010610 https://umanity.jp/racedata/race_7.php?code=2019042103010611 https://umanity.jp/racedata/race_7.php?code=2019042103010612 みたいにできたらとおもっています なお数値の指定についてはG2でできたたらと思っています わかりにくくすいませんがよろしくおねがいします

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1604/2441)
回答No.4

同じ名前のFunctionがあれば…でるでしょ。

yama_8126
質問者

お礼

入力ミスでした 解決しましたありがとうございます

その他の回答 (3)

  • kkkkkm
  • ベストアンサー率65% (1604/2441)
回答No.3

> どこにNextを書けばよろしいでしょうか 出馬表を取得してその出馬表に対する一連の作業が終わった次の行です。 For i = 1 To Range("G2").Value strURL = Get開催コード生成(i) 出馬表を取得し一連の作業 next i

yama_8126
質問者

補足

Option Explicit Sub テスト2() Const csCode As String = "URL;https://umanity.jp/racedata/race_7.php?code=XXXX" Dim strURL As String Dim i As Integer For i = 1 To Range("G2").Value strURL = Get開催コード生成(i) strURL = Replace(csCode, "XXXX", strURL) Set出馬表取得 strURL Dim 処理前シート As Worksheet Dim 処理後シート As Worksheet Dim 元データ As Range Dim ws As Worksheet Set ws = ActiveSheet Set 処理前シート = ActiveSheet Set 処理後シート = Worksheets("テスト") Set 元データ = 処理前シート.UsedRange Dim 最終行 As Long Dim 開始行 As Long Dim r As Long Dim shp As Shape Dim 幅 As Boolean 幅 = Range("A1").ColumnWidth 開始行 = 元データ(1, 1).Row 最終行 = 元データ.Rows.Count + 開始行 'レース名取得 Dim レース名 As String For r = 開始行 To 最終行 If 元データ(r, 2).Value <> "" Then レース名 = 元データ(r, 2).Offset(2, 0) Exit For End If Next r '距離 Dim 距離 As String For r = 開始行 To 最終行 If 元データ(r, 2).Value <> "" Then 距離 = 元データ(r, 3).Offset(4, -1) Exit For End If Next r '馬情報開始行取得 Dim 馬情報行 As Long For r = 開始行 To 最終行 If 元データ(r, 6) <> "" Then 馬情報行 = r + 2 Exit For End If Next r 'レース内容取得と書き出し Dim 馬名, 性齢毛色, 斤量, 調教師, 父馬名, 母馬名, 負担重量, 所属, 戦績, 収得賞金 Dim cnt As Long cnt = 1 For r = 馬情報行 To 最終行 If 元データ(r, 6) <> "" Then cnt = cnt + 1 'カウンタ 'データ取得 性齢毛色 = 元データ(r, 6).Value 斤量 = 元データ(r, 3).Value 調教師 = 元データ(r, 4).Value 馬名 = 元データ(r, 5).Value 母馬名 = 元データ(r, 6).Value 負担重量 = 元データ(r, 7).Value 調教師 = 元データ(r, 8).Value 戦績 = 元データ(r, 10).Value 収得賞金 = 元データ(r, 11).Value 父馬名 = 元データ(r, 12).Value 母馬名 = 元データ(r, 13).Value '******************************* 'この間はご自身で考えてコードを追加してください '******************************* 'データ書き出し 処理後シート.Cells(cnt, 3) = 馬名 処理後シート.Cells(cnt, 4) = 性齢毛色 処理後シート.Cells(cnt, 5) = 負担重量 処理後シート.Cells(cnt, 6) = 調教師 処理後シート.Cells(cnt, 7) = 戦績 処理後シート.Cells(cnt, 8) = 収得賞金 処理後シート.Cells(cnt, 9) = 父馬名 処理後シート.Cells(cnt, 10) = 母馬名 '元データシート削除 '******************************* 'マクロの記録で記録されたコードを追加 '******************************* End If Next r Range("A15:AB222").Select Selection.ClearContents Cells.UseStandardWidth = 幅 Sheets("元").Select Range("A1:G2").Select Selection.Copy ws.Select Range("A1").Select ActiveSheet.Paste Application.CutCopyMode = False Next End Sub Function Get開催コード生成(ByVal i As Integer) As String Dim Y As String '年 Dim D As String '日付 Dim c As String '回 Dim A As String '場所 Dim T As String '日目 Dim r As String 'レース番号 With ThisWorkbook.ActiveSheet Y = Format(.Range("A2").Value, "0000") D = Format(.Range("B2").Value, "0000") A = Get場所コード(.Range("C2").Value) c = Format(.Range("D2").Value, "00") T = Format(.Range("E2").Value, "00") r = Format(.Range("F2").Value + i - 1, "00") End With Get開催コード生成 = Y & D & A & c & T & r End Function Function Get開催コード生成(ByVal i As Integer) As String Dim s As String Select Case 場所 Case "東京": s = "05" Case "中山": s = "06" Case "中京": s = "07" Case "京都": s = "08" End Select Get場所コード = s End Function でGet開催コード生成の名前が適切ではありませんと出ます

  • kkkkkm
  • ベストアンサー率65% (1604/2441)
回答No.2

必要なところだけこんな感じ Dim i As Integer for i=1 to range("G2").value strURL = Get開催コード生成(i) next Function Get開催コード生成(ByVal i As Integer) As String : : r = Format(.Range("F2").Value+i-1, "00") End With Get開催コード生成 = Y & D & A & c & T & r End Function

yama_8126
質問者

補足

一応 Sub テスト2() Const csCode As String = "URL;https://umanity.jp/racedata/race_7.php?code=XXXX" Dim strURL As String Dim i As Integer For i = 1 To Range("G2").Value strURL = Get開催コード生成(i) strURL = Replace(csCode, "XXXX", strURL) Set出馬表取得 strURL Dim 処理前シート As Worksheet Dim 処理後シート As Worksheet Dim 元データ As Range Dim ws As Worksheet Set ws = ActiveSheet Set 処理前シート = ActiveSheet Set 処理後シート = Worksheets("テスト") Set 元データ = 処理前シート.UsedRange Dim 最終行 As Long Dim 開始行 As Long Dim r As Long Dim shp As Shape 開始行 = 元データ(1, 1).Row 最終行 = 元データ.Rows.Count + 開始行 'レース名取得 Dim レース名 As String For r = 開始行 To 最終行 If 元データ(r, 2).Value <> "" Then レース名 = 元データ(r, 2).Offset(2, 0) Exit For End If Next r '距離 Dim 距離 As String For r = 開始行 To 最終行 If 元データ(r, 2).Value <> "" Then 距離 = 元データ(r, 3).Offset(4, -1) Exit For End If Next r '馬情報開始行取得 Dim 馬情報行 As Long For r = 開始行 To 最終行 If 元データ(r, 6) <> "" Then 馬情報行 = r + 2 Exit For End If Next r 'レース内容取得と書き出し Dim 馬名, 性齢毛色, 斤量, 調教師, 父馬名, 母馬名, 負担重量, 所属, 戦績, 収得賞金 Dim cnt As Long cnt = 1 For r = 馬情報行 To 最終行 If 元データ(r, 6) <> "" Then cnt = cnt + 1 'カウンタ 'データ取得 性齢毛色 = 元データ(r, 6).Value 斤量 = 元データ(r, 3).Value 調教師 = 元データ(r, 4).Value 馬名 = 元データ(r, 5).Value 母馬名 = 元データ(r, 6).Value 負担重量 = 元データ(r, 7).Value 調教師 = 元データ(r, 8).Value 戦績 = 元データ(r, 10).Value 収得賞金 = 元データ(r, 11).Value 父馬名 = 元データ(r, 12).Value 母馬名 = 元データ(r, 13).Value '******************************* 'この間はご自身で考えてコードを追加してください '******************************* 'データ書き出し 処理後シート.Cells(cnt, 3) = 馬名 処理後シート.Cells(cnt, 4) = 性齢毛色 処理後シート.Cells(cnt, 5) = 負担重量 処理後シート.Cells(cnt, 6) = 調教師 処理後シート.Cells(cnt, 7) = 戦績 処理後シート.Cells(cnt, 8) = 収得賞金 処理後シート.Cells(cnt, 9) = 父馬名 処理後シート.Cells(cnt, 10) = 母馬名 '元データシート削除 '******************************* 'マクロの記録で記録されたコードを追加 '******************************* End If Next r Range("A15:AB222").Select Selection.ClearContents End Sub と変えましたがNextがないと出ます どこにNextを書けばよろしいでしょうか

  • kkkkkm
  • ベストアンサー率65% (1604/2441)
回答No.1

for i=1 to range("G2").value With ThisWorkbook.ActiveSheet : : r = Format(.Range("F2").Value+i-1, "00") Get開催コード生成(i-1) = Y & D & A & c & T & r End With next とか。

yama_8126
質問者

補足

ありがとうございます良ければコード全体を書いていただければ助かるのですが

関連するQ&A

  • エクセルで100以上のシートからデータを読み込むのに時間がかかり困っています

    エクセル2003でAuto_Open時にデータの更新をしてみましたが、一々画面を読んでしまい時間がかかってしまいます。 まだコードがよく理解できていませんので、どなたかよい方法を教えてください。 コードは以下のようです。 シートは180あり、一覧表にシート名の表を作りました。 よろしくお願いします。 Sub Auto_Open() 'シートオープンで一覧表のデータ更新 '変数の宣言 Dim MyDA As Integer Dim MyDB As String Dim MyDC As String Dim MyDD As String Dim MyDE As String Dim MyDF As String Dim MyDG As String Dim MyDH As String Dim MyDI As String Dim MyDJ As String Dim MyDK As String For MyDA = 3 To 173 '一覧表を呼びシート名の代入 Worksheets("一覧表").Activate MyDB = Range("T" & MyDA).Value '必要なデータの代入 Worksheets(MyDB).Activate MyDC = Range("J3").Value MyDD = Range("J4").Value MyDE = Range("B6").Value MyDF = Range("F6").Value MyDG = Range("K6").Value MyDH = Range("C9").Value MyDI = Range("B8").Value If MyDI = "" Then MyDI = "-" End If MyDJ = Range("F8").Value If MyDJ = "" Then MyDJ = "-" End If MyDK = Range("K8").Value If MyDK = "" Then MyDK = "-" End If Sheets("一覧表").Activate Range("B" & MyDA) = MyDC Range("C" & MyDA) = MyDD Range("D" & MyDA) = MyDE Range("E" & MyDA) = MyDF Range("F" & MyDA) = MyDG Range("G" & MyDA) = MyDH Range("H" & MyDA) = MyDI Range("I" & MyDA) = MyDJ Range("J" & MyDA) = MyDK Next MyDA End Sub

  • Excel VBAでセルに書いた時刻を取得したいのに・・・

    ExcelのVBAで、OnTimeを使い、 定時に印刷させるプログラムを組んでいます。 今までOnTimeの時刻設定に直接時刻を入れ込んでいたのですが、 ワークシートに登録した時刻を使うようにしたいと思い、 次のようにしたのですが、 Setのところの変数名で「オブジェクトが必要です」エラーが出ます。 ・・・何が悪いのでしょうか? Dim routinetime1 As String Dim routinetime2 As String Dim routinetime3 As String Set routinetime1 = Range("A1").Value Set routinetime2 = Range("B2").Value Set routinetime3 = Range("C3").Value Application.OnTime TimeValue(routinetime1), "印刷プロシージャ" Application.OnTime TimeValue(routinetime2), "印刷プロシージャ" Application.OnTime TimeValue(routinetime3), "印刷プロシージャ" よろしくお願いいたします。

  • マクロ Outlook送信メールにエクセルの表を貼り付ける方法

    こんにちは。 送りたいメールの形は 数行の文章のあとに、表を貼り付け、また数行の文章という形式です。 Outlookメールでメールを立ち上げて Comment1と2は文章ですのでエクセルのコラムを引っ張ってくるようにしているのですが、 Comment3部分に別のエクセルにある表をメタ貼りし、Comment4でまた文書を引っ張ってくるとさせたいのですが Comment3部分の動きが出来ません。 Dim OlApp As Outlook.Application Dim mItem As Outlook.MailItem Dim cell As Range Dim Subj As String Dim EmailAddr As String Dim Recipient As String Dim Msg As String Dim Message As String Dim Sender As String Dim Comments As String Dim Comments2 As String Dim report As String '日付の設定 DMY = Range("b_date") DM = Format(Range("b_date").Value, "mmdd") Worksheets("mail").Activate 'Create Outlook object Set OutlookApp = New Outlook.Application 'Get the data Subj = Range("B69") & "_" & DM EmailAddr = Range("B63") CCAddr = Range("B66") Comment1 = Range("H63").Value Comment2 = Range("H65").Value Comment3 = この辺りがわかりません Comment4 =Range("H67").Value 'Compose message Msg = "<font face=""Arial""><font size=2>" Msg = Msg & Comment1 & "<BR><BR><BR>" Msg = Msg & Comment2 & "<BR><BR><BR>" Msg = Msg & Comment3 & "<BR><BR><BR>" Msg = Comment4 & "<BR><BR><BR><BR>" Msg = Msg & "Best regards," & "<BR><BR>" Msg = Msg & "</font></font>" 'Create Mail Item Set mItem = OutlookApp.CreateItem(olMailItem) With mItem .To = EmailAddr .CC = CCAddr .BCC = BCCAddr .Subject = Subj .HTMLBody = Msg .Display End With End Sub どなたかご存知ではないでしょうか? 毎回で申し訳ございませんが、どうぞ宜しくお願い致します。

  • ExcelのVBAについて(勉強中のです。)

    ExcelのVBAについて(勉強中のです。) ここからコード3以降に入力したコードを抜き出してデータ表を作成しそれを保存するコードを作成したいです。例えばCSV形式にするとか? データ表は1日分の表示で、保存して週間や月間または統計データまでを視野にいれています。今回は保存する所です。。 利用しやすい状態と保存形式で、よろしくお願いします。データは生活記録みたいなものです。何したどうしたどうなった? ※大分分岐する予定で、作成中であり、今回はコードの整理は不要です。 '///Sheet1/// Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim time7 As Range For Each time7 In Target If time7.Column = 1 Then time7.Offset(0, 4).Value = Format(Now, "Short Time") & vbCrLf & _ Format(Now, "yyyy/mm/dd hh:nn:ss AM/PM") End If Application.EnableEvents = False Application.EnableEvents = True Next time7 '(1)シートを変数にセット Dim ws1 As Worksheet Dim ws2 As Worksheet Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") '(2)シートを指定してデータを転記 ws2.Range("A3:H3").Value = ws1.Range("A3:H3 ").Value End Sub Private Sub Worksheet_Activate() ' ' 新規行挿入 ' ' Worksheets("Sheet2").Range("3:3").Insert Sheets("Sheet1").Range("H3").Select ActiveCell.FormulaR1C1 = "5" Sheets("Sheet1").Range("E3").Select Selection.ClearContents Dim str_Left As String 'セルE4に文字列、セルH4に数字を予め入れておくこと。 str_Left = Left(Cells(4, 5), Cells(4, 8)) MsgBox str_Left & vbCrLf & " " & "OKボタンを押してください!" Sheets("Sheet1").Range("A3").Select Dim se_r As String se_r = Application.InputBox("バーコードを入力してください") Select Case se_r Case "False" MsgBox "キャンセルされました" Case "" MsgBox "空欄が入力されました" Case Else Range("A3").Value = se_r End Select End Sub ' ///Sheet2/// Private Sub Worksheet_Activate() Dim Emp(1 To 300) As String Dim msg As String Dim i, i2, Cnt As Integer Dim N_In As Variant For i = 3 To 3 If IsEmpty(Cells(i, 1).Value) = False Then 'ここで空欄判定 Worksheets("Sheet1").Range("3:3").Insert '対象セルアドレスを改行処理 End If Next i '(1)シートを変数にセット Dim ws1 As Worksheet Dim ws2 As Worksheet Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") ws1.Activate End Sub

  • VBA 変数Variantは万能??

    エクセル2002使用です。 A1セル  日付入力(ex.2005/7/25) A2セル  A1セルから月のみワークシート関数で取得 =month(A1) A3セル  日付入力 '12ヶ月分(ex.2005/7/25~2006/6/25) A4セル  A3セルから月のみワークシート関数で取得 =month(A3) ’12ヶ月分 3行目、4行には12ヶ月分AからL列に同じ設定があります。 (この質問にはあまり関係ないですが・・・) A7セルにA2の値を参照して入力のため sub test() Dim Myrg as variant ’またはstring、Duble Set Myrg = Range("A4:L4") _ .Find(what:=range("A2").value, lookat:=xlWhole) range("A7").value = myrg end sub とすると、Myrgはemptyのままで数値を拾ってくれません。 A2セルとA4~L4セルをA5セルA6~L6セルにフォーマットして sub test() Dim Myrg as variant ’またはstring、Duble  Range("A5").Value = Format(Range("A2").Value, "##")  Range("A6").Value = Format(Range("A4").Value, "##")  Range("B6").Value = Format(Range("B4").Value, "##")   ’(以下12ヶ月分フォーマット) Set Myrg = Range("A6:L6") _ .Find(what:=range("A5").value, lookat:=xlWhole) range("A7").value = myrg end sub とするとちゃんと数値を拾ってくれます。 分からないのは、  1.変数variantは、万能ではないのでしょうか?  2.ワークシート関数で得た数値はすべて一度フォーマットする必要があるのでしょうか?    フォーマットしない良い方法はあるのでしょうか? ちなみにキーボードから入力した数値もちゃんと拾ってくれます。 詳しい原因がわからないのでよろしくお願いします。

  • ExcelVBA Accessにデータ書き込み

    VBAでコマンドボタンを押した際に特定のセルの値をAccessDBに入力するプログラムを作りたいのですが、上手くいきません...。 実行した際に「実行時エラー '21472179000 (80040e 14)': オートメーションエラーです。」と表示されます。 また、ステップインで実行してみるとEnd Withのところでエラーが発生します。 恐らくインサート文が間違っていると思うのですが、試行錯誤しても解決できませんでしたので教えて頂きたいです。 以下プログラムです。 Private Sub CommandButton1_Click() Dim cn As ADODB.Connection Dim cmd As ADODB.Command Dim rs As ADODB.Recordset Dim constr As String Dim strSQL1 As String Dim a As String a = Range("A1").Value Dim b As String b = Range("A2").Value Dim c As String c = Range("A3").Value constr = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=~.accdb strSQL1 = "insert into " & _ "TableName (1,2,3) " & _ "values ('" + Range("A1").Value + "','" + Range("A2").Value + "','" + Range("A3").Value + "')" Set cn = New ADODB.Connection cn.ConnectionString = constr cn.Open Set cmd = New ADODB.Command With cmd .ActiveConnection = cn .CommandText = strSQL1 .Execute End With Set cmd = Nothing Set rs = Nothing cn.Close Set cn = Nothing End Sub 以上、宜しくお願い致します。

  • メールにファイルを添付する or メールに表を貼り付ける マクロ

    こんにちは。 同じ質問を一週間ほど前にしたのですが、その後もわかっていなくて、どなたかご存知の方がいらっしゃればご教示いただけないでしょうか? 宜しくお願い致します。 送りたいメールの形は 数行の文章のあとに、表を貼り付け、また数行の文章という形式です。 Outlookメールでメールを立ち上げて Comment1と2は文章ですのでエクセルのコラムを引っ張ってくるようにしているのですが、 Comment3部分に別のエクセルにある表をメタ貼りし、Comment4でまた文書を引っ張ってくるとさせたいのですが Comment3部分の動きが出来ません。 Dim OlApp As Outlook.Application Dim mItem As Outlook.MailItem Dim cell As Range Dim Subj As String Dim EmailAddr As String Dim Recipient As String Dim Msg As String Dim Message As String Dim Sender As String Dim Comments As String Dim Comments2 As String Dim report As String ’日付の設定 DMY = Range("b_date") DM = Format(Range("b_date").Value, "mmdd") Worksheets("mail").Activate 'Create Outlook object Set OutlookApp = New Outlook.Application 'Get the data Subj = Range("B69") & "_" & DM EmailAddr = Range("B63") CCAddr = Range("B66") Comment1 = Range("H63").Value Comment2 = Range("H65").Value Comment3 = この辺りがわかりません Comment4 =Range("H67").Value 'Compose message Msg = "<font face=""Arial""><font size=2>" Msg = Msg & Comment1 & "<BR><BR><BR>" Msg = Msg & Comment2 & "<BR><BR><BR>" Msg = Msg & Comment3 & "<BR><BR><BR>" Msg = Comment4 & "<BR><BR><BR><BR>" Msg = Msg & "Best regards," & "<BR><BR>" Msg = Msg & "</font></font>" 'Create Mail Item Set mItem = OutlookApp.CreateItem(olMailItem) With mItem .To = EmailAddr .CC = CCAddr .BCC = BCCAddr .Subject = Subj .HTMLBody = Msg .Display End With End Sub もしくは、貼り付けるのではなく、Rドライブに保存したファイル(表が記載してあるもの)を添付するという形式でも構いません。 宜しくお願い致します。

  • エクセルVBAでメール本文中に画像を挿入する方法

    エクセルVBAを使ってアウトルックメールにてメール送信するマクロを作っています。 本文中に画像を挿入する方法をググってますがなかなか出てきません。添付ファイルではなく、本文と本文の間に画像を差し込むイメージです。 メール送信先、本文は同じエクセルのContentsシート、画像はPictシートに格納しています。 Option Explicit Sub SendMail_HTML() Dim contents As Worksheet Dim maillist As Worksheet Dim mailaddress As String, honbun1 As String, honbun2 As String, mailbody As String, strstyle As String Dim i As Long Set contents = ThisWorkbook.Worksheets("Contents") Set maillist = ThisWorkbook.Worksheets("List") ' Picture Dim pict_sheet As Worksheet Set pict_sheet = ThisWorkbook.Worksheets("pict_sheet") 'プログラム3|Outlookアプリケーションを起動 Dim outlookObj As Outlook.Application Dim myMail As Outlook.MailItem Set outlookObj = CreateObject("Outlook.Application") For i = 2 To 3 ' Email and name setting from Content Sheet client_name = maillist.Range("B" & i).Value mailaddress = maillist.Range("C" & i).Value Set myMail = outlookObj.CreateItem(olMailItem) 'Mail content setting myMail.BodyFormat = 2 myMail.To = mailaddress myMail.Subject = contents.Range("B3").Value honbun1 = Replace(contents.Range("B6").Value, vbLf, "<br>") Dim insp As Outlook.Inspector Set insp = myMail.GetInspector If insp.EditorType = olEditorWord Then Dim doc As Word.Document 'Microsoft Wordを参照 Set doc = insp.WordEditor Dim wrange As Word.Range Set wrange = doc.Range(0, 0) 'カーソルを先頭に 'wrange.Text = honbun1 wrange.MoveEnd Word.WdUnits.wdStory 'カーソルを最後に wrange.Start = wrange.End pict_sheet.Shapes("pict1").Copy 'Pict sheetに入っているpict1を指定 wrange.Paste End If honbun2 = Replace(contents.Range("B8").Value, vbLf, "<br>") myMail.HTMLBody = honbun1 & hoonbun2 myMail.Display 'Send mail 'mymail.Display 'メール表示(ここでは誤送信を防ぐために表示だけにして、メール送信はしない) myMail.Save '下書き保存 myMail.Send maillist.Range("D" & i).Value = "Sent:" & Now() ' Release object Set myMail = Nothing Next 'プログラム12|オブジェクト解放 Set myMail = Nothing Set outlookObj = Nothing End Sub

  • Excel2007 マクロ 複数シートの作成

    Excel2007 マクロ 複数シートの作成 1つのファイルにtempシートとDataシートがあります。 DataシートのNo順にシートをコピーしていきます。 シートのコピーはうまくいきました。 Dataシートの情報(会社名、担当者名)を反映したいのですが うまく反映しません。 自分が作成したマクロを下記に記載いたします。 Sub CreateSheet() Dim lnFm As Long Dim lnFmMx As Long Dim st As String Dim shFm As Worksheet Dim shTo As Worksheet Set shFm = Worksheets("Data") lnFmMx = shFm.Range("B65536").End(xlUp).Row Dim Into As Long For lnFm = 2 To lnFmMx If st <> shFm.Range("B" & lnFm).Value Then st = shFm.Range("B" & lnFm).Value Sheets("temp").Copy After:=Sheets(2) Set shTo = ActiveSheet shTo.Name = st Into = 1 End If shTo.Range("B1" & Into).Value = shFm.Range("B2" & lnFm).Value shTo.Range("B2" & Into).Value = shFm.Range("C2" & lnFm).Value Next shFm.Activate End Sub 下記2行が違うと思うのですが、修正箇所が分かりません。 shTo.Range("B1" & Into).Value = shFm.Range("B2" & lnFm).Value shTo.Range("B2" & Into).Value = shFm.Range("C2" & lnFm).Value また実際のNo数は50ぐらいあります。 アドバイス頂けますでしょうか。

  • ExcelでGoogleマップを表示する

    http://news.mynavi.jp/articles/2012/04/24/excelvba/index.html このページのものを参考にして、地図を表示させ、マーカーを表示させるところまではうまくいきましたが、マーカーが一つしか表示されず、2行目までの住所を同時に表示させることができません。 どなたか、回答よろしくお願いします。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Cancel = True Dim xhr As New MSXML2.XMLHTTP Dim tmp As New MSXML2.DOMDocument Dim geo As MSXML2.IXMLDOMNodeList Dim loc As MSXML2.IXMLDOMNode Dim addr As String Dim url As String Dim js As Object Dim coordtmp() As String Dim coord As String Set js = CreateObject("ScriptControl") js.Language = "JScript" addr = js.CodeObject.encodeURIComponent(Target) If addr = "undefined" Then Set js = Nothing: Exit Sub Set js = Nothing '(1)URLエンコードした住所から、ジオコーディングのリクエストを送信する url = "http://maps.google.com/maps/api/geocode/xml?sensor=false&address=" & addr xhr.Open "POST", url, False xhr.send If xhr.StatusText <> "OK" Then Exit Sub '(2)レスポンスから緯度・経度を取り出し、Sheet2の該当セルに設定する tmp.LoadXML (xhr.responseText) Set geo = tmp.getElementsByTagName("geometry") Set loc = geo(0).FirstChild Set xhr = Nothing Sheet2.Range("latitude") = loc.FirstChild.Text Sheet2.Range("longitude") = loc.LastChild.Text Sheet2.Range("targetname") = Target.Offset(0, -2).Value '追加 '(3)地図を描く RedrawMap End Sub Sub RedrawMap() Dim url As String Dim s As String Dim strType As String s = Sheet2.Range("latitude") & "," & Sheet2.Range("longitude") url = "http://maps.google.com/maps/api/staticmap?size=512x512&sensor=false" url = url & "&center=" & s url = url & "&zoom=" & Sheet2.Range("zoom") url = url & "&markers=color:blue%7Clabel:" & Sheet2.Range("targetname") url = url & "%7C" & s If Sheet2.Range("roadmap") Then strType = "roadmap" If Sheet2.Range("satellite") Then strType = "satellite" If Sheet2.Range("terrain") Then strType = "terrain" If Sheet2.Range("hybrid") Then strType = "hybrid" url = url & "&maptype=" & strType Sheet1.WebBrowser1.Navigate url End Sub

専門家に質問してみよう