VB6.0にて開発しています。

自分の端末でEXCELを使用している際
どのブックを開いているかVB側にて取得
する方法を教えて下さい。

現状)VBからあるフォルダのBOOKを
コピーし、そのBOOKにデータを
貼り付けています。しかし他のBO
OKを開いているとメモリエラーが
起こります。その為EXCELが立
ち上がっていたら警告を出そうと思
います。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

サンプルです。



プロジェクトの参照設定で
Microsoft Excel x.0 Object Libraryを指定
(x.0はエクセルのバージョンによって、違う数字です)


Option Explicit

Sub Main()
  Dim xlApp  As Excel.Application
  Dim xlBook As Excel.Workbook
  Dim strDebug As String
  Dim strPath As String
  
  '起動しているエクセルアプリを取得する
  On Error Resume Next
  Set xlApp = GetObject(, "Excel.Application")
  On Error GoTo 0
  
  '取得失敗
  If xlApp Is Nothing Then
    Debug.Print "EXCELは起動していないようです"
  
  '取得成功
  Else
    'これより情報をデバッグウィンドウに出力
    Debug.Print xlApp.Workbooks.Count & "冊のワークブックが見つかりました"
    'ブックが存在する分だけ、ブックの情報を記す
    For Each xlBook In xlApp.Workbooks
      strPath = xlBook.Path
      If strPath = "" Then
        strPath = "未保存"
      End If
      strDebug = xlBook.Name & "[" & strPath & "]"
      Debug.Print strDebug
'      xlBook.Close False '保存せずにブックを終了させる時
    Next xlBook
    
'    xlApp.Quit   'エクセルアプリを終了させる時
    Set xlApp = Nothing
  End If
End Sub
    • good
    • 0
この回答へのお礼

助かりました。本当に有難うございます。

お礼日時:2002/01/17 17:05

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QVB6.0でVB上にExcel

VB上にExcelオブジェクトを貼り付け、特定の条件に当てはまったとき既存のExcelファイルのSheet1を乗せたいという場合は、どうすればいいのでしょうか?

Aベストアンサー

条件に該当する場合に
オブジェクトではなくピクチャーコントロールとしてクリップボードにSheet1をコピーしてピクチャーコントロールにClipboard.GetData()で貼り付ける。
または
Sheet1を1行づつ読み込みテキストに書き出す。

QVB6.0+MyODBC5.0+MySQL4.1にてインサートデータが0になる

VB初心者です。
上記の条件でVB上からDBへインサート文を実行させたのですがMyadminを開いてデータを確認するとデータがすべて0になってしまいます。
因みにインサート文に直接データを代入するとちゃんとDBに登録されます。
OS:WinXP

Dim a AS Integer
Dim b AS Integer
Dim c AS Integer
Private Sub form_load()
Set cn = CreateObject("ADODB.Connection")
cn.Open "dsn=MySQL;uid=root;Pwd="
cn.CursorLocation = 3
a = 1
b = 2
c = 3
cn.BeginTrans
cn.Execute "insert into test values (a, b, c)"
cn.CommitTrans
cn.Close
インサートを変数指定ではなく直接(1, 2, 3)と入れると登録できます。
単純な勘違いを犯しているだけだと思うのですが、どちら様かお知恵を拝借できませんでしょうか?
よろしくお願いいたします。

VB初心者です。
上記の条件でVB上からDBへインサート文を実行させたのですがMyadminを開いてデータを確認するとデータがすべて0になってしまいます。
因みにインサート文に直接データを代入するとちゃんとDBに登録されます。
OS:WinXP

Dim a AS Integer
Dim b AS Integer
Dim c AS Integer
Private Sub form_load()
Set cn = CreateObject("ADODB.Connection")
cn.Open "dsn=MySQL;uid=root;Pwd="
cn.CursorLocation = 3
a = 1
b = 2
c = 3
cn.BeginTrans
cn.Execute "insert into test values (...続きを読む

Aベストアンサー

"insert into test values (a, b, c)"
は文字列なので、変数a,b,cを指定したことにはなりません。
"insert into test values (aaaa, bbbb, cccc)"
でも同じ結果になるはず。

"insert into test values (" & a & "," & b & "," & c & ")"
としてみて下さい。

QVB6.0上でExcelオブジェクトを生成

質問です。
VB6.0上でExcelオブジェクトの生成についてです。

その1
Dim xlApp As Excel.Application

Set xlApp = CreateObject("Excel.Application")



その2
Dim xlApp As Object

Set xlApp = CreateObject("Excel.Application")

と、どちらが良いのでしょうか?

開発環境は
Win XP SP2
VB 6.0
Excel 2003
実行環境は
Win 98 SE
VB 6.0(ランタイムのみ)
Excel 2000 SR-1
です。

開発環境ではその1、その2ともOKなのですが、
実行環境ではその2のみがOKです。
参考書にはその1が書かれていますが、その2を使うことによって何か不具合や都合の悪いことが起こりうるのでしょうか?
あるいは当方の見当違いで根本的に何かが間違っているのでしょうか?
どんな些細なことでも結構ですので宜しくお願いします。

質問です。
VB6.0上でExcelオブジェクトの生成についてです。

その1
Dim xlApp As Excel.Application

Set xlApp = CreateObject("Excel.Application")



その2
Dim xlApp As Object

Set xlApp = CreateObject("Excel.Application")

と、どちらが良いのでしょうか?

開発環境は
Win XP SP2
VB 6.0
Excel 2003
実行環境は
Win 98 SE
VB 6.0(ランタイムのみ)
Excel 2000 SR-1
です。

開発環境ではその1、その2ともOKなのですが、
実行環境ではその2のみがOKです。
参考...続きを読む

Aベストアンサー

普通はその2を書きます。

ちなみに1と2は

1は参照設定でExcelが指定されている時のみ使用できます。すでに初めから何のオブジェクトかを指定している訳ですから、CreateObjectは必要ありません。また都度新しいオブジェクトが必要であれば New をつければいいだけです。
(ex)
Set xlApp = New Excel.Application


実行環境のWin98SEの環境では、参照設定が通らないのでしょう。だからエラーになるものと思われます(たぶんexcelのバージョンが違うからでしょうがもしかしたらOSかも)。

その2を使う事による実行上では全く不都合はありませんと、いうか参照設定によらないので様々な環境で動くはずです。

まぁ、あえて欠点いうなら開発環境の時に

xlApp とうって . をうった時にメソッドやプロパティが自動で出てこない事ですね。

開発環境では1にしておいて(CreateObjectしても特別に問題はないので)、実行環境の時に2にすればいーかもしれません。

QVB6.0でExcelの操作。

お世話になっております。
VB6.0上で、Excelオブジェクトの書きこみロジックを作成しているのですが、Excelオブジェクトを作成し、セルへのデータの書きこみ等は問題なくできるのですが、フォントを変えたり、線を引いたり、オートシェイプを操ったり・・・等の方法がいまいちわかりません。自分でも調べてはいるのですが、VB6.0でのそういったExcel操作事例集のようなサイトがありましたら、教えて頂けないでしょうか?

Aベストアンサー

 「VB6 Excel」で検索したら色々出てくるけど、どれも断片的でこれというサイトが無かったので、それらをその都度組み合わせて参照していただくとともに、Excel自身にプログラムを書いてもらう方法をお教えしよう。

Excelで、ツール→マクロ→新しいマクロの記録を選ぶ。
マクロツールバーが出てくるので、やりたい操作を「Excel」で行い、記録の停止をする。Alt+F11を押すと、Excel VBAの画面になるので、そこに今行った操作が記録されてるってスンポーよ。後はこのソースをVBに貼り付けるなり参考にするなりお好きなように。

QVB6.0でTextファイルをExcel出力

お世話になります。

VB6.0でTextファイル(カンマ区切りのデータが入っているもの)をExcelに出力するものを作成しました。

基本的に読込んだファイルをArrayで型を指定してExcelに出力する形です。

ですが、印刷するときにA4横に収まらない長さになってしまったので、

Textファイルの1行のデータをExcelには2行にして出力させることは可能ですか?

Textファイルのデータはこんなのです。
XXXX,SS,SS,AA,DD,WW,Fed,fk,aaa,aqee
このような形で数百件入っています。



何か参考になりそうなものがあったら教えてください。

よろしくお願いします。

Aベストアンサー

>基本的に読込んだファイルをArrayで型を指定してExcelに出力する形です。
の意味がよくわから無いが
カンマ区切りのテキストの1レコード分が出来ているなら、Split関数で(区切り文字を当然、カンマにして)Array?変数に入るから、全部で7項目あり、4項目、3項目に分ける例で説明するならば
(kはそれまでの処理で決るもの。初めは初期値k=2など)
s=Split(カンマ区切り文字列,",")
Cells(k、”A")=s(0)
Cells(k、”B")=s(1)
Cells(k、”C")=s(2)
Cells(k、”D")=s(3)
K=k+1 'シートで次は1行下へ書き出す意味
Cells(k、”E")=s(4)
Cells(k、”F")=s(5)
Cells(k、”G")=s(6)
k=k+1
この後、次のレコードを読むか、次のレコードを作り、繰返す。
各列の表示形式は設定しておくか、VBAでやる。


人気Q&Aランキング

おすすめ情報