• 締切済み

VBAで、Excelの選択範囲をWeb形式で保存する方法

ExcelのVBAで選択範囲(I2:V44)をWeb形式(htm)で保存するプログラムをテキストから写して試してるんですけど(下記貼り付け)、うまく動きません。 どこがおかしいかどなたか教えてくれませんか。どこかのHPでもかまいません。どうぞよろしくお願いします。 Private Sub CmbUPDATE_Click() Set wPage = ActiveWorkbook.PublishObjects.Add _ (SourceType:=xlSourceRange, _ Filename:="C:\Documents and Settings\My Documents\graph1.htm", _ Sheet:="sheet1", _ Source:="I2:V44") 'Title:="GRAPH") wPage.Publish True End Sub

みんなの回答

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

#1です。 Sheet名が間違ってなければおかしくは無いと思います。 ただ、CommandButtonからの実行でエラーになっているなら、 wPage.Publish True の前に ActiveCell.Activate を追加してみては? Private Sub CmbUPDATE_Click()  Set wPage = ActiveWorkbook.PublishObjects.Add _     (SourceType:=xlSourceRange, _     Filename:="C:\Documents and Settings\○○\My Documents\graph1.htm", _     Sheet:="sheet1", Source:="I2:V44")     'Title:="GRAPH")  ActiveCell.Activate  'これを追加するとどう?  wPage.Publish True End Sub

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

パッと見た感じで、、 "C:\Documents and Settings\My Documents\graph1.htm" 「My Documents」ってユーザーでログオンしてるの? "C:\Documents and Settings\ユーザー名\My Documents\graph1.htm" では?

kai5963
質問者

補足

あ、すいません。 おっしゃるとおりユーザー名がここに入ります。この場では公表したくなかったので、消しました。 それ以外でおかしいところありますでしょうか?

関連するQ&A

  • パスを変数にしたいのですが。

    ("ad7")にd:\sample\4index.html というアドレスが入っています。 ファイル名を変えたいので変数にして保存したいと思います。 Dim f As Variant f = Range("ad7") Set wPage = ActiveWorkbook.PublishObjects.Add _ (SourceType:=xlSourceRange, _ Filename:="& f &", _ Sheet:="携帯", Source:="b4:f27") 'Title:="GRAPH") ActiveCell.Activate wPage.Publish True filnameのあとの変数の書き方が分からなく 希望のホルダーに保存できません。 どのように書けばいいのでしょうか。 ちなみに、上記のvbaもネット上から拾ってきたものです。 よろしくお願いいたします。

  • Excel2007のVBAで、セル範囲を指定し

    Excel2007のVBAで、セル範囲を指定して画像として保存したいです。 たとえば、 Worksheets("Sheet1").Range("A1:B10").CopyPicture xlScreen, xlBitmap Worksheets("Sheet2").Paste とすれば、別のシートに指定した範囲を画像にすることはでき、 さらにこれを、 With ActiveWorkbook.PublishObjects.Add(xlSourceSheet, "C:\test.html", _ "Sheet2", "", xlHtmlStatic, "image", "") .Publish (True) .AutoRepublish = False End With とすれば、画像を指定した場所に保存することはできると思います。 ただ、これだと無駄な処理をしているような気がしますし、実際時間も数秒必要です。 これが、グラフだと Worksheets("Sheet1").ChartObjects("グラフ1").Chart.Export Filename:="C:\graph.gif", FilterName:="gif" のように簡単に、しかも短時間で出来ます。 できれば、上記グラフのように、指定したSheetの指定したセル範囲を画像として指定した場所にPNGにて保存したいです。 どなたかご教授いただければ幸いです。

  • アイコンがエクセルのアイコンになってしまう

    エクセルシートに対して Sub test() With ActiveWorkbook.PublishObjects.Add(xlSourceSheet, "c:\test.html", ActiveSheet.Name, "", _ xlHtmlStatic, "", "") .Publish (True) .AutoRepublish = False End With End Sub をすると、HTMLファイルが作成できますがアイコンがエクセルのhtmlになってしまいます。 普通のhtmlファイルにする方法はありますか? アクセスの場合は、htmlにエクスポートすると普通のhtmlのアイコンになります。 バージョンは2003です。

  • Excelシート1シートのみを指定フォルダへ保存

    Excelのシート1のみを、本日の日付と名前の入ったセル(I7)を保存する時の名前にして指定したフォルダへ保存したいと思っています。 1、シートは本日の日付+I7セルに入っている値を名前にする。 2、フォルダはCではなくV:\○○\○○\○○\○○\○○\○○\○○に格納 3、シート1以外のシート2、シート3は保存せず閉じる 4、格納後○○に保存しました。と表示 試行錯誤し、下記のように記述してみたのですが、 Sub Macro1() 'Option Explicit Sub Sample() Dim xSheet As Worksheet Dim myFile As String Dim myName As String Set xSheet = ActiveSheet ThisWorkbook.Worksheets("シート名").Copy 'myName = ActiveWorkbook.Worksheets(1).Name 'myFile = ThisWorkbook.Path & "\" & myName & ".xls" myFile = ThisWorkbook.Path & "\" & xSheet.Range("I7").Value & ".xls" Application.DisplayAlerts = False ActiveWorkbook.SaveAs Filename:=myFile Application.DisplayAlerts = True ActiveWorkbook.Close End Sub 日付を指定して保存 Sub test()  Dim Filename As String  Filename = Format(Date, "yyyy年mm月dd日") & ".xls"  ActiveWorkbook.SaveAs "C:\My Documents\" & Filename End Sub 日付とI7セルの名前を合せてブックの名前としたい場合どうVBEで記述すればいいのかわからないので詳しい方がおられましたら、 よろしくお願いいたします。 あまり詳しくないので、そのままコピーできるか、○○の部分を指定フォルダ名に変えてください。等の注釈を付けていただけると助かります。

  • エクセル VBA シート保存ボタン

    Sheet上にボタンを作成 ボタンを押すと保存するようにしています! 以前ここでSheet2枚をコピー出来るような 記述教えてもらったのですが・・ 1枚ならどう変化して良いか・・ 記述を書きましたが 何処が違うか教えて下さい! Private Sub CommandButton1_Click()   Dim FileName  As String   Dim FileExt   As String   Dim BkName   As String   Dim OldWkbook  As Workbook   Dim NewWkbook  As Workbook   Const StName1  As String = "ko"      '   Application.DisplayAlerts = False   Set OldWkbook = ActiveWorkbook   '   'ファイル名を取得   BkName = OldWkbook.Sheets(StName1).Range("A1").Value   FileName = BkName & Format(Now, "yyyy-mm") & ".XLS"   '   FileName = InputBox(FileName & "と言う名前で保存します" & vbCr & "よろしければこのままOKをクリックしてください", "保存ファイル名の確認", FileName)   If FileName = "" Then     Exit Sub   Else     If Right(FileName, 4) <> ".XLS" Then       MsgBox "ファイル名が異常です。"       Exit Sub     End If   End If   '   OldWkbook.Sheets(Array(StName1)).Copy   Set NewWkbook = ActiveWorkbook   For wIx = 1 To NewWkbook.Sheets(1).Shapes.Count     NewWkbook.Sheets(1).Shapes(wIx).Delete    Next   NewWkbook.Sheets(1).Name = StName1   '   FileName = "D:\保存\計画\" & FileName   '   If Dir(FileName) <> "" Then     '##ファイルが既に存在する     If MsgBox("既に指定のファイルが存在します。 置き換えますか?", vbOKCancel, "置き換えの確認") = vbCancel Then       NewWkbook.Close savechanges:=False       '##保存せずに終了       Exit Sub     End If     '##指定ファイル置き換え保存     NewWkbook.SaveAs FileName:=FileName   Else     '##ファイルを新規保存     NewWkbook.SaveAs FileName:=FileName   End If   '   NewWkbook.Close savechanges:=False   Application.DisplayAlerts = True End Sub 教えて下さい!

  • VBA 保存

    保存ボタンを作成してファイルに飛ぶように させていますが…どうしてもエラーになります! エラー表示内容> 実行時エラー1004 シートの名前を他のシート、Visual Basicで参照される オブジェクト ライブラリまたは ワークシートと同じ名前に変更することはできません。 下記は実際の記述です。 Private Sub 保存_Click() Dim FileName As String Dim FileExt As String Dim BkName As String Dim OldWkbook As Workbook Dim NewWkbook As Workbook Const StName1 As String = "計画 グラフ" Const StName2 As String = "ケア一覧" ' Application.DisplayAlerts = False Set OldWkbook = ActiveWorkbook ' 'ファイル名を取得 BkName = OldWkbook.Sheets(StName1).Range("D1").Value FileName = BkName & Format(Now, "yyyy-mm-dd") & ".XLS" ' FileName = InputBox(FileName & "と言う名前で保存します" & vbCr & "よろしければこのままOKをクリックしてください", "保存ファイル名の確認", FileName) If FileName = "" Then Exit Sub Else If Right(FileName, 4) <> ".XLS" Then MsgBox "ファイル名が異常です。" Exit Sub End If End If ' OldWkbook.Sheets(Array(StName1, StName2)).Copy Set NewWkbook = ActiveWorkbook For wIx = 1 To NewWkbook.Sheets(1).Shapes.Count NewWkbook.Sheets(1).Shapes(1).Delete '←シート1のボタンを削除 Next NewWkbook.Sheets(1).Name = StName1 NewWkbook.Sheets(2).Name = StName2 ' FileName = "D:\看護計画保存\" & FileName ' If Dir(FileName) <> "" Then '##ファイルが既に存在する If MsgBox("既に指定のファイルが存在します。 置き換えますか?", vbOKCancel, "置き換えの確認") = vbCancel Then NewWkbook.Close savechanges:=False '##保存せずに終了 Exit Sub End If '##指定ファイル置き換え保存 NewWkbook.SaveAs FileName:=FileName Else '##ファイルを新規保存 NewWkbook.SaveAs FileName:=FileName End If ' NewWkbook.Close savechanges:=False Application.DisplayAlerts = True End Sub

  • エクセルのVBAのことで

    コマンドボタンで「Macro1」というマクロを実行させるVBAは以下だと思いますが。 Private Sub CommandButton1_Click() Call Macro1 End Sub 上記に、Sheet1・Sheet2・Sheet3に対して実行するということを加えると、どんなふうになるでしょうか。

  • 「VBA} XLSMのファイルをXLSX保存したい

    いろいろとVBAが入っているシート1.xlsmがあります。 シート1の内容をXLSXで保存したいのですが、うまくいきません。 解決に向けてご教授ください。 <ステップ1 XLSMでは保存できます。> Private Sub hachu_Click() '担当者名取得(C4) Dim s As String s = Range("C4").Value Debug.Print (s) ActiveWorkbook.SaveCopyAs Filename:= _ "c:\ " & Format(Date, "mmdd") & "_" & Format(Time, "hhmmss") & s & ".xlsm" '1013_161712木村.XLSM End Sub <ステップ2 XLSXで保存できますが、ファイルを開くときにエラーが出ます。>  FIG.1 Private Sub hachu_Click() '担当者名取得(C4) Dim s As String s = Range("C4").Value Debug.Print (s) ActiveWorkbook.SaveCopyAs Filename:= _ "c:\ " & Format(Date, "mmdd") & "_" & Format(Time, "hhmmss") & s & ".xlsm" '1013_161712木村.XLSM End Sub <ステップ3 マクロのないシート2にあたい張り付けして、シート2だけ保存> 保存の際にFIG.2の様なアラートが出て、手作業が必要です。> 'シートの複製(複製すると新しいブックが立ち上がります) Worksheets(2).Copy '名前を付け、ファイル形式も決めて特定の場所に保存する。 ActiveWorkbook.SaveAs _ Filename:="c:\ " & Format(Date, "mmdd") & "_" & Format(Time, "hhmmss") & s & ".xlsx", _ FileFormat:=xlOpenXMLWorkbook

  • VBA 複数シート選択について

    Sub test() Dim i As Integer i = ActiveWorkbook.Worksheets.Count Worksheets(Array(2, i)).Select End Sub シート2とシートi の選択ではなく、2~iまでの複数シート を選択するにはどのように書くのかご教示下さい。

  • Excel VBA セル範囲に名前をつける

    Excel VBA独学中の初心者です。 セル範囲に名前をつける方法で以下の2つの方法があるようです。 (1) 同じように動作しますが違いは有るのでしょう。 (2) 本質的に考え方または内部動作は違うのでしょうか。 お分かりの方教えていただけますと助かります。 --------------- '方法1 Sub 名前の定義1() Range("sheet1!A2:B3").Name = "名前1" End Sub '方法2 Sub 名前の定義2() Range("A1").Select ActiveWorkbook.Names.Add Name:="名前2", _ RefersTo:="=sheet1!A2:B3" End Sub