自宅でEXCEL2000でVBAを作成しました。FDで仕事場に持ち込むと
EXCELオープン→マクロの有効→強制終了
になってしまいます。マクロを無効としても同じです。

このサイトの過去の質問で「開けないエクセルのデータを取り出すことができる」とありましたが、エクセルファイルに組み込んであるVBAのコードは取り出せることが可能なのでしょうか??よろしくお願いします。

ちなみにデータは外部参照やワードで開いて取り出すことができました。

OS:WIN95 B
EXCEL:2000 (9.0.3821 SR-1)

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

A 回答 (1件)

エクセルを開いた状態なら


操作をして取出す方法はあるのですが。

FDのスキャンディスクは試されましたか?
ぜひ一度トライしてみて下さい。
(エラーを自動的に修復にチェック)
    • good
    • 0

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

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

このQ&Aを見た人が検索しているワード

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

QExcel VBAで検索(Win2000 Excel2000)

現在、下記のようなコードを書いています。データテーブルの縦と横の検索値を探してその列数と行数を返したいのですが、下記の Sub検索1 と Sub検索2 を1つのSubで実行させるにはどうしたらよいのでしょうか?よろしくお願い致します。

-----------------------------------------
Sub 検索1()
Worksheets("Data").Activate
Dim x As Integer
For x = 3 To 22
If Cells(2, x).Value >= 12 Then
MsgBox x
Exit Sub
End If
Next
MsgBox "見つかりません"
End Sub
---------------------------------------------
Sub 検索2()
Worksheets("Data").Activate
Dim i As Integer
For i = 4 To 42
If Cells(i, 2).Value = "A" Then
MsgBox i
Exit Sub
End If
Next
MsgBox "見つかりません"
End Sub

現在、下記のようなコードを書いています。データテーブルの縦と横の検索値を探してその列数と行数を返したいのですが、下記の Sub検索1 と Sub検索2 を1つのSubで実行させるにはどうしたらよいのでしょうか?よろしくお願い致します。

-----------------------------------------
Sub 検索1()
Worksheets("Data").Activate
Dim x As Integer
For x = 3 To 22
If Cells(2, x).Value >= 12 Then
MsgBox x
Exit Sub
End If
Next
MsgBox "見つかりません"
End Sub
-----------------...続きを読む

Aベストアンサー

Worksheets("Data").Activate
Dim x As Integer
Dim y as Integer

For x = 3 To 22
 If Cells(2, x).Value >= 12 Then
 MsgBox x
 For y = 4 To 42
  If Cells(y, 2).Value = "A" Then
   MsgBox y
   Exit Sub
  End If
 Next
 End If
Next
MsgBox "見つかりません"
End Sub

これだと、縦位置2の行で、まず横方向で12を探し見つかったら、その位置をメッセージ表示します。
で、横位置2の列を、縦方向に検索し見つかったら、メッセージ表示をし、関数を抜けます。見つからなければ”見つかりません”のメッセージを表示します。
こんな所で如何でしょう?

QEXCEL2000 VBA マクロ実行中に他の作業ができないか

いつもお世話になっております。

EXCEL2000 VBAでマクロ実行中にEXCELで別の作業(表計算したり、別のマクロを実行したり)がやりたいんですが、可能でしょうか。

よろしくお願いいたします。

Aベストアンサー

標準モジュールに
Sub test02()
For i = 1 To 1000000
Cells(1, 1) = "A"
Next i
End Sub
を入れて実行し、終らない間に、デスクトップを表示して、エクセルのアイコンをクリックして、別ブックを開いたり出来ます。
上記は確認後CTRL+Breakキーで中断のこと。
上記は#2のお答えのことと思います。
====
質問内容は、そんなことじゃないなら補足しては。

Qexcelのマクロで指定した値が ='Sheet名'!XFD24 になってしまう

excelのマクロで ='Sheet名'!A24 と入力するマクロを作りたいのに ='Sheet名'!XFD24 と入力されてしまいうまく参照されません。参照できるようにするにはどうすればよいでしょうか。

指定先のA24がA~Cと24~25まで結合してあるセルであるためでしょうか、下が組んだマクロです

Range("B3").Select
ActiveCell.FormulaR1C1 = "='Sheet名'!R[21]C[-2]"
Range("A7").Select

作る際はマクロの記憶を使ってでた値がが"='Sheet名'!R[21]C[-2]"だったためそれを使っています

Aベストアンサー

相対指定の場所が悪いですね。

たとえば,

Range("B3").Select → Range("E3").Select 

と修正すればこれならXFDにならないでしょう?

R[21]C[-2]は相対指定です。
ここのマクロだとB3から左へ2つ戻って,21下がった場所。つまりAを飛び越して最終のXFDに行っている。

例えばこうすればいいでしょう。

Range("A3").Select
ActiveCell.Formula = "=Sheet2!A24"
Range("A7").Select

ただ,どんな目的のマクロか知りませんので絶対参照がいいのか相対参照がいいのかわかりませんけど。

QExcel VBA(Win2000、Office2000)

現在、VBAでExcelのシートに書き込むフォームを作っており、日付に関することで困っています。
フォーム上には複数のComboBox、TextBoxが並んでおり、OKボタンをクリックすることで、フォーム上に並んだ、ComboBox、TextBoxの値をセルに書き込むようにしています。
問題の日付に関する質問についてですが・・・
ユーザーフォーム上に
年を入力するComboBox1 → 2004
月を入力するComboBox2 → 5
日を入力するComboBox3 → 7
*いづれも、プルダウンから数字を選択して入力するようにしています。

この3つの入力値を合わせて、2004/05/07と認識させて、TextBox1に"金"と表示させたいのですが、どのようにしたら良いでしょうか?
TextBox1表示されるタイミングは、日を入力するComboBox3が入力された時としたいです。

宜しくお願い致します。

Aベストアンサー

以下のようなパターンでどうでしょうか?

まず日付型の関数を宣言しておいて、
その変数にコンボボックスから選択されてた各値を/付きで結合して、格納。
格納された時点で結合されたテキストは日付として変換して認識されます(日付型として宣言しておくところがミソ)

あとは、その変数に格納されている日付データを
WEEKDAY関数を使って曜日を表すシリアル値を計算。
さらに、ワークシート関数のTEXTを使って、曜日の書式に変換してテキストボックスにセット。

サンプルコード
------------------------------------------------------------------
'変数dを日付型で宣言
Dim d As Date

'変数dにコンボボックスで選択されている各値を結合して格納
d = Me.ComboBox1.Value & "/" & Me.ComboBox2.Value & "/" & Me.ComboBox3.Value

'変数dに格納されている日付データから曜日を計算してTextBox1に値セット
Me.TextBox1.Value = Application.Text(Weekday(d), "aaa")

以下のようなパターンでどうでしょうか?

まず日付型の関数を宣言しておいて、
その変数にコンボボックスから選択されてた各値を/付きで結合して、格納。
格納された時点で結合されたテキストは日付として変換して認識されます(日付型として宣言しておくところがミソ)

あとは、その変数に格納されている日付データを
WEEKDAY関数を使って曜日を表すシリアル値を計算。
さらに、ワークシート関数のTEXTを使って、曜日の書式に変換してテキストボックスにセット。

サンプルコード
-----------------...続きを読む

QExcel VBAで年齢を求める(Win2000、Office2000)

現在、VBAでExcelのシートに書き込むフォームを作っており、日付に関することで困っています。
フォーム上には複数のComboBox、TextBoxが並んでおり、OKボタンをクリックすることで、フォーム上に並んだ、ComboBox、TextBoxの値をセルに書き込むようにしています。
ユーザーフォーム上に
年を入力するComboBox1 → 1972
月を入力するComboBox2 → 1
日を入力するComboBox3 → 1
*いづれも、プルダウンから数字を選択して入力するようにしています。
この3つの入力値を合わせて、1972/01/01と認識させて、TextBox1に"32"才と表示させたいのですが・・・現在、3つのComboBoxから日付を変数にセットするところまで出来ています。

Private Sub ComboBox3_Change()
Dim B As Date
B = Me.ComboBox1.Value & "/" & Me.ComboBox2.Value & "/" & Me.ComboBox3.Value

問題は、このあと誕生日を求める方法がわからず困っています。
*TextBox1に表示されるタイミングは、日を入力するComboBox3が入力された時としたいです。

宜しくお願い致します。

現在、VBAでExcelのシートに書き込むフォームを作っており、日付に関することで困っています。
フォーム上には複数のComboBox、TextBoxが並んでおり、OKボタンをクリックすることで、フォーム上に並んだ、ComboBox、TextBoxの値をセルに書き込むようにしています。
ユーザーフォーム上に
年を入力するComboBox1 → 1972
月を入力するComboBox2 → 1
日を入力するComboBox3 → 1
*いづれも、プルダウンから数字を選択して入力するようにしています。
この3つの入力値を合わせて、1972/01/01と認識させて、Text...続きを読む

Aベストアンサー

訂正です。


Dim B As Integer

If Trim(Year(Now)) = Me.ComboBox1.Value Then
'同年の場合、0歳とする
B = 0
Else
'去年末時点の年数を数える
B = Year(Now) - Me.ComboBox1.Value - 1

'今年の誕生日を迎えていたら1年プラスする
If Format(Now, "mm/dd") >= Format(Me.ComboBox2.Value & "/" & Me.ComboBox3.Value, "mm/dd") Then
B = B + 1
End If
End If

Me.TextBox1.Text = B


このカテゴリの人気Q&Aランキング

おすすめ情報