2017-05-17 12 views
0

私は適切な答えを見つけることができなかったというかなり簡単な質問があります。私は、ワークシートにネストされた多くのSQLテーブルがあるExcelシートを持っています。もう1つのテーブルを追加する必要がありますが、この新しいテーブルは30 MB以上になります。現在のファイルに追加すると、ワークブック全体が非常にゆっくりと単純な計算になります。シンプルなExcelのリンク

私の質問は次のとおりです:新しいExcelファイルにこのテーブルを挿入し、元のファイルからリフレッシュするVBAコードを使用してリフレッシュすることはできますか?もしそうなら、新しいファイルの新しいテーブルをリフレッシュするために、VBAコードに何を追加する必要がありますか?のは、新しいテーブルの名前が「NEWTABLE」とファイルパスはCだろうと仮定してみよう。ここではユーザー\ davidmo \デスクトップ\デビッド

\は、私の現在のVBAマクロです:

Sub Button1_Click() 

ThisWorkbook.RefreshAll 
DoEvents 

ActiveSheet.Range("Q45") = Now 

End Sub 

それが助け場合、私は私の元のファイルを開くことができると想像して、すべての私のSQLテーブルをリフレッシュするために使用するVBAマクロボタンをクリックすると、別のファイルのテーブルも更新されます。それから私は元のファイルで私の数式を実行し、ちょうど他のファイルから新しく更新されたテーブルを参照します。

+0

簡単な解決策は、ワークブックを開き、その上で '.RefreshAll'を呼び出して閉じます。あなたはそれを開かずにリフレッシュする方法をお探しですか?私はそれがいかに可能かを見ていない。 –

+0

他のワークブックを開く必要はありません。私が作業しているファイルは作業のためのダッシュボードなので、ダッシュボードをリフレッシュするために必要な作業が少なくて済みます。 あなたの考えによると、ファイルパスC:\\ etcにある "Refresh.NewTable"とは何も言えません。 –

+0

ファイルを開かないと、私は(個人的に)それを行う方法が分かりません。 –

答えて

0

これは、ワークブックを開き、テーブルをリフレッシュして閉じます。ブックがすでに開いている場合は開いたままになります。クローズド・ブックではそれを行う方法はありませんが、ユーザーには見えません。

Sub Button1_Click() 
Dim wbk As Workbook 
Dim FileName As String 
Dim Path As String 
Dim Opened As Boolean 

ThisWorkbook.RefreshAll 

Path = "C:\Users\User\Desktop\Files\1.xlsx" 'Edit Path 
If IsWorkBookOpen(Path) = False Then 
Set wbk = Workbooks.Open(Path) 
Else 
Path = Right(Path, Len(Path) - InStrRev(Path, "\")) 
Set wbk = Workbooks(Path) 
Opened = True 
End If 
wbk.RefreshAll 
If Opened = False Then 
wbk.Close (saveChanges = True) 
End If 

DoEvents 
ActiveSheet.Range("Q45") = Now 

End Sub 

Function IsWorkBookOpen(FileName As String) 
    Dim ff As Long, ErrNo As Long 

    On Error Resume Next 
    ff = FreeFile() 
    Open FileName For Input Lock Read As #ff 
    Close ff 
    ErrNo = Err 
    On Error GoTo 0 

    Select Case ErrNo 
    Case 0: IsWorkBookOpen = False 
    Case 70: IsWorkBookOpen = True 
    Case Else: Error ErrNo 
    End Select 
End Function 
+0

うわー本当にいいね。私はそれを試み、あなたに知らせるでしょう。 –

+0

エラーメッセージ "ファイルが見つかりません"の "Case Else:Error ErrNo"の3行目から最後の行で、このマクロとデバッガのエラーを試しました。 –

+0

ofcの場合、別のテーブルがある場所にファイルをリンクする必要があります。 – UGP

関連する問題