Excel VBA質問箱 IV

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

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


55147 / 76732 ←次へ | 前へ→

【26364】Re:シートの内容を読み込んでくれるコン...
発言  q- -p  - 05/7/2(土) 18:42 -

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

>データソースとして、あるブックのシートを指定することで、そのシートの内容を
>表示してくれるコントロール。
はないと思います。XL2000では。
「MicrosoftOfficeSpreadsheet10.0」だとデータソースにExcelFilesがあるようです。

(〜10.0は、詳しくないので他にわかる方いらっしゃったらお願いします)

>>Spreadsheetでのやり方
>の始末をつけたほうがいいのかなと思ったもので。

拙いコード&無駄な記述がありますが、サンプルとして。

準備1)Sheetを追加して名前を HTMLIST としてください。
準備2)参照したいブック名やシート名を下記の要領で入力してください。
入力範囲はA2:E?になります。
フルパスの最後には \ をつけてください。
・・(VBAでウィザード的処理も可能ですが、とりあえずサンプルなので)

    A    B    C    D    E
1    参照先フルパス    ブック名    シート名    htm保存先    htmファイル名
2    C:\TEMP\    TEST1.xls    Sheet1    C:\TEMP\    適当1
3    C:\TEMP\    TEST2.xls    テスト    C:\TEMP\    適当2

あとは下記コードを標準モジュールにコピー&ペーストして、
貼り付けたいシートを選択して、マクロ実行してみてください。

Sub サンプル()
  Dim Rn As Long, i As Long
  Dim myVal As Variant
  Dim myWb As Workbook
  Application.ScreenUpdating = 0
  'ActiveSheet.OLEObjects.Delete '他にOLEObjectがない場合のみコメントイン
  With ThisWorkbook.Worksheets("HTMLIST")
    Rn = .Cells(Rows.Count, 1).End(xlUp).Row
    If Rn < 2 Then Exit Sub
    myVal = Range(.Cells(2, 1), .Cells(Rn, 5)).Value
  End With
  For i = 1 To Rn - 1
    On Error Resume Next
    Set myWb = Workbooks(myVal(i, 2))
    On Error GoTo 0
    If myWb Is Nothing Then
      Workbooks.Open myVal(i, 1) & myVal(i, 2)
      Set myWb = Workbooks(myVal(i, 2))
    End If
    myWb.PublishObjects.Add(xlSourceSheet, myVal(i, 4) & myVal(i, 5), _
      myVal(i, 3), "", xlHtmlStatic, "", "").Publish (True)
    myWb.Close (0)
    Set myWb = Nothing
    With ActiveSheet.OLEObjects.Add(ClassType:="OWC.Spreadsheet.9", _
      Link:=False, DisplayAsIcon:=False, _
      Left:=500, Top:=110 * i - 100, Width:=200, Height:=100).Object
      .HTMLURL = myVal(i, 4) & myVal(i, 5)
      .DisplayTitleBar = 0
      .DisplayToolbar = 0
    End With
  Next
  Application.ScreenUpdating = 1
  On Error Resume Next '※
  ActiveSheet.Previous.Select '※
  ActiveSheet.Next.Select '※本来必要なし・・Spreadsheetの表示が変?
End Sub

他の方にとっては、突然のコードなのですが、経緯としては↓
http://excelfactory.net/excelboard/exgeneral/excel.cgi?mode=all&namber=49590&rev=0
http://excelfactory.net/excelboard/exgeneral/excel.cgi?mode=all&namber=49642&rev=0
(ここ他の板リンクよかったかしらん?だめでしたら削除します。おっしゃってください)
あちらが一般板なのでこちらに移られると思うのですが、
皆様からより適切なアドバイスして頂けるようリンク貼りました。

では、宜しくお願いします。
LostCatさん。おせっかいしちゃってごめんなさい。(^-^)
2 hits

【26334】シートの内容を読み込んでくれるコントロール? LostCat 05/7/1(金) 17:48 質問
【26335】Re:シートの内容を読み込んでくれるコント... Kein 05/7/1(金) 18:00 発言
【26364】Re:シートの内容を読み込んでくれるコン... q- -p 05/7/2(土) 18:42 発言

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