MS Access-VBA acImport Blattnamen mit Leerzeichen und Reichweite

Baue ich ein Formular mit einem button namens "Go", um zu importieren, die einen bestimmten Bereich von einem bestimmten excel-sheet aus einer excel-Datei. Eine weitere sub/Funktion übernimmt Sie die Datei-Namen auf dem Formular im Feld " text_filepathdata.

Habe ich entdeckt, dass Leerzeichen im Blattnamen sind problematisch, aber es kann gelöst werden durch die Verwendung von speziellen Angebot.

Dim sheetname As String
sheetname = "'Commit Volumes!'"
DoCmd.Transferspreadsheet acImport, acSpreadsheetTypeExcel12, _
    "lcl_ImportedFile", text_filepathdata, True, sheetname

Funktioniert, aber ich kann nicht geben Sie einen Bereich zusätzlich zu den Blatt-Namen, weil das spezielle Angebot... (dh. "'Commit Bände!A6:Z5000'" funktioniert nicht, und auch nicht eine Verkettung der beiden Stücke wie "Commit-Volumes'." & "A6:Z5000")

Ich habe versucht, alle Arten von Zitaten und Verkettungen, aber die einzigen Dinge, die funktionieren sind:

sheetname = "'Commit Volumes!'"
sheetname = "'Commit Volumes$'"
sheetname = "CommitVolumes!A6:Z5000"

Excel-Blatt kann nicht geändert werden, denn es kommt aus einem anderen system und die Datei (nach aktualisiert werden) hochgeladen werden müssen, zurück zu diesem system.

Hier ist mein code:

Private Sub button_Go_Click()
On Error GoTo Err_button_Go_Click

Dim sheetname As String
sheetname = "'Commit Volumes!'"

If IsNull(text_filepathdata) Or text_filepathdata = "" Then
    MsgBox "Please browse and select a valid file to import.", _
        vbCritical, "Invalid File"
Else
    DoCmd.OpenForm "f_PleaseWait_Processing", acNormal, , , acFormReadOnly, acWindowNormal
    If ifTableExists("lcl_ImportedFile") = True Then
        DoCmd.DeleteObject acTable, "lcl_ImportedFile"
    End If
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12,_
        "lcl_ImportedFile", text_filepathdata, True, sheetname

'Call module to process the imported data
        Call MainProcess
    End If

Exit_button_Go_Click:
    Exit Sub

Err_button_Go_Click:
    MsgBox Err.Number & " - " & Err.Description
    Resume Exit_button_Go_Click

End Sub

Bekomme ich zwei unterschiedliche Fehlermeldungen, abhängig von der Ausgabe.

Wenn es einen Raum, in dem name bekomme ich: Laufzeitfehler 3129: Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' oder 'UPDATE'.

Wenn es ein problem mit den Namen, sonst bekomme ich: Laufzeitfehler 3011: Das Microsoft Access-Datenbankmodul konnte das Objekt nicht finden "Begehen Bände$A1:Z5000". Stellen Sie sicher, dass das Objekt existiert und dass Sie buchstabieren seinen Namen und den Pfad korrekt. Wenn "Begehen Bände$A1:Z5000" ist nicht ein lokales Objekt, prüfen Sie Ihre Netzwerkverbindung oder Kontaktieren Sie den server-administrator.

Jede Hilfe wäre sehr geschätzt werden!

Bill

Variationen, die ich Ausprobiert habe:

sheetname = "'Commit Volumes'!A6:Z5000"; 
sheetname = "'Commit Volumes!'A6:Z5000" 
sheetname = "'Commit Volumes$'A6:Z5000" 
sheetname = "'Commit Volumes'$A6:Z5000" 
sheetname = "'Commit Volumes'$A$6:$Z$5000" 
sheetname = "'Commit Volumes!'$A$6:$Z$5000" 
sheetname = "'Commit Volumes$'$A$6:$Z$5000"

InformationsquelleAutor Bill Merritt | 2013-04-17

Schreibe einen Kommentar