• 締切済み

Web上のエクセルのVBA操作について

OSはWin2000、エクセルも2000です。 社内のイントラネット上にエクセルのBOOKを置いてあります。 ダウンロードせずにダブルクリックでイントラ上で開いたこのBOOKに対するVBA操作で、以下の3つを試しましたが、すべてエラーになり、プレビューすることができません。 どう直せばよいのでしょうか? Sub test() ActiveSheet.PrintPreview End Sub Sub test2() ThisWorkbook.ActiveSheet.PrintPreview End Sub Sub test3() x = ThisWorkbook.ActiveSheet.Name ThisWorkbook.Sheets(x).PrintPreview End Sub また Sub 終了() ActiveWorkbook.Close (False) End Sub もまったく働きません。 どうやったら終了できますか?

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.2

私も実験できる環境にありませんが (^^ゞ 下記リンクとその先のリンクが参考になるかもです。 http://www.tohoho-web.com/lng/g200006/00060005.htm 要するにファイルのアドレスを UNC名で与えてやれば回避できるのでは?(開き方で回避できそうな?) http://gooSerber/files/are.xls → \\gooServer\files\are.xls とかで・・ XLSファイルをどのようにして開いているか分かりませんけれども。 アクセス権の絡みもありそうなのでサーバの管理者とも要相談かも? 見当違いも甚だしかったらご容赦を。

merlionXX
質問者

お礼

> XLSファイルをどのようにして開いているか分かりませんけれども 単にイントラに添付してあるXLSファイルをダブルクリックしているだけです。これでインターネットエクスプローラでエクセルのワークシート画面が表示されます。 > http://gooSerber/files/are.xls → \\gooServer\files\are.xls とかで・・ この\\gooServer\files\are.xls のSheets("Sheet1")を PrintPreviewするというのはどう書くのでしょう? Sheets("Sheet1").Select Range("A1").Select は、ちゃんと働いてくれるのですが・・・・

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

この辺のネット環境での問題になると、当方ではテストもままならず 知識としても自信のないところですので、見当違いの場合はご勘弁を。 Active(Workbook,Sheet)というのが出てきているが、これが問題ではないでしょうか。 我が家の中で「お父さん」というのはすぐ判って良いが、世間では「加藤家の加藤四郎」といわないとダメなようなたとえのこと。 ネットワークの部分も含めて、フルパスでファイル指定し、確実に存在するファイルをVBAで開いてみて、開くかどうかやってみてはどうでしょう。 もしうまく開いた場合には、質問のコードを付け加え実行するとどうなるでしょう。 エクセル以外の他世界からエクセルを使うときはオブジェクトに必ずエクセルのオブジェクト名objExlなどを添えるイメージから思いついたもの。

merlionXX
質問者

お礼

さっそく有難うございます。 MsgBox ThisWorkbook.ActiveSheet.FullName で、http://~以下、途中略~/ファイル名.xls までは取得できました。 そのファイル名のBOOKのアクティブなシートをプレビューするというのはどのようなコードになるのでしょうか?

merlionXX
質問者

補足

すみません、MsgBox ThisWorkbook.FullName の間違いでした。 MsgBox ThisWorkbook.FullName でhttp://~以下、途中略~/ファイル名.xls までは取得できました。

関連するQ&A

  • エクセルVBA

    VBAの素人です。 以下のようなVBAを実行しようと、何とか形にしました。 単独のBOOKではうまくいくのですが、同時に他のBOOKを開くと 「インデックスが有効範囲にありません」とエラーになります。 エラー箇所は、With Sheets("Sheet1").Range("B1")部分です。 修正をご教示頂ける方、何卒よろしくお願い致します。 全くVBA無知なのにすみません。 Private Sub Workbook_Open() test01 test02 Application.OnTime Now + TimeValue("00:10:00"), "終了" End Sub Sub 終了() Application.OnTime Now + TimeValue("0:00:02"), "test01", , False ThisWorkbook.Close Savechanges:=False Application.Quit End Sub Sub test01() With Sheets("Sheet1").Range("B1") .Value = Time .NumberFormatLocal = "mm:ss" End With Application.OnTime Now + TimeValue("0:00:02"), "test01" End Sub Sub test02() With Sheets("Sheet1").Range("B2") .Value = Time .NumberFormatLocal = "mm:ss" End With End Sub

  • エクセルVBAでBOOKのダウンロード日時を取得したいのです。

    社内のイントラネットに貼り付けたエクセルのBOOKを、社員が各自の端末にダウンロードした日時を、そのダウンロードされたBOOKのマクロで取得したいのです。 ためしに、以下のようにしてみました。 Sub test01() MsgBox "FileDateTime:" & FileDateTime(ThisWorkbook.FullName) End Sub これでは、常にそのBOOKを起動した日時が取得されるだけでした。 Sub test02() MsgBox "作成者は:" & ActiveWorkbook.BuiltinDocumentProperties(3).Value _ & vbCrLf & "最終更新者は:" & ActiveWorkbook.BuiltinDocumentProperties(7).Value _ & vbCrLf & "作成日時は:" & ActiveWorkbook.BuiltinDocumentProperties(11).Value _ & vbCrLf & "更新日時は:" & ActiveWorkbook.BuiltinDocumentProperties(12).Value End Sub これは、イントラに貼り付けたオリジナルのBOOKの作成日時、更新日時等のデータでした。 ダウンロード日時を取得することはできないのでしょうか? やりたいことは、改定等があった場合、いつまでも古いバージョンを使いつづけられないようにダウンロード日から例えば30日間を使用期限に設定するというようなことです。

  • エクセルVBAでSheet1.ActivateとSheet(n).Activate

    エクセル2000です。 VBAでの疑問点を教えてください。 Sub test1() Sheet1.Activate MsgBox ActiveSheet.Name End Sub これは問題なく作動します。 Sub test2() x = ThisWorkbook.Worksheets.Count For n = 1 To x Sheet(n).Activate MsgBox ActiveSheet.Name Next End Sub これは「SubまたはFunctionがていぎされていません」というエラーになります。 もちろん、 Sub test3() x = ThisWorkbook.Worksheets.Count For n = 1 To x Sheets(n).Activate MsgBox ActiveSheet.Name Next End Sub のように書けばOKなのは存じておりますが、これではSheet名に係らず、左から順番となってしまいます。 Sub test4() x = ThisWorkbook.Worksheets.Count For n = 1 To x Sheets("Sheet" & n).Activate MsgBox ActiveSheet.Name Next End Sub のように明確にシート名として記述すればOKなのですが、それでは、Test1のSheet1.Activate が通って、Sheet(n).Activate が通らないのはなぜでしょう? しょうもない質問でごめんさない。

  • エクセルVBA 10分後にエクセル自動終了&カウン

    どなたかご教授お願い致します。 ・エクセルの当該ブックを、起動10分後に自動終了(保存しない)させる ・開いている間は、10分のカウントダウンを「分:秒」でA1セルに表示する 以上を実行したいのですが、VBAは全く素人ですので、うまくいきません。 見よう見まねで、以下のようなことをしましたが、結局ダメでした。 何卒、よろしくお願い致します。 ThisWorkbook Workbook Open Private Sub Workbook_Open() test01 Application.OnTime Now + TimeValue("00:10:00"), "終了" End Sub 標準モジュール Module1 Sub 終了() ThisWorkbook.Close Savechanges:=False Application.Quit End Sub Sub test01() With Sheets("バックアップ").Range("A1") .Value = Time .NumberFormatLocal = "mm:ss" End With Application.OnTime Now + TimeValue("0:00:01"), "test01" End Sub

  • エクセルをインターネットエクスプローラで開いた場合のマクロ

    エクセル2000、Windows2000です。 エクセルのBOOKをインターネットエクスプローラ6.0で開いた場合のマクロの動作について教えてください。 Sheets("Sheet1").Select は、「実行時エラー1004 Sheetsメソッドは失敗しました。Globalオブジェクト」 ActiveWindow.SelectedSheets.PrintPreview は、「実行時エラー1004 PrintPreviewメソッドは失敗しました。Sheetsオブジェクト」 などエラーになってしまいます。 自宅のエクセル2003,IE7.0でやってみても同様でした。 どのように対処すればよいのでしょうか? なお、BOOKをIEで開くのは社内のイントラネットに掲載したエクセルをダウンロードするのではなく、イントラ上でIEで開くためのテストです。

  • VBAでVBAを削除?

    作業中のブックから一枚のシートを以下のSub 別ファイル保存()プロシージャで別のブックとして保存します。それはうまくいったのですが、この元になるシートには Private Sub Worksheet_SelectionChange(ByVal Target As Range) '途中略 End Sub と Private Sub Worksheet_Deactivate() '途中略 End Sub の二つのVBAが記述してあり、これまで一緒に別のブックに入ってしまいます。 これを防ぐにはどのようにすればよいのでしょうか? Sub 別ファイル保存() mypath = ThisWorkbook.Path fn = Sheets("Declarations").Range("H15").Value & Format(Date, "yymmdd") ffn = mypath & "\" & fn & ".xls" Sheets("Declarations").Copy ActiveWorkbook.SaveAs Filename:=ffn ActiveWorkbook.Close End Sub

  • エクセルVBAで作成した別ブックにVBAを記述したい

    VBAで別ファイルの作成は下記で出来ているのですが、出来上がったファイルにVBAを記述する方法がわかりません。 具体的には一番下のSub TEST()を新しいブックの標準モジュールに記述したいのと、sheet1に Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "ChangeTEST" End Sub を入れたいです。 また Private Sub Workbook_Open() MsgBox "OpenTEST" End Sub も入れたいのです。 どうぞご教示ください。 Sub 複製() Dim wb As Workbook, sc As Integer sc = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set wb = Workbooks.Add Application.SheetsInNewWorkbook = sc wb.Sheets("Sheet1").Select ThisWorkbook.Sheets("Sheet1").Cells.Copy wb.Sheets("Sheet1").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Buttons.Add(123, 195, 68.25, 15).Select Selection.OnAction = "TEST" Selection.Characters.Text = "TEST" ActiveWorkbook.Close ThisWorkbook.Activate Sheets("Sheet1").Select End Sub Sub TEST() MsgBox "TEST!!" End Sub よろしくお願いします。

  • VBAのWorkbook_BeforeSaveイベントについての疑問

    エクセル2000です。 前にも似たような質問をしたのですが理解ができていません。 ThisWorkbookモジュールに以下の記述をし、終了時保存する場合にはSheet2を表に出すようにしました。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("Sheet1").Range("A65536").End(xlUp).Offset(1).Value = Time() Sheets("Sheet2").Select MsgBox "保存します。" & ActiveSheet.Name Sheets("Sheet1").Range("B65536").End(xlUp).Offset(1).Value = Time() End Sub これで×を押して手動で終了すればそのとおりに働きます。ActiveSheet.Nameも当然Sheet2になります。 ところが、標準モジュールの下記の終了マクロ Sub 終了() ThisWorkbook.Close End Sub で終了しようとすると、A列セルにTime()は記録され、どういうわけかSheet2がSelectされず、MsgBox "保存します。" のメッセージが出て、B列セルにTime()が記録され、保存されます。 ActiveSheet.NameもSheet2ではありません。 つまり、Sheets("Sheet2").Select の部分だけが完全にスキップされてしまうのです。 どうしてでしょうか?

  • VBAでエクセル終了

    エクセル2000です。 VBAで「閉じる」ボタンを作りました。 Sub closeボタン() myYN = MsgBox("終了しますか?", vbYesNo + vbQuestion, "終了確認") If myYN = vbNo Then Exit Sub ThisWorkbook.Close End Sub ところが作動させると「いいえ」を選ぶとすんなり終了してくれますが、「はい」にすると「変更を保存しますか?」を何故か続けて2回も聞いてきます。 2回目も「はい」にすると今度はブック保存のダイアログが出てきて、ブック名が「:」(半角コロン)になってます。 変だなあ、と思い上記のマクロを別ブックを新たに作って標準モジュールに張ってみると正常に作動します。 もとのブックに何かあって、こんな現象が起きているのでしょうか? とっても困ってます。

  • VBAを実行するとエクセルが落ちる

    同一フォルダ内にあるCSVデータを一つのエクセルにワークブックにまとめるため CSVデータを開いて、各シートに値を貼り付けるVBAを作成しました デバックモードで1行毎に実行するとエクセルが落ちることはありませんが 普通に実行するとエクセルが閉じてしまいます 原因が分からないためご指摘いただけると幸いです Win7のOffice2013です。 Sub contents() Sheets("01").Select Sheets("01").Cells.Select Selection.ClearContents Dim ShA As Worksheet Dim FileA As String Set ShA = ThisWorkbook.Sheets("01") ChDir "C:\Users\Public\Documents" FileA = "C:\Users\Public\Documents\01.csv" If FileA <> "False" Then Workbooks.OpenText Filename:=FileA, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Comma:=True ActiveSheet.Cells.CurrentRegion.Copy Destination:=ShA.Range("A1") ActiveWorkbook.Close False End If Set ShA = Nothing Sheets("02").Select Sheets("02").Cells.Select Selection.ClearContents Dim ShB As Worksheet Dim FileB As String Set ShB = ThisWorkbook.Sheets("02") ChDir "C:\Users\Public\Documents" FileB = "C:\Users\Public\Documents\02.csv" If FileB <> "False" Then Workbooks.OpenText Filename:=FileB, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Comma:=True ActiveSheet.Cells.CurrentRegion.Copy Destination:=ShB.Range("A1") ActiveWorkbook.Close False End If Set ShB = Nothing Sheets("03").Select Sheets("03").Cells.Select Selection.ClearContents Dim ShC As Worksheet Dim FileC As String Set ShC = ThisWorkbook.Sheets("03") ChDir "C:\Users\Public\Documents" FileC = "C:\Users\Public\Documents\03.csv" If FileC <> "False" Then Workbooks.OpenText Filename:=FileC, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlTextQualifierNone, Comma:=True ActiveSheet.Cells.CurrentRegion.Copy Destination:=ShC.Range("A1") ActiveWorkbook.Close False End If Set ShC = Nothing End Sub

専門家に質問してみよう