VB6で以下のプログラムでExcelファイルを書きかえると、
その後Excelからはファイルを開けません。
InternetExplorerからこのファイルを指定すると、Excelが起動して表示されます。これを上書き保存すると、またExcelから開くようになります。
一度VB6で書き換えた後のファイル容量が減っているので、何か情報が削られているようです。
Dim wkbObj As Workbook

Sub main()
  newdata = InputBox("A1に入力するデータをどうぞ")
 Set wkbObj = GetObject("C:\WINDOWS\adodata.xls")
wkbObj.Worksheets(1).Range("A1").Value = newdata
wkbObj.Save
wkbObj.Close
End Sub

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

A 回答 (1件)

    • good
    • 0

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

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

QExcel VBA: private sub 内の変数の値を Sub へ渡すには

VBA初心者です。private sub 内で条件に合致した変数の値をSubへ渡すにはどうしたらよいのでしょう。下記を見ていただければやりたいことの意図は伝わるかと思います。private sub内の変数が多分private sub内のみでしか参照出来ないからだとは思いますが、うまくいきません。グローバル変数化みたいなことが出来るのでしょうか。

Sub Find_OK()
MsgBox "条件に合致したのは" & var1 & "です。"
End Sub

Private Sub Worksheet_Calculate()
Dim var1
 For var1 = 1 to 10
 If var1 > 8 Then Call Find_OK
End If
Next
End Sub

Aベストアンサー

Sub Find_OK(var1)
MsgBox "条件に合致したのは" & var1 & "です。"
End Sub

Private Sub Worksheet_Calculate()
Dim var1
 For var1 = 1 to 10
 If var1 > 8 Then Call Find_OK(var1)
End If
Next
End Sub

QVB.NET InputBox のMessageの出し方で困っています。

VB.NETの超初心者ですのでよろしくお願いします。月曜夜12時までの宿題提出ですのでご協力いただければ幸いです。

2個のInputBoxへそれぞれ12か月分のRevenue/Expenseをいれます。ButtonRevenueとButtonExpenseと分けてあります。
まず、Revenueを1月から12月までいれたらCloseして、ButtonExpenseでExpenseを入れます。(Dim strInputBoxMessage As String = )"Enter the Revenue amount for the month #12"が最後にでて入力後、buttonExpenseに行くと、どうやっても"Enter the Expsense amount for the month #13"になってしまいます。intMaxNumberOfEntries = 12 はPublicにいれてあります。この#13を#1からスタートしたいのですが、どのようにやったらいいでしょうか。

Aベストアンサー

DateTime構造体を有効に使用してください。

まず、
If IsNumeric("インプットボックスの戻り値") Then
DateTime revenueDate = new DateTime(DateTime.Now.Year,Integer.Perse("インプットボックスの戻り値",1)
Integer ExpenseValue = revenueDate.AddMonths(1).Month
End If

これで、12の次は1月にできます。

QSub Workbook_Open()でユーザーフォームを表示し、その値を以降で利用するには

初歩的な問題で申し訳ありません。
VBAの質問です。

Public userName As String
Sub Workbook_Open()
' ・・・【中略】・・・
loginForm.show
msgBox userName'テストのため
'以下処理が続く
end Sub

loginFormを表示させそのフォーム内で入力させた値を

Public Sub OKButton1_Click()
'・・・【中略】・・・
If Trim$(Text_ID.Text) <> "" Then
userID = Trim$(Text_ID.Text)
Me.Hide
Else
exit Sub
Me.Hide
End Sub

どうしたら引き継げるのですか?

Aベストアンサー

挿入→標準モジュールを開きそこで変数宣言してください。

QMicroSoft BasicのDim文とVisualBasicのDim文の違い

私が20年前にMicroSoft Basicを使っていたときは、DIM文はDIMENSIONの略で配列型変数の宣言に使っていました。

最近VisualBasicの勉強を始めたのですが、変数の宣言はすべてDim文になっており、昔のMS BasicのDim文と意味合いが変わっているのに驚いています。

ここで質問させてください。
・なぜ配列を意味するDimension文が変数の宣言なのか?
・どのバージョンのBasicからDim文の意味が変わったのか?

私が使用していたのはNEC N-Basic,N-88Basic,N-98Basicです。

Aベストアンサー

VISUAL BASIC のDimは ディメンジョンの略です。
私の経験ではVB2.0時代からありました。

配列0を考えた場合変数とおなじであるからだとおもいます

Qなぜ「Workbook」ではなく「Workbook

なぜ「Workbook」ではなく「Workbooks」なのでしょうか?
エクセルVBAについて教えてください。

ファイルのタイトルバーのところに、文字を入れたくてVBAコードを調べていたら
Workbooks.Application.Caption = "タイトル"
と言うコードが出てきました。

このコードでやりたいことが行えるので問題ないのですが、
なぜファイル(ブック)は一つしか開いてないのに、「Workbooks」なのでしょうか?

Aベストアンサー

■Application クラス
・EXCEL本体の親ウインドウ側のクラス
・主なプロパティとして
Caption EXCEL本体のタイトルバーの文字列
Visible EXCEL本体を表示/非表示
TOP,LEFT,WIDTH,HEIGHT EXCEL本体の位置や大きさを変更する
Workbooks
EXCEL 本体で開いている ブック(複数)のリスト

■Workbooks クラス
・Workbook クラスのコレクションクラス
・EXCEL を親ウインドウとして ブック(workbook)を複数開く事が出来るためそのリストクラス
・主なプロパティ、メソッドとして
Add 新たなブックを表示する
Open ブックを開く
Item Workbook を選択する
Application 親元の EXCEL

■Workbook クラス
・Workbook ブックのクラス
・主なプロパティ、メソッドとして
Save ブックを保存する
Application 親元の EXCEL
WorkSheets
 ブック内にあるシート(複数)のリスト

■WorkSheets クラス
・WorkSheet クラスのコレクションクラス
・主なプロパティ、メソッドとして
Add 新たなシートを作成する
Item WorkSheet を選択する
Application 親元の EXCEL

■WorkSheet クラス
・WorkSheet シートのクラス
・主なプロパティ、メソッドとして
Range 各セル単位のクラス
Application 親元の EXCEL



だいたいのEXCELクラスの位置づけ(雰囲気)はこんな感じ

■Application クラス
・EXCEL本体の親ウインドウ側のクラス
・主なプロパティとして
Caption EXCEL本体のタイトルバーの文字列
Visible EXCEL本体を表示/非表示
TOP,LEFT,WIDTH,HEIGHT EXCEL本体の位置や大きさを変更する
Workbooks
EXCEL 本体で開いている ブック(複数)のリスト

■Workbooks クラス
・Workbook クラスのコレクションクラス
・EXCEL を親ウインドウとして ブック(workbook)を複数開く事が出来るためそのリストクラス
・主なプロパティ、メソッドとして
Add 新たなブックを表示する
Open ブッ...続きを読む


人気Q&Aランキング

おすすめ情報